summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/objc/WebScriptObject.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/objc/WebScriptObject.h')
-rw-r--r--WebCore/bindings/objc/WebScriptObject.h318
1 files changed, 0 insertions, 318 deletions
diff --git a/WebCore/bindings/objc/WebScriptObject.h b/WebCore/bindings/objc/WebScriptObject.h
deleted file mode 100644
index f75f458..0000000
--- a/WebCore/bindings/objc/WebScriptObject.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (C) 2004, 2006, 2007 Apple 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 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 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 <Foundation/Foundation.h>
-#import <JavaScriptCore/JSBase.h>
-#import <JavaScriptCore/WebKitAvailability.h>
-
-#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
-
-// NSObject (WebScripting) -----------------------------------------------------
-
-/*
- Classes may implement one or more methods in WebScripting to export interfaces
- to WebKit's JavaScript environment.
-
- By default, no properties or functions are exported. A class must implement
- +isKeyExcludedFromWebScript: and/or +isSelectorExcludedFromWebScript: to
- expose selected properties and methods, respectively, to JavaScript.
-
- Access to exported properties is done using KVC -- specifically, the following
- KVC methods:
-
- - (void)setValue:(id)value forKey:(NSString *)key
- - (id)valueForKey:(NSString *)key
-
- Clients may also intercept property set/get operations that are made by the
- scripting environment for properties that are not exported. This is done using
- the KVC methods:
-
- - (void)setValue:(id)value forUndefinedKey:(NSString *)key
- - (id)valueForUndefinedKey:(NSString *)key
-
- Similarly, clients may intercept method invocations that are made by the
- scripting environment for methods that are not exported. This is done using
- the method:
-
- - (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args;
-
- 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.
-
- Not all methods are exposed. Only those methods whose parameters and return
- type meets the export criteria are exposed. Valid types are Objective-C instances
- and scalars. Other types are not allowed.
-
- Types will be converted automatically between JavaScript and Objective-C in
- the following manner:
-
- JavaScript ObjC
- ---------- ----------
- null => nil
- undefined => WebUndefined
- number => NSNumber
- boolean => CFBoolean
- string => NSString
- object => id
-
- The object => id conversion occurs as follows: if the object wraps an underlying
- Objective-C object (i.e., if it was created by a previous ObjC => JavaScript conversion),
- then the underlying Objective-C object is returned. Otherwise, a new WebScriptObject
- is created and returned.
-
- The above conversions occur only if the declared ObjC type is an object type.
- For primitive types like int and char, a numeric cast is performed.
-
- ObjC JavaScript
- ---- ----------
- NSNull => null
- nil => undefined
- WebUndefined => undefined
- CFBoolean => boolean
- NSNumber => number
- NSString => string
- NSArray => array object
- WebScriptObject => object
-
- The above conversions occur only if the declared ObjC type is an object type.
- For primitive type like int and char, a numeric cast is performed.
-*/
-@interface NSObject (WebScripting)
-
-/*!
- @method webScriptNameForSelector:
- @param selector 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
- Objective-C selector name and replaces ':' with '_'. '_' characters
- are escaped with an additional '$', i.e. '_' becomes "$_". '$' are
- also escaped, i.e.
- Objective-C name Default script name
- moveTo:: move__
- moveTo_ moveTo$_
- moveTo$_ moveTo$$$_
- @result Returns the name to be used to represent the specified selector in the
- scripting environment.
-*/
-+ (NSString *)webScriptNameForSelector:(SEL)selector;
-
-/*!
- @method isSelectorExcludedFromWebScript:
- @param selector The selector the will be exposed to the script environment.
- @discussion Return NO to export the selector to the script environment.
- Return YES to prevent the selector from being exported to the script environment.
- If this method is not implemented on the class no selectors will be exported.
- @result Returns YES to hide the selector, NO to export the selector.
-*/
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector;
-
-/*!
- @method webScriptNameForKey:
- @param name The name of the instance variable that will be exposed to the
- script environment. Only instance variables 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 specified 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
- script environment.
- @discussion Return NO to export the property to the script environment.
- Return YES to prevent the property from being exported to the script environment.
- @result Returns YES to hide the property, NO to export the property.
-*/
-+ (BOOL)isKeyExcludedFromWebScript:(const char *)name;
-
-/*!
- @method invokeUndefinedMethodFromWebScript:withArguments:
- @param name The name of the method to invoke.
- @param arguments The arguments to pass the method.
- @discussion If a script attempts to invoke a method that is not exported,
- invokeUndefinedMethodFromWebScript:withArguments: 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 *)arguments;
-
-/*!
- @method invokeDefaultMethodWithArguments:
- @param arguments The arguments to pass the method.
- @discussion If a script attempts to call an exposed object as a function,
- this method will be called.
- @result The return value of the call. The value will be converted as appropriate
- for the script environment.
-*/
-- (id)invokeDefaultMethodWithArguments:(NSArray *)arguments;
-
-/*!
- @method finalizeForWebScript
- @discussion finalizeForScript is called on objects exposed to the script
- environment just before the script environment garbage collects the object.
- Subsequently, any references to WebScriptObjects made by the exposed object will
- be invalid and have undefined consequences.
-*/
-- (void)finalizeForWebScript;
-
-@end
-
-
-// WebScriptObject --------------------------------------------------
-
-@class WebScriptObjectPrivate;
-@class WebFrame;
-
-/*!
- @class WebScriptObject
- @discussion WebScriptObjects are used to wrap script objects passed from
- script environments to Objective-C. 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, since the sparse array access allowed in script objects doesn't map well
- to NSArray, the following methods can be used to access index based properties:
-
- - (id)webScriptValueAtIndex:(unsigned)index;
- - (void)setWebScriptValueAtIndex:(unsigned)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 JSObject
- @result The equivalent JSObjectRef for this WebScriptObject.
- @discussion Use this method to bridge between the WebScriptObject and
- JavaScriptCore APIs.
-*/
-- (JSObjectRef)JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER);
-
-/*!
- @method callWebScriptMethod:withArguments:
- @param name The name of the method to call in the script environment.
- @param arguments 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.
- Returns WebUndefined when an exception is thrown in the script environment.
-*/
-- (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)arguments;
-
-/*!
- @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.
- Returns WebUndefined when an exception is thrown 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 stringRepresentation
- @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 webScriptValueAtIndex:
- @param index The index of the property to return.
- @discussion Gets the value of the property at the specified index.
- @result The value of the property. Returns WebUndefined when an exception is
- thrown in the script environment.
-*/
-- (id)webScriptValueAtIndex:(unsigned)index;
-
-/*!
- @method setWebScriptValueAtIndex: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)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