WebKit:
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 May 2004 23:24:24 +0000 (23:24 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 May 2004 23:24:24 +0000 (23:24 +0000)
Changed imports of all DOM headers.  DOM headers
should be imported using the normal #import <WebCore/foo.h>,
they import is modified when copied to WebKit.

Other approved API changes.  Currently unimplemented.

        Reviewed by Chris.

        * ChangeLog:
        * DOM.subproj/DOM.h:
        * DOM.subproj/DOMCSS.h:
        * DOM.subproj/DOMCore.h:
        * DOM.subproj/DOMEvents.h:
        * DOM.subproj/DOMExtensions.h:
        * DOM.subproj/DOMHTML.h:
        * DOM.subproj/DOMRange.h:
        * DOM.subproj/DOMStylesheets.h:
        * DOM.subproj/DOMTraversal.h:
        * DOM.subproj/DOMViews.h:
        * Plugins.subproj/WebPlugin.h:
        * Plugins.subproj/WebPluginContainer.h:
        * Plugins.subproj/WebPluginPackage.m:
        * Plugins.subproj/WebPluginViewFactory.h:
        * Plugins.subproj/WebScriptObject.h:
        * WebCoreSupport.subproj/WebBridge.m:
        (-[WebBridge syncLoadResourceWithURL:customHeaders:postData:finalURL:responseHeaders:statusCode:]):
        (-[WebBridge pluginViewWithPackage:attributes:baseURL:]):
        * WebKit.exp:
        * WebKit.pbproj/project.pbxproj:
        * WebView.subproj/WebFrameLoadDelegate.h:
        * WebView.subproj/WebView.h:
        * WebView.subproj/WebView.m:
        (-[WebView windowScriptObject]):
        * copy-webcore-files-to-webkit:

WebCore:
Changed imports of all DOM headers.  DOM headers
should be imported using the normal #import <WebCore/foo.h>,
they import is modified when copied to WebKit.

        Reviewed by Chris.

        * ChangeLog:
        * kwq/DOM.h:
        * kwq/DOMCSS.h:
        * kwq/DOMCore.h:
        * kwq/DOMEvents.h:
        * kwq/DOMExtensions.h:
        * kwq/DOMHTML.h:
        * kwq/DOMInternal.h:
        * kwq/DOMRange.h:
        * kwq/DOMStylesheets.h:
        * kwq/DOMTraversal.h:
        * kwq/DOMViews.h:

JavaScriptCore:
Approved API changes.  Currently unimplemented.

        Reviewed by Chris.

        * ChangeLog:
        * JavaScriptCore.pbproj/project.pbxproj:
        * bindings/objc/WebScriptObject.h: Added.
        * bindings/objc/WebScriptObject.mm: Added.
        (+[WebScriptObject throwException:]):
        (-[WebScriptObject callWebScriptMethod:withArguments:]):
        (-[WebScriptObject evaluateWebScript:]):
        (-[WebScriptObject stringRepresentation]):
        (+[WebUndefined undefined]):
        (-[WebUndefined initWithCoder:]):
        (-[WebUndefined encodeWithCoder:]):
        (-[WebUndefined copyWithZone:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6588 268f45cc-cd09-0410-ab3c-d52691b4dbfc

39 files changed:
JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.pbproj/project.pbxproj
JavaScriptCore/bindings/objc/WebScriptObject.h [new file with mode: 0644]
JavaScriptCore/bindings/objc/WebScriptObject.mm [new file with mode: 0644]
WebCore/ChangeLog-2005-08-23
WebCore/kwq/DOM.h
WebCore/kwq/DOMCSS.h
WebCore/kwq/DOMCore.h
WebCore/kwq/DOMEvents.h
WebCore/kwq/DOMExtensions.h
WebCore/kwq/DOMHTML.h
WebCore/kwq/DOMInternal.h
WebCore/kwq/DOMRange.h
WebCore/kwq/DOMStylesheets.h
WebCore/kwq/DOMTraversal.h
WebCore/kwq/DOMViews.h
WebKit/ChangeLog
WebKit/DOM.subproj/DOM.h
WebKit/DOM.subproj/DOMCSS.h
WebKit/DOM.subproj/DOMCore.h
WebKit/DOM.subproj/DOMEvents.h
WebKit/DOM.subproj/DOMExtensions.h
WebKit/DOM.subproj/DOMHTML.h
WebKit/DOM.subproj/DOMRange.h
WebKit/DOM.subproj/DOMStylesheets.h
WebKit/DOM.subproj/DOMTraversal.h
WebKit/DOM.subproj/DOMViews.h
WebKit/Plugins.subproj/WebPlugin.h
WebKit/Plugins.subproj/WebPluginContainer.h
WebKit/Plugins.subproj/WebPluginPackage.m
WebKit/Plugins.subproj/WebPluginViewFactory.h
WebKit/Plugins.subproj/WebScriptObject.h
WebKit/WebCoreSupport.subproj/WebBridge.m
WebKit/WebKit.exp
WebKit/WebKit.pbproj/project.pbxproj
WebKit/WebView.subproj/WebFrameLoadDelegate.h
WebKit/WebView.subproj/WebView.h
WebKit/WebView.subproj/WebView.m
WebKit/copy-webcore-files-to-webkit

index 5217cd3..d27700e 100644 (file)
@@ -1,3 +1,22 @@
+2004-05-13  Richard Williamson   <rjw@apple.com>
+
+       Approved API changes.  Currently unimplemented.
+
+        Reviewed by Chris.
+
+        * ChangeLog:
+        * JavaScriptCore.pbproj/project.pbxproj:
+        * bindings/objc/WebScriptObject.h: Added.
+        * bindings/objc/WebScriptObject.mm: Added.
+        (+[WebScriptObject throwException:]):
+        (-[WebScriptObject callWebScriptMethod:withArguments:]):
+        (-[WebScriptObject evaluateWebScript:]):
+        (-[WebScriptObject stringRepresentation]):
+        (+[WebUndefined undefined]):
+        (-[WebUndefined initWithCoder:]):
+        (-[WebUndefined encodeWithCoder:]):
+        (-[WebUndefined copyWithZone:]):
+
 2004-05-07  Vicki Murley  <vicki@apple.com>
 
         Reviewed by darin.
index 4955ab6..7b261c2 100644 (file)
                                65AB004B06261CBA0076DE63,
                                65C02FBC0637462A003E7EE6,
                                650B68DB0639033F009D42DE,
+                               51863F70065420E800E9E8DD,
                        );
                        isa = PBXHeadersBuildPhase;
                        runOnlyForDeploymentPostprocessing = 0;
                                5199B1BF061B65BC0070C006,
                                65AB004A06261CBA0076DE63,
                                650B68DA0639033F009D42DE,
+                               51863FC506542D3100E9E8DD,
                        );
                        isa = PBXSourcesBuildPhase;
                        runOnlyForDeploymentPostprocessing = 0;
                };
                51856D950562EE9C008B9D83 = {
                        children = (
+                               51863F6F065420E800E9E8DD,
+                               51863FC406542D3100E9E8DD,
                                5199B265061BB1300070C006,
                                5199B1BD061B65BC0070C006,
                                5199B1BE061B65BC0070C006,
                        settings = {
                        };
                };
+               51863F6F065420E800E9E8DD = {
+                       fileEncoding = 30;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       name = WebScriptObject.h;
+                       path = bindings/objc/WebScriptObject.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               51863F70065420E800E9E8DD = {
+                       fileRef = 51863F6F065420E800E9E8DD;
+                       isa = PBXBuildFile;
+                       settings = {
+                               ATTRIBUTES = (
+                                       Private,
+                               );
+                       };
+               };
+               51863FC406542D3100E9E8DD = {
+                       fileEncoding = 30;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.cpp.objcpp;
+                       name = WebScriptObject.mm;
+                       path = bindings/objc/WebScriptObject.mm;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               51863FC506542D3100E9E8DD = {
+                       fileRef = 51863FC406542D3100E9E8DD;
+                       isa = PBXBuildFile;
+                       settings = {
+                       };
+               };
                518CF93605C72271003CF905 = {
                        fileEncoding = 30;
                        isa = PBXFileReference;
diff --git a/JavaScriptCore/bindings/objc/WebScriptObject.h b/JavaScriptCore/bindings/objc/WebScriptObject.h
new file mode 100644 (file)
index 0000000..1a1e61c
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+    Copyright (C) 2004 Apple Computer, Inc. All rights reserved.    
+    
+    Public header file.
+ */
+#ifndef _WEB_SCRIPT_OBJECT_H_
+#define _WEB_SCRIPT_OBJECT_H_
+
+#import <Foundation/Foundation.h>
+
+// NSObject (WebScriptMethods) ----------------------------------------------------- 
+
+/*
+    The methods in WebScriptMethods are optionally implemented by classes whose
+    interfaces are exported (wrapped) to a web scripting environment.  The 
+    scripting environment currently supported by WebKit uses the JavaScript
+    language.
+    
+    Instances automatically reflect their interfaces in the scripting environment.  This
+    automatic reflection can be overriden using the class methods defined in the WebScriptMethods
+    informal protocol.
+    
+       Access to the attributes of an instance is done using KVC. Specifically the following
+    KVC methods:
+       
+       - (void)setValue:(id)value forKey:(NSString *)key
+       - (id)valueForKey:(NSString *)key
+       
+    Instances may also intercept property set/get operations and method invocations that are
+    made by the scripting environment, but not reflected.  This is done using the KVC
+    methods:
+
+       - (void)setValue:(id)value forUndefinedKey:(NSString *)key
+       - (id)valueForUndefinedKey:(NSString *)key
+    
+    If clients need to raise an exception in the script environment
+    they can call [WebScriptObject throwException:].  Note that throwing an
+    exception using this method will only succeed if the method that throws the exception
+    is being called within the scope of a script invocation.
+    
+       By default all attributes, as defined by KVC, will be exposed.  However, a
+    class may further exclude properties that they do not want to expose
+       to web script.
+       
+    Not all methods are exposed.  Only those methods whose parameters and return
+    type meets the export criteria will exposed.  Valid types are ObjectiveC instances
+    and scalars.  Other types are not allowed.  Classes may further exclude method
+    that they do not want to expose.
+    
+    Types will be converted to appropriate types in the scripting environment.
+       After any KVC coercion occurs the ObjectiveC types will converted to a type
+       appropriate for the script environment.  For JavaScript NSNumber will be
+    converted to numbers.  NSString will be converted to strings.  NSArray will
+    be mapped to a special read-only array.  NSNull will be converted to null.  
+       WebUndefined will be converted to undefined.  WebScriptObjects will be unwrapped.
+    Instances of other classes will be wrapped when passed to the script environment
+    and unwrapped when returned to ObjectiveC.  Similar conversion happens in the
+    other direction.
+*/
+@interface NSObject (WebScriptMethods)
+
+/*!
+       @method webScriptNameForSelector:
+       @param aSelector The selector that will be exposed to the script environment.
+    @discussion Use the returned string as the exported name for the selector
+    in the script environment.  It is the responsibility of the class to ensure
+    uniqueness of the returned name.  If nil is returned or this
+    method is not implemented the default name for the selector will
+    be used.  The default name concatenates the components of the
+    ObjectiveC selector name and replaces ':' with '_'.  '_' characters
+    are escaped with an additional '$', i.e. '_' becomes "$_".  '$' are
+    also escaped, i.e.
+        ObjectiveC name         Default script name
+        moveTo::                move__
+        moveTo_                 moveTo$_
+        moveTo$_                moveTo$$$_
+    @result Returns the name to be used to represent the specificed selector in the
+    scripting environment.
+*/
++ (NSString *)webScriptNameForSelector:(SEL)aSelector;
+
+/*!
+    @method isSelectorExcludedFromWebScript:
+    @param aSelect  The selector the will be exposed to the script environment.
+    @discussion        Return YES to prevent the selector appearing in the script
+    environment.  Return NO to expose the selector in the script environment.
+    If this method is not implemented on the class all the selector that match
+    the export criteria will be exposed.
+    @result Returns YES to hide the selector, NO to expose the selector.
+*/
++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector;
+
+/*!
+    @method webScriptNameForKey:
+       @param name The name of the instance variable that will be exposed to the
+    script enviroment.  Only that properties that meet the export criteria will
+    be exposed.
+    @discussion Provide an alternate name for a property.
+    @result Returns the name to be used to represent the specificed property in the
+    scripting environment.
+*/
++ (NSString *)webScriptNameForKey:(const char *)name;
+
+/*!
+    @method isKeyExcludedFromWebScript:
+    @param name The name of the instance variable that will be exposed to the
+    scrip environment.
+    @discussion Return YES to exclude the property from visibility in the script environement.
+    Return NO to expose the instance varible to the script environment.
+    @result Returns YES to hide the property, NO to expose the property.
+*/
++ (BOOL)isKeyExcludedFromWebScript:(const char *)name;
+
+/*!
+    @method invokeUndefinedMethodFromWebScript:withArguments:
+    @param name The name of the method to invoke.
+    @param args The args to pass the method.
+    @discussion If a script attempt to invoke a method that is not an exposed
+    method, scriptInvocation:withArgs: will be called.
+    @result The return value of the invocation.  The value will be converted as appropriate
+    for the script environment.
+*/
+- (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args;
+
+/*!
+    @method finalizeForWebScript
+    @discussion finalizeForScript is called on objects exposed to the script
+    environment just before the script environment is reset.  After calls to
+    finalizeForScript the object will no longer be referenced by the script environment.
+    Further any references to WebScriptObjects made by the exposed object will
+    be invalid and have undefined consequences.
+*/
+- (void)finalizeForWebScript;
+
+@end
+
+
+// WebScriptObject -------------------------------------------------- 
+
+@class WebScriptObjectPrivate;
+
+/*!
+    @class WebScriptObject
+    @discussion WebScriptObjects are used to wrap script objects passed from
+    script environments to ObjectiveC.  WebScriptObjects cannot be created
+    directly.  In normal uses of WebKit, you gain access to the script
+    environment using the "windowScriptObject" method on WebView.
+    
+    The following KVC methods are commonly used to access properties of the
+    WebScriptObject:
+    
+       - (void)setValue:(id)value forKey:(NSString *)key
+       - (id)valueForKey:(NSString *)key
+       
+       As it possible to remove attributes from web script objects the following
+       additional method augments the basic KVC methods:
+       
+       - (void)removeWebScriptKey:(NSString *)name;
+       
+       Also the sparse array access allowed in web script objects doesn't map well to NSArray, so
+       the following methods can be used to access index based properties:
+       
+       - (id)webScriptValueAtIndex:(unsigned int)index;
+       - (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
+*/
+@interface WebScriptObject : NSObject
+{
+    WebScriptObjectPrivate *_private;
+}
+
+/*!
+    @method throwException:
+    @discussion Throws an exception in the current script execution context.
+    @result Either NO if an exception could not be raised, YES otherwise.
+*/
++ (BOOL)throwException:(NSString *)exceptionMessage;
+
+/*!
+    @method callWebScriptMethod:withArguments:
+    @param name The name of the method to call in the script environment.
+    @param args The arguments to pass to the script environment.
+    @discussion Calls the specified method in the script environment using the
+    specified arguments.
+    @result Returns the result of calling the script method.
+*/
+- (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)args;
+
+/*!
+    @method evaluateWebScript:
+    @param script The script to execute in the target script environment.
+    @discussion The script will be executed in the target script environment.  The format
+    of the script is dependent of the target script environment.
+    @result Returns the result of evaluating the script in the script environment.
+*/
+- (id)evaluateWebScript:(NSString *)script;
+
+/*!
+    @method removeWebScriptKey:
+    @param name The name of the property to remove.
+    @discussion Removes the property from the object in the script environment.
+*/
+- (void)removeWebScriptKey:(NSString *)name;
+
+/*!
+    @method toString
+    @discussion Converts the target object to a string representation.  The coercion
+    of non string objects type is dependent on the script environment.
+    @result Returns the string representation of the object.
+*/
+- (NSString *)stringRepresentation;
+
+/*!
+    @method propertyAtIndex:
+    @param index The index of the property to return.  Index based access is dependent 
+    @discussion Gets the value of the property at the specified index.
+    @result The value of the property.
+*/
+- (id)webScriptValueAtIndex:(unsigned int)index;
+
+/*!
+    @method setPropertyAtIndex:value:
+    @param index The index of the property to set.
+    @param value The value of the property to set.
+    @discussion Sets the property value at the specified index.
+*/
+- (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
+
+/*!
+    @method setException:
+    @param description The description of the exception.
+    @discussion Raises an exception in the script environment in the context of the
+    current object.
+*/
+- (void)setException: (NSString *)description;
+
+@end
+
+
+// WebUndefined --------------------------------------------------------------
+
+/*!
+    @class WebUndefined
+*/
+@interface WebUndefined : NSObject <NSCoding, NSCopying>
+{
+}
+
+/*!
+    @method undefined
+    @result The WebUndefined shared instance.
+*/
++ (WebUndefined *)undefined;
+
+@end
+
+#endif
diff --git a/JavaScriptCore/bindings/objc/WebScriptObject.mm b/JavaScriptCore/bindings/objc/WebScriptObject.mm
new file mode 100644 (file)
index 0000000..b3ce9a8
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+#import <JavaScriptCore/WebScriptObject.h>
+
+@implementation WebScriptObject
+
++ (BOOL)throwException:(NSString *)exceptionMessage
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return NO;
+}
+
+- (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)args
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+- (id)evaluateWebScript:(NSString *)script
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+- (void)removeWebScriptKey:(NSString *)name;
+{
+    NSLog (@"%s:%d  not yet implemented");
+}
+
+- (NSString *)stringRepresentation
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+- (id)webScriptValueAtIndex:(unsigned int)index;
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+- (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
+{
+    NSLog (@"%s:%d  not yet implemented");
+}
+
+- (void)setException: (NSString *)description;
+{
+    NSLog (@"%s:%d  not yet implemented");
+}
+
+@end
+
+
+
+@interface WebScriptObjectPrivate : NSObject
+{
+}
+@end
+
+@implementation WebScriptObjectPrivate
+@end
+
+
+
+@implementation WebUndefined
++ (WebUndefined *)undefined
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+- (id)initWithCoder:(NSCoder *)coder
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+- (void)encodeWithCoder:(NSCoder *)encoder
+{
+    NSLog (@"%s:%d  not yet implemented");
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    NSLog (@"%s:%d  not yet implemented");
+    return nil;
+}
+
+@end
index 3e6833f..0d027b5 100644 (file)
@@ -1,3 +1,24 @@
+2004-05-13  Richard Williamson   <rjw@apple.com>
+
+       Changed imports of all DOM headers.  DOM headers
+       should be imported using the normal #import <WebCore/foo.h>,
+       they import is modified when copied to WebKit.
+
+        Reviewed by Chris.
+
+        * ChangeLog:
+        * kwq/DOM.h:
+        * kwq/DOMCSS.h:
+        * kwq/DOMCore.h:
+        * kwq/DOMEvents.h:
+        * kwq/DOMExtensions.h:
+        * kwq/DOMHTML.h:
+        * kwq/DOMInternal.h:
+        * kwq/DOMRange.h:
+        * kwq/DOMStylesheets.h:
+        * kwq/DOMTraversal.h:
+        * kwq/DOMViews.h:
+
 2004-05-13  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by me
index 0f4c44a..851e548 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
-#import "DOMViews.h"
-#import "DOMEvents.h"
-#import "DOMStylesheets.h"
-#import "DOMCSS.h"
-#import "DOMTraversal.h"
-#import "DOMRange.h"
-#import "DOMHTML.h"
+#import <WebCore/DOMCore.h>
+#import <WebCore/DOMViews.h>
+#import <WebCore/DOMEvents.h>
+#import <WebCore/DOMStylesheets.h>
+#import <WebCore/DOMCSS.h>
+#import <WebCore/DOMTraversal.h>
+#import <WebCore/DOMRange.h>
+#import <WebCore/DOMHTML.h>
index 46314ed..efafb13 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMStylesheets.h"
-#import "DOMViews.h"
+#import <WebCore/DOMStylesheets.h>
+#import <WebCore/DOMViews.h>
 
 @class DOMCounter;
 @class DOMCSSRule;
index c86c0d0..90f354d 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
 #import <Foundation/Foundation.h>
 
-@class DOMDocument;
+#import <JavaScriptCore/WebScriptObject.h>
+
+@class DOMDocument; 
 @class DOMDocumentType;
 @class DOMElement;
 @class DOMNamedNodeMap;
@@ -46,7 +35,7 @@
 
 typedef struct DOMObjectInternal DOMObjectInternal;
 
-@interface DOMObject : NSObject <NSCopying>
+@interface DOMObject : WebScriptObject <NSCopying>
 {
     DOMObjectInternal *_internal;
 }
index 22f9f7d..b6afbae 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMViews.h"
+#import <WebCore/DOMViews.h>
 
 @class DOMEvent;
 @class DOMEventListener;
index aa985ab..5825f96 100644 (file)
@@ -23,8 +23,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#import "DOMCSS.h"
-#import "DOMHTML.h"
+#import <WebCore/DOMCSS.h>
+#import <WebCore/DOMHTML.h>
 
 @class DOMCSSStyleDeclaration;
 
index b26ff0b..319ef46 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebCore/DOMCore.h>
 
 @class DOMHTMLElement;
 @class DOMHTMLFormElement;
index bf43412..81f1a70 100644 (file)
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#import "DOM.h"
+#import <WebCore/DOM.h>
 
 namespace DOM {
     class CSSStyleDeclarationImpl;
index 1d7668a..b95472a 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebCore/DOMCore.h>
 
 extern NSString * const DOMRangeException;
 
index 9e3f604..58683b5 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebCore/DOMCore.h>
 
 @class DOMMediaList;
 @class DOMStyleSheet;
index 61922fd..0e4a1b1 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebCore/DOMCore.h>
 
 @class DOMNodeFilter;
 
index bcc7107..b7777a7 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebCore/DOMCore.h>
 
 @class DOMDocumentView;
 
index 76c4759..a947d8a 100644 (file)
@@ -1,3 +1,40 @@
+2004-05-13  Richard Williamson   <rjw@apple.com>
+
+       Changed imports of all DOM headers.  DOM headers
+       should be imported using the normal #import <WebCore/foo.h>,
+       they import is modified when copied to WebKit.
+
+       Other approved API changes.  Currently unimplemented.
+
+        Reviewed by Chris.
+
+        * ChangeLog:
+        * DOM.subproj/DOM.h:
+        * DOM.subproj/DOMCSS.h:
+        * DOM.subproj/DOMCore.h:
+        * DOM.subproj/DOMEvents.h:
+        * DOM.subproj/DOMExtensions.h:
+        * DOM.subproj/DOMHTML.h:
+        * DOM.subproj/DOMRange.h:
+        * DOM.subproj/DOMStylesheets.h:
+        * DOM.subproj/DOMTraversal.h:
+        * DOM.subproj/DOMViews.h:
+        * Plugins.subproj/WebPlugin.h:
+        * Plugins.subproj/WebPluginContainer.h:
+        * Plugins.subproj/WebPluginPackage.m:
+        * Plugins.subproj/WebPluginViewFactory.h:
+        * Plugins.subproj/WebScriptObject.h:
+        * WebCoreSupport.subproj/WebBridge.m:
+        (-[WebBridge syncLoadResourceWithURL:customHeaders:postData:finalURL:responseHeaders:statusCode:]):
+        (-[WebBridge pluginViewWithPackage:attributes:baseURL:]):
+        * WebKit.exp:
+        * WebKit.pbproj/project.pbxproj:
+        * WebView.subproj/WebFrameLoadDelegate.h:
+        * WebView.subproj/WebView.h:
+        * WebView.subproj/WebView.m:
+        (-[WebView windowScriptObject]):
+        * copy-webcore-files-to-webkit:
+
 2004-05-13  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Kevin
index 0f4c44a..9f71fdf 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
-#import "DOMViews.h"
-#import "DOMEvents.h"
-#import "DOMStylesheets.h"
-#import "DOMCSS.h"
-#import "DOMTraversal.h"
-#import "DOMRange.h"
-#import "DOMHTML.h"
+#import <WebKit/DOMCore.h>
+#import <WebKit/DOMViews.h>
+#import <WebKit/DOMEvents.h>
+#import <WebKit/DOMStylesheets.h>
+#import <WebKit/DOMCSS.h>
+#import <WebKit/DOMTraversal.h>
+#import <WebKit/DOMRange.h>
+#import <WebKit/DOMHTML.h>
index 46314ed..f5a95a2 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMStylesheets.h"
-#import "DOMViews.h"
+#import <WebKit/DOMStylesheets.h>
+#import <WebKit/DOMViews.h>
 
 @class DOMCounter;
 @class DOMCSSRule;
index c86c0d0..9779a05 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
 #import <Foundation/Foundation.h>
 
-@class DOMDocument;
+#import <WebKit/WebScriptObject.h>
+
+@class DOMDocument; 
 @class DOMDocumentType;
 @class DOMElement;
 @class DOMNamedNodeMap;
@@ -46,7 +35,7 @@
 
 typedef struct DOMObjectInternal DOMObjectInternal;
 
-@interface DOMObject : NSObject <NSCopying>
+@interface DOMObject : WebScriptObject <NSCopying>
 {
     DOMObjectInternal *_internal;
 }
@@ -58,7 +47,7 @@ extern NSString * const DOMException;
 
 enum {
     //
-    // DOM exception codes
+    // DOM exception codesxx
     //
     DOM_INDEX_SIZE_ERR                = 1,
     DOM_DOMSTRING_SIZE_ERR            = 2,
index 22f9f7d..2a8ae9a 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMViews.h"
+#import <WebKit/DOMViews.h>
 
 @class DOMEvent;
 @class DOMEventListener;
index aa985ab..ca46a52 100644 (file)
@@ -23,8 +23,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#import "DOMCSS.h"
-#import "DOMHTML.h"
+#import <WebKit/DOMCSS.h>
+#import <WebKit/DOMHTML.h>
 
 @class DOMCSSStyleDeclaration;
 
index b26ff0b..4ca9124 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebKit/DOMCore.h>
 
 @class DOMHTMLElement;
 @class DOMHTMLFormElement;
index 1d7668a..5f126c2 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebKit/DOMCore.h>
 
 extern NSString * const DOMRangeException;
 
index 9e3f604..e31153b 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebKit/DOMCore.h>
 
 @class DOMMediaList;
 @class DOMStyleSheet;
index 61922fd..ae270f9 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebKit/DOMCore.h>
 
 @class DOMNodeFilter;
 
index bcc7107..8d581fc 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-// Important Note:
-// Though this file appears as an exported header from WebKit, the
-// version you should edit is in WebCore. The WebKit version is copied
-// to WebKit during the build process.
-
-//=========================================================================
-//=========================================================================
-//=========================================================================
-
-#import "DOMCore.h"
+#import <WebKit/DOMCore.h>
 
 @class DOMDocumentView;
 
index 6a0cd55..8f360d8 100644 (file)
@@ -1,6 +1,6 @@
 /*
-        WebPlugin.h
-        Copyright 2002, Apple, Inc. All rights reserved. 
+    WebPlugin.h
+    Copyright 2004, Apple, Inc. All rights reserved. 
 */
 
 #import <Cocoa/Cocoa.h>
 - (BOOL)isSelected;
 
 @end
+
+/*!
+    WebPlugIn is an informal protocol that enables interaction between an application
+    and web related plug-ins it may contain.
+*/
+
+@interface NSObject (WebPlugIn)
+
+/*!
+    @method webPlugInInitialize
+    @abstract Tell the plug-in to perform one-time initialization.
+    @discussion This method must be only called once per instance of the plug-in
+    object and must be called before any other methods in this protocol.
+*/
+- (void)webPlugInInitialize;
+
+/*!
+    @method webPlugInStart
+    @abstract Tell the plug-in to start normal operation.
+    @discussion The plug-in usually begins drawing, playing sounds and/or
+    animation in this method.  This method must be called before calling webPlugInStop.
+    This method may called more than once, provided that the application has
+    already called webPlugInInitialize and that each call to webPlugInStart is followed
+    by a call to webPlugInStop.
+*/
+- (void)webPlugInStart;
+
+/*!
+    @method webPlugInStop
+    @abstract Tell the plug-in to stop normal operation.
+    @discussion webPlugInStop must be called before this method.  This method may be
+    called more than once, provided that the application has already called
+    webPlugInInitialize and that each call to webPlugInStop is preceded by a call to
+    webPlugInStart.
+*/
+- (void)webPlugInStop;
+
+/*!
+    @method webPlugInDestroy
+    @abstract Tell the plug-in perform cleanup and prepare to be deallocated.
+    @discussion The plug-in typically releases memory and other resources in this
+    method.  If the plug-in has retained the WebPlugInContainer, it must release
+    it in this mehthod.  This method must be only called once per instance of the
+    plug-in object.  No other methods in this interface may be called after the
+    application has called webPlugInDestroy.
+*/
+- (void)webPlugInDestroy;
+
+/*!
+       @method webPlugInSetIsSelected:
+       @discusssion Informs the plug-in whether or not it is selected.  This is typically
+       used to allow the plug-in to alter it's appearance when selected.
+*/
+- (void)webPlugInSetIsSelected:(BOOL)isSelected;
+
+/*!
+    @method objectForWebScript
+    @discussion objectForWebScript is used to expose a plug-in's scripting interface.  The 
+    methods of the object are exposed to the script environment.  See the WebScriptMethods
+    informal protocol for more details.
+    @result Returns the object that exposes the plug-in's interface.  The class of this
+    object can implement methods from the WebScriptMethods informal protocol.
+*/
+- (id)objectForWebScript;
+
+@end
+
index 4fab383..777e1e0 100644 (file)
@@ -1,6 +1,8 @@
 /*
-        WebPluginContainer.h
-        Copyright 2002, Apple, Inc. All rights reserved.
+    WebPluginContainer.h
+    Copyright 2004, Apple, Inc. All rights reserved.
+    
+    Public header file.
 */
 
 #import <Cocoa/Cocoa.h>
         
 - (NSColor *)selectionColor;
 
-@end
\ No newline at end of file
+@end
+
+
+/*!
+    This informal protocol enables a plug-in to request that its containing application
+    perform certain operations.
+*/
+
+@interface NSObject (WebPlugInContainer)
+
+/*!
+    @method webPlugInContainerLoadRequest:inFrame:
+    @abstract Tell the application to show a URL in a target frame
+    @param request The request to be loaded.
+    @param target The target frame. If the frame with the specified target is not
+    found, a new window is opened and the main frame of the new window is named
+    with the specified target.  If nil is specified, the frame that contains
+    the applet is targeted.
+*/
+- (void)webPlugInContainerLoadRequest:(NSURLRequest *)request inFrame:(NSString *)target;
+
+/*!
+    @method webPlugInContainerShowStatus:
+    @abstract Tell the application to show the specified status message.
+    @param message The string to be shown.
+*/
+- (void)webPlugInContainerShowStatus:(NSString *)message;
+
+/*!
+       @method webPlugInContainerSelectionColor
+       @result Returns the color that should be used for any special drawing when
+       plug-in is selected.
+*/
+- (NSColor *)webPlugInContainerSelectionColor;
+
+/*!
+    @method webFrame
+    @discussion The webFrame method allows the plug-in to access the WebFrame that
+    contains the plug-in.  This method will not be implemented by containers that 
+    are not WebKit based.
+    @result Return the WebFrame that contains the plug-in.
+*/
+- (WebFrame *)webFrame;
+
+@end
index 855ae45..76c46c5 100644 (file)
 
 #import <Foundation/NSPrivateDecls.h>
 
+NSString *WebPlugInBaseURLKey = @"WebPlugInBaseURLKey";
+NSString *WebPlugInAttributesKey = @"WebPlugInAttributesKey";
+NSString *WebPlugInContainerKey = @"WebPlugInContainerKey";
+
+/*!
+       @constant WebPlugInContainingElementKey The DOMElement that was used to specify
+       the plug-in.  May be nil.
+*/
+extern NSString *WebPlugInContainingElementKey;
+
 @implementation WebPluginPackage
 
 - initWithPath:(NSString *)pluginPath
index 74d58a6..26018d0 100644 (file)
@@ -1,63 +1,56 @@
 /*
-        WebPluginViewFactory.h
-        Copyright 2002, Apple, Inc. All rights reserved.
+    WebPluginViewFactory.h
+    Copyright 2004, Apple, Inc. All rights reserved.
+    
+    Public header file.
 */
 
 #import <Cocoa/Cocoa.h>
 
-@protocol WebPlugin;
-
-
 /*!
-    @constant WebPluginBaseURLKey REQUIRED. The base URL of the document containing
-    the plugin's view.
+    @constant WebPlugInBaseURLKey REQUIRED. The base URL of the document containing
+    the plug-in's view.
 */
-#define WebPluginBaseURLKey @"WebPluginBaseURL"
+extern NSString *WebPlugInBaseURLKey;
 
 /*!
-    @constant WebPluginAttributesKey REQUIRED. The dictionary containing the names
-    and values of all attributes of the HTML element associated with the plugin AND
-    the names and values of all parameters to be passed to the plugin (e.g. PARAM
+    @constant WebPlugInAttributesKey REQUIRED. The dictionary containing the names
+    and values of all attributes of the HTML element associated with the plug-in AND
+    the names and values of all parameters to be passed to the plug-in (e.g. PARAM
     elements within an APPLET element). In the case of a conflict between names,
     the attributes of an element take precedence over any PARAMs.  All of the keys
     and values in this NSDictionary must be NSStrings.
 */
-#define WebPluginAttributesKey @"WebPluginAttributes"
+extern NSString *WebPlugInAttributesKey;
 
 /*!
-    @constant WebPluginContainer OPTIONAL. An object that conforms to the
-    WebPluginContainer protocol (id<WebPluginContainer> *). This object is used for
-    callbacks from the plugin to the app. if this argument is nil, no callbacks will
+    @constant WebPlugInContainer OPTIONAL. An object that conforms to the
+    WebPlugInContainer informal protocol. This object is used for
+    callbacks from the plug-in to the app. if this argument is nil, no callbacks will
     occur.
 */
-#define WebPluginContainerKey @"WebPluginContainer"
+extern NSString *WebPlugInContainerKey;
 
 /*!
-    @constant WebPluginDefaultView OPTIONAL. An NSView object that will be used as a
-    visual placeholder until the plugin begins drawing.  The view will be removed by
-    the plugin immediately before the plugin begins drawing into the view.
-    If this argument is nil, the plugin's default view will be used.
+       @constant WebPlugInContainingElementKey The DOMElement that was used to specify
+       the plug-in.  May be nil.
 */
-#define WebPluginDefaultViewKey @"WebPluginDefaultView"
+extern NSString *WebPlugInContainingElementKey;
 
 /*!
-    @protocol WebPluginViewFactory
-    @discussion Protocol is used to create a Cocoa view that is used as a canvas
-    by a web plugin, to display a Java Applet or QuickTime movie, for example.
-    The view returned will be a descendant of NSView which conforms to the WebPlugin
-    protocol.  Because it is a descendant of NSView, a WebPluginView can be placed
-    inside other Cocoa views or windows easily.  The application can control the web
-    plugin via the WebPlugin protocol.
+    @protocol WebPlugInViewFactory
+    @discussion WebPlugInViewFactory are used to create the NSView for a plug-in.
+       The principal class of the plug-in bundle must implement this protocol.
 */
 
-@protocol WebPluginViewFactory <NSObject>
+@protocol WebPlugInViewFactory <NSObject>
 
 /*!
-    @method pluginViewWithArguments: 
-    @abstract Returns an NSView object that conforms to the WebPlugin protocol.
+    @method plugInViewWithArguments: 
     @param arguments The arguments dictionary with the mentioned keys and objects.
+    @result Returns an NSView object that conforms to the WebPlugIn informal protocol.
 */
-+ (NSView<WebPlugin> *)pluginViewWithArguments:(NSDictionary *)arguments;
++ (NSView *)plugInViewWithArguments:(NSDictionary *)arguments;
 
 @end
 
index 75fa392..1a1e61c 100644 (file)
@@ -6,40 +6,61 @@
 #ifndef _WEB_SCRIPT_OBJECT_H_
 #define _WEB_SCRIPT_OBJECT_H_
 
+#import <Foundation/Foundation.h>
 
 // NSObject (WebScriptMethods) ----------------------------------------------------- 
 
 /*
     The methods in WebScriptMethods are optionally implemented by classes whose
-    interfaces are exported (wrapped) to a scripting environment in the context of WebKit.
-    The scripting environment currently supported by WebKit uses the JavaScript
+    interfaces are exported (wrapped) to a web scripting environment.  The 
+    scripting environment currently supported by WebKit uses the JavaScript
     language.
     
     Instances automatically reflect their interfaces in the scripting environment.  This
     automatic reflection can be overriden using the class methods defined in the WebScriptMethods
     informal protocol.
     
+       Access to the attributes of an instance is done using KVC. Specifically the following
+    KVC methods:
+       
+       - (void)setValue:(id)value forKey:(NSString *)key
+       - (id)valueForKey:(NSString *)key
+       
     Instances may also intercept property set/get operations and method invocations that are
-    made by the scripting environment, but not reflected.
+    made by the scripting environment, but not reflected.  This is done using the KVC
+    methods:
+
+       - (void)setValue:(id)value forUndefinedKey:(NSString *)key
+       - (id)valueForUndefinedKey:(NSString *)key
+    
+    If clients need to raise an exception in the script environment
+    they can call [WebScriptObject throwException:].  Note that throwing an
+    exception using this method will only succeed if the method that throws the exception
+    is being called within the scope of a script invocation.
     
+       By default all attributes, as defined by KVC, will be exposed.  However, a
+    class may further exclude properties that they do not want to expose
+       to web script.
+       
     Not all methods are exposed.  Only those methods whose parameters and return
     type meets the export criteria will exposed.  Valid types are ObjectiveC instances
-    and scalars.  Other types are not allowed.
+    and scalars.  Other types are not allowed.  Classes may further exclude method
+    that they do not want to expose.
     
     Types will be converted to appropriate types in the scripting environment.
-    Scalars and NSNumber will be converted to numbers.  NSString will be converted
-    to strings.  NSNull will be converted to null.  WebUndefined will be converted
-    to undefined.  WebScriptObjects will be unwrapped.  Instances of other classes
-    will be wrapped when passed to the script environment and unwrapped when
-    returned to ObjectiveC.  Similar conversion happens in the other direction.
-    
-    If an instance variable of an object is set directly from a script, and it is
-    an object, the previous value will be released and the new value will be retained.
+       After any KVC coercion occurs the ObjectiveC types will converted to a type
+       appropriate for the script environment.  For JavaScript NSNumber will be
+    converted to numbers.  NSString will be converted to strings.  NSArray will
+    be mapped to a special read-only array.  NSNull will be converted to null.  
+       WebUndefined will be converted to undefined.  WebScriptObjects will be unwrapped.
+    Instances of other classes will be wrapped when passed to the script environment
+    and unwrapped when returned to ObjectiveC.  Similar conversion happens in the
+    other direction.
 */
 @interface NSObject (WebScriptMethods)
 
 /*!
-       @method scriptNameForSelector:
+       @method webScriptNameForSelector:
        @param aSelector The selector that will be exposed to the script environment.
     @discussion Use the returned string as the exported name for the selector
     in the script environment.  It is the responsibility of the class to ensure
     @result Returns the name to be used to represent the specificed selector in the
     scripting environment.
 */
-+ (NSString *)scriptNameForSelector:(SEL)aSelector;
++ (NSString *)webScriptNameForSelector:(SEL)aSelector;
 
 /*!
-    @method isSelectorExcludedFromScript:
+    @method isSelectorExcludedFromWebScript:
     @param aSelect  The selector the will be exposed to the script environment.
-    @discussion        Return NO to prevent the selector appearing in the script
-    environment.  Return YES to expose the selector in the script environment.
+    @discussion        Return YES to prevent the selector appearing in the script
+    environment.  Return NO to expose the selector in the script environment.
     If this method is not implemented on the class all the selector that match
     the export criteria will be exposed.
-    @result Returns NO to hide the selector, YES to expose the selector.
+    @result Returns YES to hide the selector, NO to expose the selector.
 */
-+ (BOOL)isSelectorExcludedFromScript:(SEL)aSelector;
++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector;
 
 /*!
-    @method scriptNameForProperty:
+    @method webScriptNameForKey:
        @param name The name of the instance variable that will be exposed to the
     script enviroment.  Only that properties that meet the export criteria will
     be exposed.
     @result Returns the name to be used to represent the specificed property in the
     scripting environment.
 */
-+ (NSString *)scriptNameForProperty:(const char *)name;
++ (NSString *)webScriptNameForKey:(const char *)name;
 
 /*!
-    @method isPropertyExcludedFromScript:
+    @method isKeyExcludedFromWebScript:
     @param name The name of the instance variable that will be exposed to the
     scrip environment.
-    @discussion Return NO to exclude the property from visibility in the script environement.
-    Return YES to expose the instance varible to the script environment.
-    @result Returns NO to hide the property, YES to expose the property.
-*/
-+ (BOOL)isPropertyExcludedFromScript:(const char *)name;
-
-/*!
-    @method setObject:forScriptProperty:exceptionMessage:
-    @param value The vale to be set for the property name.
-    @param name The name of the property being set.
-    @param exceptionMessage Set to the a message that will be used to contruct a script exception.
-    @discussion If a script attempts to set a property that is not an exposed
-    instance variable, setObject:forScriptProperty: will be called.  Setting the
-    *exceptionMessage to a non-nil value will cause an exception to be raised in the script
-    environment.  
+    @discussion Return YES to exclude the property from visibility in the script environement.
+    Return NO to expose the instance varible to the script environment.
+    @result Returns YES to hide the property, NO to expose the property.
 */
-- (void)setObject:(id)value forScriptProperty:(NSString *)name exceptionMessage:(NSString **)exceptionMessage;
++ (BOOL)isKeyExcludedFromWebScript:(const char *)name;
 
 /*!
-    @method objectForScriptProperty:exceptionMessage:
-    @param name
-    @param exceptionMessage Set to the a message that will be used to contruct a script exception.
-    @discussion If a script attempts to get a property that is not an exposed
-    instance variable, objectForScriptProperty: will be be called.
-    @result The value of the property.  Setting the *exceptionMessage to a non-nil value will
-    cause an exception to be raised in the script environment.  The return value will be
-    ignored if an exception message is set.
-*/
-- (id)objectForScriptProperty:(NSString *)name exceptionMessage:(NSString **)exceptionMessage;
-
-/*!
-    @method scriptInvocation:withArgs:exceptionMessage:
+    @method invokeUndefinedMethodFromWebScript:withArguments:
     @param name The name of the method to invoke.
     @param args The args to pass the method.
-    @param exceptionMessage Set to the a message that will be used to contruct a script exception.
     @discussion If a script attempt to invoke a method that is not an exposed
     method, scriptInvocation:withArgs: will be called.
     @result The return value of the invocation.  The value will be converted as appropriate
-    for the script environment.  Setting the *exceptionMessage to a non-nil value will
-    cause an exception to be raised in the script environment.  The return value will be
-    ignored if an exception message is set.
+    for the script environment.
 */
-- (id)scriptInvocation:(NSString *)name withArgs:(NSArray *)args exceptionMessage:(NSString **)exceptionMessage;
+- (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args;
 
 /*!
-    @method finalizeForScript
+    @method finalizeForWebScript
     @discussion finalizeForScript is called on objects exposed to the script
     environment just before the script environment is reset.  After calls to
     finalizeForScript the object will no longer be referenced by the script environment.
     Further any references to WebScriptObjects made by the exposed object will
     be invalid and have undefined consequences.
 */
-- (void)finalizeForScript;
-
-@end
-
-
-
-// WebView (WebScriptMethods) --------------------------------------- 
-
-@interface WebView (WebScriptMethods)
+- (void)finalizeForWebScript;
 
-/*!
-    @method windowScriptObject
-    @discussion windowScriptObject return a WebScriptObject that represents the
-    window object from the script environment.
-    @result Returns the window object from the script environment.
-*/
-- (WebScriptObject *)windowScriptObject;
 @end
 
 
-
 // WebScriptObject -------------------------------------------------- 
 
 @class WebScriptObjectPrivate;
     script environments to ObjectiveC.  WebScriptObjects cannot be created
     directly.  In normal uses of WebKit, you gain access to the script
     environment using the "windowScriptObject" method on WebView.
+    
+    The following KVC methods are commonly used to access properties of the
+    WebScriptObject:
+    
+       - (void)setValue:(id)value forKey:(NSString *)key
+       - (id)valueForKey:(NSString *)key
+       
+       As it possible to remove attributes from web script objects the following
+       additional method augments the basic KVC methods:
+       
+       - (void)removeWebScriptKey:(NSString *)name;
+       
+       Also the sparse array access allowed in web script objects doesn't map well to NSArray, so
+       the following methods can be used to access index based properties:
+       
+       - (id)webScriptValueAtIndex:(unsigned int)index;
+       - (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
 */
 @interface WebScriptObject : NSObject
 {
 }
 
 /*!
-    @method callScriptMethod:withArguments:
+    @method throwException:
+    @discussion Throws an exception in the current script execution context.
+    @result Either NO if an exception could not be raised, YES otherwise.
+*/
++ (BOOL)throwException:(NSString *)exceptionMessage;
+
+/*!
+    @method callWebScriptMethod:withArguments:
     @param name The name of the method to call in the script environment.
     @param args The arguments to pass to the script environment.
     @discussion Calls the specified method in the script environment using the
     specified arguments.
     @result Returns the result of calling the script method.
 */
-- (id)callScriptMethod:(NSString *)name withArguments:(NSArray *)args;
+- (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)args;
 
 /*!
-    @method evaluateScript:
+    @method evaluateWebScript:
     @param script The script to execute in the target script environment.
     @discussion The script will be executed in the target script environment.  The format
     of the script is dependent of the target script environment.
     @result Returns the result of evaluating the script in the script environment.
 */
-- (id)evaluateScript:(NSString *)script;
+- (id)evaluateWebScript:(NSString *)script;
 
 /*!
-    @method objectForScriptProperty:
-    @param name The name of the property to return.
-    @discussion Returns the property of the object from the script environment.
-    @result Returns the property of the object from the script environment.
-*/
-- (id)objectForScriptProperty:(NSString *)name;
-
-/*!
-    @method setObject:forScriptProperty:
-    @param name The name of the property to set.
-    @param value The value of the property.
-    @discussion Set the property of the object in the script environment.
-*/
-- (void)setObject:(id)value forScriptProperty:(NSString *)name;
-
-/*!
-    @method removeScriptProperty:
+    @method removeWebScriptKey:
     @param name The name of the property to remove.
     @discussion Removes the property from the object in the script environment.
 */
-- (void)removeScriptProperty:(NSString *)name;
+- (void)removeWebScriptKey:(NSString *)name;
 
 /*!
     @method toString
     of non string objects type is dependent on the script environment.
     @result Returns the string representation of the object.
 */
-- (NSString *)toString;
+- (NSString *)stringRepresentation;
 
 /*!
     @method propertyAtIndex:
     @discussion Gets the value of the property at the specified index.
     @result The value of the property.
 */
-- (id)scriptPropertyAtIndex:(unsigned int)index;
+- (id)webScriptValueAtIndex:(unsigned int)index;
 
 /*!
     @method setPropertyAtIndex:value:
     @param value The value of the property to set.
     @discussion Sets the property value at the specified index.
 */
-- (void)setScriptPropertyAtIndex:(unsigned int)index value:(id)value;
+- (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
 
 /*!
     @method setException:
     @param description The description of the exception.
-    @discussion Raises an exception in the script environment.
+    @discussion Raises an exception in the script environment in the context of the
+    current object.
 */
 - (void)setException: (NSString *)description;
 
 @end
 
 
-
 // WebUndefined --------------------------------------------------------------
 
 /*!
     @class WebUndefined
 */
 @interface WebUndefined : NSObject <NSCoding, NSCopying>
+{
+}
 
 /*!
     @method undefined
 
 @end
 
-
-@interface NSObject (WebFrameLoadDelegate) ...
-/*!
-    @method webView:windowScriptObjectAvailable:
-    @abstract Notifies the delegate that the scripting object for a page is available.  This is called
-    before the page is loaded.  It may be useful to allow delegates to bind native objects to the window.
-    @param webView The webView sending the message.
-    @param windowScriptObject The WebScriptObject for the window in the scripting environment.
-*/
-- (void)webView:(WebView *)webView windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject;
-@end
-
-
-// NSObject (WebScriptablePlugin) -------------------------------------------- 
-
-@interface NSObject (WebPlugin) ...
-/*!
-    @method objectForScript
-    @discussion objectForScript is used to expose a plugin's API.  The methods of the
-    object are exposed to the script environment.  See the WebScriptMethod informal
-    protocol for more details.
-    @result Returns the object that exposes the plugin's interface.  The class of this
-    object can implement methods from the WebScriptMethods informal protocol.
-*/
-- (id)objectForScript;
-@end
-
-
-
-// NSObject (WebPluginContainer) --------------------------------------------- 
-
-@interface NSObject (WebPluginContainer) ...
-/*!
-    @method webFrame
-    @discussion The webFrame method allows the plugin to access the WebFrame that
-    contains the plugin.  This method is optionally implemented on classes
-    that implement the WebPluginContainer protocol.
-    @result Return the WebFrame that contains the plugin.
-*/
-- (WebFrame *)webFrame;
-@end
-
-
-
-// DOMObject ------------------------------------------------------------------
-// All DOM objects may be manipulated using the formal DOM API, or indirectly via
-// their scripting interface.  This requires a change in DOMObject's inheritance.
-
-/*!
-       @class DOMObject
-       @discussion     All DOM objects may be manipulated using the formal DOM API, or indirectly via
-       their scripting interface.  This requires a change in DOMObject's inheritance.
-       ...
-*/
-@interface DOMObject : WebScriptObject <NSCopying>
-{
-    DOMObjectInternal *_internal;
-}
-...
-@end
-
+#endif
index 988f651..b41eba7 100644 (file)
     NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:URL];
 
     if (postData) {
-       [newRequest setHTTPMethod:@"POST"];
-       [newRequest setHTTPBody:postData];
+        [newRequest setHTTPMethod:@"POST"];
+        [newRequest setHTTPBody:postData];
     }
 
     NSEnumerator *e = [requestHeaders keyEnumerator];
     NSString *key;
     while ((key = (NSString *)[e nextObject]) != nil) {
-       [newRequest addValue:[requestHeaders objectForKey:key] forHTTPHeaderField:key];
+        [newRequest addValue:[requestHeaders objectForKey:key] forHTTPHeaderField:key];
     }
-
-    [newRequest setCachePolicy:[[[self dataSource] request] cachePolicy]];
+    
+    // Never use cached data for these requests (xmlhttprequests).
+    [newRequest setCachePolicy:NSURLRequestReloadIgnoringCacheData];
     [newRequest setHTTPReferrer:[self referrer]];
     
     WebView *webView = [_frame webView];
     NSData *result = [NSURLConnection sendSynchronousRequest:newRequest returningResponse:&response error:&error];
 
     if (error == nil) {
-       *finalURL = [response URL];
-       if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
-           NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 
-           *responseHeaderDict = [httpResponse allHeaderFields];
-           *statusCode = [httpResponse statusCode];
-       } else {
-           *responseHeaderDict = [NSDictionary dictionary];
-           *statusCode = 200;
-       }
+        *finalURL = [response URL];
+        if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
+                NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 
+                *responseHeaderDict = [httpResponse allHeaderFields];
+                *statusCode = [httpResponse statusCode];
+        } else {
+            *responseHeaderDict = [NSDictionary dictionary];
+            *statusCode = 200;
+        }
     } else {
-       *finalURL = URL;
-       *responseHeaderDict = [NSDictionary dictionary];
-       *statusCode = 404;
+        *finalURL = URL;
+        *responseHeaderDict = [NSDictionary dictionary];
+        *statusCode = 404;
     }
 
     // notify the delegates
     WebPluginController *pluginController = [docView _pluginController];
     
     NSDictionary *arguments = [NSDictionary dictionaryWithObjectsAndKeys:
-        baseURL, WebPluginBaseURLKey,
-        attributes, WebPluginAttributesKey,
-        pluginController, WebPluginContainerKey,
+        baseURL, WebPlugInBaseURLKey,
+        attributes, WebPlugInAttributesKey,
+        pluginController, WebPlugInContainerKey,
         nil];
 
     LOG(Plugins, "arguments:\n%@", arguments);
 
     [pluginPackage load];
     
-    return [[pluginPackage viewFactory] pluginViewWithArguments:arguments];
+    return [[pluginPackage viewFactory] plugInViewWithArguments:arguments];
 }
 
 - (NSView *)viewForPluginWithURL:(NSURL *)URL
index cceed21..ce87e09 100644 (file)
@@ -80,6 +80,9 @@ _WebViewDidChangeNotification
 _WebViewDidEndEditingNotification
 _WebViewDidChangeTypingStyleNotification
 _WebViewDidChangeSelectionNotification
+_WebPlugInBaseURLKey
+_WebPlugInAttributesKey
+_WebPlugInContainerKey
 
 ##
 ## Carbon Support
index 4ae6596..170e112 100644 (file)
                                930D02BE06275F710076701E,
                                84AE9060062DE6A80075BBF9,
                                BE4FBECC0653DF47005EDE15,
+                               51863EDA065417DA00E9E8DD,
+                               51863EFD065419EB00E9E8DD,
                        );
                        isa = PBXHeadersBuildPhase;
                        runOnlyForDeploymentPostprocessing = 0;
                        settings = {
                        };
                };
+               51863ED9065417DA00E9E8DD = {
+                       fileEncoding = 30;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = WebScriptObject.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               51863EDA065417DA00E9E8DD = {
+                       fileRef = 51863ED9065417DA00E9E8DD;
+                       isa = PBXBuildFile;
+                       settings = {
+                               ATTRIBUTES = (
+                                       Public,
+                               );
+                       };
+               };
+               51863EFC065419EB00E9E8DD = {
+                       fileEncoding = 4;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = WebJavaPlugIn.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               51863EFD065419EB00E9E8DD = {
+                       fileRef = 51863EFC065419EB00E9E8DD;
+                       isa = PBXBuildFile;
+                       settings = {
+                               ATTRIBUTES = (
+                                       Public,
+                               );
+                       };
+               };
                51A8B52E04282B5900CA2D3A = {
                        fileEncoding = 30;
                        isa = PBXFileReference;
                        isa = PBXBuildFile;
                        settings = {
                                ATTRIBUTES = (
-                                       Private,
+                                       Public,
                                );
                        };
                };
                        isa = PBXBuildFile;
                        settings = {
                                ATTRIBUTES = (
-                                       Private,
+                                       Public,
                                );
                        };
                };
                        isa = PBXBuildFile;
                        settings = {
                                ATTRIBUTES = (
-                                       Private,
+                                       Public,
                                );
                        };
                };
                };
                848DFF410365F6FB00CA2ACA = {
                        children = (
+                               51863ED9065417DA00E9E8DD,
                                515B878E05F5348600EABBF9,
                                51C16E4006138EB400A1657B,
                                F5F717220288493C018635CA,
                                83E4AF4B036659440000E506,
                                83E4AF4C036659440000E506,
                                848DFF860365FE6A00CA2ACA,
+                               51863EFC065419EB00E9E8DD,
                        );
                        isa = PBXGroup;
                        name = "WebKit Plug-ins";
index a1aab31..844af6b 100644 (file)
@@ -9,6 +9,7 @@
 
 @class NSError;
 @class WebFrame;
+@class WebScriptObject;
 @class WebView;
 
 /*!
 */
 - (void)webView:(WebView *)sender willCloseFrame:(WebFrame *)frame;
 
+/*!
+    @method webView:windowScriptObjectAvailable:
+    @abstract Notifies the delegate that the scripting object for a page is available.  This is called
+    before the page is loaded.  It may be useful to allow delegates to bind native objects to the window.
+    @param webView The webView sending the message.
+    @param windowScriptObject The WebScriptObject for the window in the scripting environment.
+*/
+- (void)webView:(WebView *)webView windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject;
+
 @end
 
index 3213859..8f5a76b 100644 (file)
 @class DOMElement;
 @class DOMNode;
 @class DOMRange;
+
 @class WebArchive;
 @class WebBackForwardList;
-@class WebHistoryItem;
-@class WebViewPrivate;
 @class WebDataSource;
 @class WebFrame;
-@class WebPreferences;
 @class WebFrameView;
-
+@class WebHistoryItem;
+@class WebPreferences;
+@class WebScriptObject;
+@class WebViewPrivate;
 
 // These strings are keys into the element dictionary provided in
 // the WebContextMenuDelegate's contextMenuItemsForElement and the WebwebViewPolicyDelegate's clickPolicyForElement.
@@ -353,6 +354,14 @@ extern NSString *WebViewProgressFinishedNotification;
 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
 
 /*!
+    @method windowScriptObject
+    @discussion windowScriptObject return a WebScriptObject that represents the
+    window object from the script environment.
+    @result Returns the window object from the script environment.
+*/
+- (WebScriptObject *)windowScriptObject;
+
+/*!
     @method setPreferences:
     @param preferences The preferences to use for the webView.
     @abstract Override the standard setting for the webView. 
index ef6ba71..d0ff31e 100644 (file)
@@ -1583,6 +1583,13 @@ NS_ENDHANDLER
     return [[[self mainFrame] _bridge] stringByEvaluatingJavaScriptFromString:script];
 }
 
+- (WebScriptObject *)windowScriptObject
+{
+    NSLog (@"%s:%d:  not yet implemented", __PRETTY_FUNCTION__, __LINE__);
+    return nil;
+}
+
+
 // Get the appropriate user-agent string for a particular URL.
 // Since we no longer automatically spoof, this no longer requires looking at the URL.
 - (NSString *)userAgentForURL:(NSURL *)URL
index eaa577c..fb68580 100755 (executable)
@@ -23,6 +23,7 @@ my %WebCoreFiles = (
 my %JavaScriptCoreFiles = (
     'bindings/npruntime.h' => 'Plugins.subproj/npruntime.h',
     'bindings/npsap.h' => 'Plugins.subproj/npsap.h',
+    'bindings/objc/WebScriptObject.h' => 'Plugins.subproj/WebScriptObject.h',
 );
 
 my $JavaScriptCorePath = '';
@@ -102,7 +103,10 @@ sub CopyFilesIfNeeded {
                if (! -e $dest || system("cmp $source $dest > /dev/null 2>&1")) {
                        Say("$ProgramName: copying files...") if $blab == 0;
                        $blab = 1;
-                       ExecuteCommand("cp -f $source $dest");
+                       #ExecuteCommand("cp -f $source $dest");
+                       ExecuteCommand("sed -e 's%#import .*<WebCore/\\(.*\\)>%#import <WebKit/\\1>%' $source > $dest-X");
+                       ExecuteCommand("sed -e 's%#import .*<JavaScriptCore/\\(.*\\)>%#import <WebKit/\\1>%' $dest-X > $dest");
+                       ExecuteCommand("rm $dest-X");
                }
        }
 
@@ -118,7 +122,10 @@ sub CopyFilesIfNeeded {
                if (! -e $dest || system("cmp $source $dest > /dev/null 2>&1")) {
                        Say("$ProgramName: copying files...") if $blab == 0;
                        $blab = 1;
-                       ExecuteCommand("cp -f $source $dest");
+                       #ExecuteCommand("cp -f $source $dest");
+                       ExecuteCommand("sed -e 's%#import .*<WebCore/\\(.*\\)>%#import <WebKit/\\1>%' $source > $dest-X");
+                       ExecuteCommand("sed -e 's%#import .*<JavaScriptCore/\\(.*\\)>%#import <WebKit/\\1>%' $dest-X > $dest");
+                       ExecuteCommand("rm $dest-X");
                }
        }
 }