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 5217cd36810a600d039d2872015e12d11f3eba5f..d27700e34cdf55242051b86c5e25cf0e2052c3e2 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 4955ab6f70f4c038a089e87e2b78053dfb9b1b37..7b261c207025094aed50dce401a0c2e2dddd7917 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 3e6833f3544bd6b0ae725d38e9e9ecd907b63b02..0d027b56a3ee67ee6f25b9efa970fe52458b38ed 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 0f4c44ad3e0eea279dc656e14c1186c8d52c587c..851e5486affb2eb9719f0983bc3ee43129066cec 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 46314edd0ffae8cce2e47c243edb3b80d732d530..efafb133b8a8799e50979ef16d504939d6318774 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 c86c0d0aaf9516522a5b9f5a9b180de77b0646a5..90f354d61b57692ff8b1a8cd53987dd5a9cd5c42 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 22f9f7dcf8ef84048b013584d3087fda15cec11e..b6afbae23ce60763d7f9f4df45a62fb45f189973 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 aa985abec5b2df76e7239450f90ed3c39ecae042..5825f9641900ccc146ecee9baa44fcaaf17a2841 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 b26ff0be1ae5cbd97f878f30596497813a2de241..319ef461fc0e3a0c5e0bbd46e8f5795603177c5a 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 bf4341247590307f3855451d1212e8737a90391f..81f1a7090a6719fe053a0b88fa64002a43eefd9f 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 1d7668a2e12333327c3f50c869e4ba2f71385712..b95472a3513df41f095a0170e019c3232efa6c40 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 9e3f6042de8b02c7c7dc772f5d4558f5d0b6fad2..58683b5a936b73221d40f677624f185de91718bd 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 61922fd4ffe1f7899c44a8063fdacdf576a40fcb..0e4a1b12c554acbec26d778d09776a639af0efc0 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 bcc710744ddcf03db353fcaee8d495aae4672683..b7777a76893e1fc60404a4e07e9314c342843b2b 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 76c4759fe36d93f9ed801111c3167d9baffebb14..a947d8a2ca7f21cff7b6e80346971276e1c7f973 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 0f4c44ad3e0eea279dc656e14c1186c8d52c587c..9f71fdf324ec2ba6afe8b5ef371f5a22ac199bf4 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 46314edd0ffae8cce2e47c243edb3b80d732d530..f5a95a2fb3df1ed52d823876c1d56862a4d2352f 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 c86c0d0aaf9516522a5b9f5a9b180de77b0646a5..9779a0581f5226aa9da050c8072287bd7211faef 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 22f9f7dcf8ef84048b013584d3087fda15cec11e..2a8ae9a3ecbfa7f578041bf81f675973dba8bc95 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 aa985abec5b2df76e7239450f90ed3c39ecae042..ca46a52e62954e705e095b4e673641d494b6bf70 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 b26ff0be1ae5cbd97f878f30596497813a2de241..4ca912467a5c2c54d80445ae1fa8ccca509e0bcc 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 1d7668a2e12333327c3f50c869e4ba2f71385712..5f126c2f60abd55ab678ad2f2d6819c43f40c3cc 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 9e3f6042de8b02c7c7dc772f5d4558f5d0b6fad2..e31153b9ec11843b80a2e4c551039495ffb16f20 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 61922fd4ffe1f7899c44a8063fdacdf576a40fcb..ae270f9b2a87a3bb1ceadd85dca09b5464e23906 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 bcc710744ddcf03db353fcaee8d495aae4672683..8d581fca68c26a290b911d823c297e615f169f90 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 6a0cd5559b018b2ff659e445eea7e3015a00169b..8f360d881d574ce6c166b531be0fdc5a31a3cbd9 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 4fab383affe1c4154b767e9592007e8dcdcb8859..777e1e0fa3d69157b6cdbc129a7112b0765bd5ae 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 855ae4564137913ff6d5c2294a06dac0a6978a87..76c46c5053ff48b79b91de734ede24d0ba194007 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 74d58a6b78ab28fcc825d685193733c19bb2f6f7..26018d0d703f0e56a3a13f6b896ec0b485a8c75a 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 75fa3929cef459a40a2621c2d30d16cacb0e0815..1a1e61c390e09394920a2e50b1a33d5ef92b3e8f 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 988f6516362c0fcbfddadfb706c9c73b426868a1..b41eba76c29d4bd1ccfa55fc22b25f283caca35a 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 cceed212192c84db8051acf02e30b9deb9ddf153..ce87e09f9e691e8732113bc4f707a8cd25941b4d 100644 (file)
@@ -80,6 +80,9 @@ _WebViewDidChangeNotification
 _WebViewDidEndEditingNotification
 _WebViewDidChangeTypingStyleNotification
 _WebViewDidChangeSelectionNotification
+_WebPlugInBaseURLKey
+_WebPlugInAttributesKey
+_WebPlugInContainerKey
 
 ##
 ## Carbon Support
index 4ae659689a144d582c4ebe6b08f73cc4ef38a755..170e112daae08ff3710923007cff610a8d4a324b 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 a1aab31a38cc14a9f183394a11f61ba2ec6012b3..844af6b417ca4e14e2c314391295424521f721fe 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 321385933ce1285288d2a070ea701bc2fdada227..8f5a76b632cda3ebf7dc6d91eac487320be67bec 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.
@@ -352,6 +353,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.
index ef6ba717c8fe824c887cc0bc67543029b209342a..d0ff31ec0453781e300471b9dd320ab1268d6a6a 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 eaa577c9ac62348ab71dc27738cc237508650cc9..fb68580e29adb6d43d1f1f0aa349825b34eda6d6 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");
                }
        }
 }