Annotate the Objective-C DOM APIs with the JavaScriptCore/WebKitAvailability.h availa...
authortimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Oct 2008 03:23:12 +0000 (03:23 +0000)
committertimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Oct 2008 03:23:12 +0000 (03:23 +0000)
WebCore:

2008-10-09  Timothy Hatcher  <timothy@apple.com>

        Annotate the Objective-C DOM APIs with the JavaScriptCore/WebKitAvailability.h
        availability macros and version macros.

        https://bugs.webkit.org/show_bug.cgi?id=21496
        rdar://problem/6259225

        Reviewed by Sam Weinig.

        * bindings/objc/DOMCSS.h: Add a version #if around catgory interface.
        * bindings/objc/DOMEventException.h: Include JavaScriptCore/WebKitAvailability.h
        and add an #if around the enum.
        * bindings/objc/DOMException.h: Ditto. Give the enum a name and remove the
        comment to match the other headers.
        * bindings/objc/DOMExtensions.h: Annotate the methods with version 3.0 or later.
        * bindings/objc/DOMObject.h: Add a version #if around class interface.
        * bindings/objc/DOMRangeException.h: Include JavaScriptCore/WebKitAvailability.h
        and add a version #if around the enum.
        * bindings/objc/DOMSVGException.h: Ditto. Use the latest version since SVG is new.
        * bindings/objc/DOMXPathException.h: Ditto. Use the 3.0 version.
        * bindings/objc/PublicDOMInterfaces.h: Annotate classes and protocols for
        when they where added to WebKit. Also annotate individual methods that are
        deprecated or where added after the class was added to WebKit.
        * bindings/objc/WebScriptObject.h: Include JavaScriptCore/WebKitAvailability.h
        since this header is included by most DOM headers. Annotate the JSObject method.

        * bindings/scripts/CodeGeneratorObjC.pm:
        (ReadPublicInterfaces): Parse out the availability macro for each function/property.
        And parse out the availability version for the class/protocol. Default to
        WEBKIT_VERSION_LATEST if the class is new.
        (GenerateHeader): Include JavaScriptCore/WebKitAvailability.h if needed. Add the
        interface availability version check if the class has a required version. Create
        a public interface key (used to lookup in $publicInterfaces) and make a declaration
        suffix that includes the availability macro (if needed). Use the "available in 1.3
        and later but deprecated in 3.0" macro instead of "deprecated in 10.5 and later" as
        the default availability macro for old style methods. Tweak line breaks in the generated
        headers to look good and not have too many extra lines.

WebKit/mac:

2008-10-09  Timothy Hatcher  <timothy@apple.com>

        Don't convert JavaScriptCore header include paths to WebKit paths. This was needed
        back when NPAPI and WebScriptObject migrated from JavaScriptCore. Also remove
        JavaScriptCore from the VPATH.

        Reviewed by Sam Weinig.

        * MigrateHeaders.make:

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

15 files changed:
WebCore/ChangeLog
WebCore/bindings/objc/DOMAbstractViewFrame.h
WebCore/bindings/objc/DOMCSS.h
WebCore/bindings/objc/DOMEventException.h
WebCore/bindings/objc/DOMException.h
WebCore/bindings/objc/DOMExtensions.h
WebCore/bindings/objc/DOMObject.h
WebCore/bindings/objc/DOMRangeException.h
WebCore/bindings/objc/DOMSVGException.h
WebCore/bindings/objc/DOMXPathException.h
WebCore/bindings/objc/PublicDOMInterfaces.h
WebCore/bindings/objc/WebScriptObject.h
WebCore/bindings/scripts/CodeGeneratorObjC.pm
WebKit/mac/ChangeLog
WebKit/mac/MigrateHeaders.make

index ffac927..5085f2b 100644 (file)
@@ -1,3 +1,42 @@
+2008-10-09  Timothy Hatcher  <timothy@apple.com>
+
+        Annotate the Objective-C DOM APIs with the JavaScriptCore/WebKitAvailability.h
+        availability macros and version macros.
+
+        https://bugs.webkit.org/show_bug.cgi?id=21496
+        rdar://problem/6259225
+
+        Reviewed by Sam Weinig.
+
+        * bindings/objc/DOMCSS.h: Add a version #if around catgory interface.
+        * bindings/objc/DOMEventException.h: Include JavaScriptCore/WebKitAvailability.h
+        and add an #if around the enum.
+        * bindings/objc/DOMException.h: Ditto. Give the enum a name and remove the
+        comment to match the other headers.
+        * bindings/objc/DOMExtensions.h: Annotate the methods with version 3.0 or later.
+        * bindings/objc/DOMObject.h: Add a version #if around class interface.
+        * bindings/objc/DOMRangeException.h: Include JavaScriptCore/WebKitAvailability.h
+        and add a version #if around the enum.
+        * bindings/objc/DOMSVGException.h: Ditto. Use the latest version since SVG is new.
+        * bindings/objc/DOMXPathException.h: Ditto. Use the 3.0 version.
+        * bindings/objc/PublicDOMInterfaces.h: Annotate classes and protocols for
+        when they where added to WebKit. Also annotate individual methods that are
+        deprecated or where added after the class was added to WebKit.
+        * bindings/objc/WebScriptObject.h: Include JavaScriptCore/WebKitAvailability.h
+        since this header is included by most DOM headers. Annotate the JSObject method.
+
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        (ReadPublicInterfaces): Parse out the availability macro for each function/property.
+        And parse out the availability version for the class/protocol. Default to
+        WEBKIT_VERSION_LATEST if the class is new.
+        (GenerateHeader): Include JavaScriptCore/WebKitAvailability.h if needed. Add the
+        interface availability version check if the class has a required version. Create
+        a public interface key (used to lookup in $publicInterfaces) and make a declaration
+        suffix that includes the availability macro (if needed). Use the "available in 1.3
+        and later but deprecated in 3.0" macro instead of "deprecated in 10.5 and later" as
+        the default availability macro for old style methods. Tweak line breaks in the generated
+        headers to look good and not have too many extra lines.
+
 2008-10-09  Simon Fraser  <simon.fraser@apple.com>
 
         Reviewed by Dave Hyatt
index 60002f9..386a912 100644 (file)
@@ -31,4 +31,3 @@
 @interface DOMAbstractView (Frame)
 - (void)_disconnectFrame;
 @end
-
index 7bae9ed..daaa8a0 100644 (file)
@@ -48,6 +48,8 @@
 #import <WebCore/DOMRGBColor.h>
 #import <WebCore/DOMRect.h>
 
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
+
 @interface DOMCSSStyleDeclaration (DOMCSS2Properties)
 - (NSString *)azimuth;
 - (void)setAzimuth:(NSString *)azimuth;
 - (NSString *)zIndex;
 - (void)setZIndex:(NSString *)zIndex;
 @end
+
+#endif
index 4e805ad..a485955 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#import <JavaScriptCore/WebKitAvailability.h>
+
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
+
 @class NSString;
 
 extern NSString * const DOMEventException;
@@ -31,3 +35,5 @@ extern NSString * const DOMEventException;
 enum DOMEventExceptionCode {
     DOM_UNSPECIFIED_EVENT_TYPE_ERR = 0
 };
+
+#endif
index 1efdf24..64d7194 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#import <JavaScriptCore/WebKitAvailability.h>
+
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
+
 @class NSString;
 
 extern NSString * const DOMException;
 
-// DOM exception codes
-enum {
+enum DOMExceptionCode {
     DOM_INDEX_SIZE_ERR                = 1,
     DOM_DOMSTRING_SIZE_ERR            = 2,
     DOM_HIERARCHY_REQUEST_ERR         = 3,
@@ -46,3 +49,5 @@ enum {
     DOM_NAMESPACE_ERR                 = 14,
     DOM_INVALID_ACCESS_ERR            = 15
 };
+
+#endif
index 8188c30..e937e74 100644 (file)
 @class NSURL;
 
 @interface DOMNode (DOMNodeExtensions)
-- (NSRect)boundingBox;
-- (NSArray *)lineBoxRects;
+- (NSRect)boundingBox WEBKIT_CATEGORY_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER);
+- (NSArray *)lineBoxRects WEBKIT_CATEGORY_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER);
 @end
 
 @interface DOMElement (DOMElementAppKitExtensions)
-- (NSImage *)image;
+- (NSImage *)image WEBKIT_CATEGORY_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER);
 @end
 
 @interface DOMHTMLDocument (DOMHTMLDocumentExtensions)
-- (DOMDocumentFragment *)createDocumentFragmentWithMarkupString:(NSString *)markupString baseURL:(NSURL *)baseURL;
-- (DOMDocumentFragment *)createDocumentFragmentWithText:(NSString *)text;
+- (DOMDocumentFragment *)createDocumentFragmentWithMarkupString:(NSString *)markupString baseURL:(NSURL *)baseURL WEBKIT_CATEGORY_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER);
+- (DOMDocumentFragment *)createDocumentFragmentWithText:(NSString *)text WEBKIT_CATEGORY_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER);
 @end
index 22d739e..166637d 100644 (file)
@@ -27,6 +27,8 @@
 #import <WebCore/DOMException.h>
 #import <WebCore/WebScriptObject.h>
 
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
+
 @class DOMStyleSheet;
 
 typedef unsigned long long DOMTimeStamp;
@@ -46,3 +48,5 @@ typedef struct DOMObjectInternal DOMObjectInternal;
 - (DOMStyleSheet *)sheet;
 #endif
 @end
+
+#endif
index a625d49..874a540 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#import <JavaScriptCore/WebKitAvailability.h>
+
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
+
 @class NSString;
 
 extern NSString * const DOMRangeException;
@@ -32,3 +36,5 @@ enum DOMRangeExceptionCode {
     DOM_BAD_BOUNDARYPOINTS_ERR        = 1,
     DOM_INVALID_NODE_TYPE_ERR         = 2
 };
+
+#endif
index 1eb121a..b757978 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#import <JavaScriptCore/WebKitAvailability.h>
+
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST
+
 @class NSString;
 
 extern NSString * const DOMSVGException;
@@ -33,3 +37,5 @@ enum DOMSVGException {
     DOM_SVG_INVALID_VALUE_ERR        = 1,
     DOM_SVG_MATRIX_NOT_INVERTABLE    = 2
 };
+
+#endif
index 6db8292..32f95fb 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#import <JavaScriptCore/WebKitAvailability.h>
+
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_3_0
+
 @class NSString;
 
 extern NSString * const DOMXPathException;
@@ -32,3 +36,5 @@ enum DOMXPathExceptionCode {
     DOM_INVALID_EXPRESSION_ERR      = 51,
     DOM_TYPE_ERR                    = 52
 };
+
+#endif
index 5cdb7a9..349abaf 100644 (file)
 #error Do not include this header, instead include the appropriate DOM header.
 #endif
 
-@interface DOMAttr : DOMNode
+@interface DOMAttr : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *name;
 @property(readonly) BOOL specified;
 @property(copy) NSString *value;
 @property(readonly, retain) DOMElement *ownerElement;
-@property(readonly, retain) DOMCSSStyleDeclaration *style;
+@property(readonly, retain) DOMCSSStyleDeclaration *style AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMCDATASection : DOMText
+@interface DOMCDATASection : DOMText WEBKIT_VERSION_1_3
 @end
 
-@interface DOMCharacterData : DOMNode
+@interface DOMCharacterData : DOMNode WEBKIT_VERSION_1_3
 @property(copy) NSString *data;
 @property(readonly) unsigned length;
 - (NSString *)substringData:(unsigned)offset :(unsigned)length;
-- (NSString *)substringData:(unsigned)offset length:(unsigned)length;
+- (NSString *)substringData:(unsigned)offset length:(unsigned)length AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)appendData:(NSString *)data;
 - (void)insertData:(unsigned)offset :(NSString *)data;
 - (void)deleteData:(unsigned)offset :(unsigned)length;
 - (void)replaceData:(unsigned)offset :(unsigned)length :(NSString *)data;
-- (void)insertData:(unsigned)offset data:(NSString *)data;
-- (void)deleteData:(unsigned)offset length:(unsigned)length;
-- (void)replaceData:(unsigned)offset length:(unsigned)length data:(NSString *)data;
+- (void)insertData:(unsigned)offset data:(NSString *)data AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)deleteData:(unsigned)offset length:(unsigned)length AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)replaceData:(unsigned)offset length:(unsigned)length data:(NSString *)data AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMComment : DOMCharacterData
+@interface DOMComment : DOMCharacterData WEBKIT_VERSION_1_3
 @end
 
-@interface DOMImplementation : DOMObject
+@interface DOMImplementation : DOMObject WEBKIT_VERSION_1_3
 - (BOOL)hasFeature:(NSString *)feature :(NSString *)version;
 - (DOMDocumentType *)createDocumentType:(NSString *)qualifiedName :(NSString *)publicId :(NSString *)systemId;
 - (DOMDocument *)createDocument:(NSString *)namespaceURI :(NSString *)qualifiedName :(DOMDocumentType *)doctype;
 - (DOMCSSStyleSheet *)createCSSStyleSheet:(NSString *)title :(NSString *)media;
-- (BOOL)hasFeature:(NSString *)feature version:(NSString *)version;
-- (DOMDocumentType *)createDocumentType:(NSString *)qualifiedName publicId:(NSString *)publicId systemId:(NSString *)systemId;
-- (DOMDocument *)createDocument:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName doctype:(DOMDocumentType *)doctype;
-- (DOMCSSStyleSheet *)createCSSStyleSheet:(NSString *)title media:(NSString *)media;
-- (DOMHTMLDocument *)createHTMLDocument:(NSString *)title;
+- (BOOL)hasFeature:(NSString *)feature version:(NSString *)version AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMDocumentType *)createDocumentType:(NSString *)qualifiedName publicId:(NSString *)publicId systemId:(NSString *)systemId AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMDocument *)createDocument:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName doctype:(DOMDocumentType *)doctype AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMCSSStyleSheet *)createCSSStyleSheet:(NSString *)title media:(NSString *)media AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMHTMLDocument *)createHTMLDocument:(NSString *)title AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMAbstractView : DOMObject
+@interface DOMAbstractView : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMDocument *document;
 @end
 
-@interface DOMDocument : DOMNode
+@interface DOMDocument : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMDocumentType *doctype;
 @property(readonly, retain) DOMImplementation *implementation;
 @property(readonly, retain) DOMElement *documentElement;
@@ -97,7 +97,7 @@
 - (DOMComment *)createComment:(NSString *)data;
 - (DOMCDATASection *)createCDATASection:(NSString *)data;
 - (DOMProcessingInstruction *)createProcessingInstruction:(NSString *)target :(NSString *)data;
-- (DOMProcessingInstruction *)createProcessingInstruction:(NSString *)target data:(NSString *)data;
+- (DOMProcessingInstruction *)createProcessingInstruction:(NSString *)target data:(NSString *)data AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMAttr *)createAttribute:(NSString *)name;
 - (DOMEntityReference *)createEntityReference:(NSString *)name;
 - (DOMNodeList *)getElementsByTagName:(NSString *)tagname;
 - (DOMElement *)createElementNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
 - (DOMAttr *)createAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
 - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
-- (DOMNode *)importNode:(DOMNode *)importedNode deep:(BOOL)deep;
-- (DOMNode *)adoptNode:(DOMNode *)source;
-- (DOMElement *)createElementNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName;
-- (DOMAttr *)createAttributeNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName;
-- (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI localName:(NSString *)localName;
+- (DOMNode *)importNode:(DOMNode *)importedNode deep:(BOOL)deep AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMNode *)adoptNode:(DOMNode *)source AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMElement *)createElementNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMAttr *)createAttributeNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMElement *)getElementById:(NSString *)elementId;
 - (DOMEvent *)createEvent:(NSString *)eventType;
 - (DOMRange *)createRange;
-- (DOMCSSStyleDeclaration *)createCSSStyleDeclaration;
+- (DOMCSSStyleDeclaration *)createCSSStyleDeclaration AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMCSSStyleDeclaration *)getOverrideStyle:(DOMElement *)element :(NSString *)pseudoElement;
-- (DOMCSSStyleDeclaration *)getOverrideStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
+- (DOMCSSStyleDeclaration *)getOverrideStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)element :(NSString *)pseudoElement;
-- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
-- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
-- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement authorOnly:(BOOL)authorOnly;
+- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement authorOnly:(BOOL)authorOnly AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMNodeList *)getElementsByName:(NSString *)elementName;
-- (DOMNodeIterator *)createNodeIterator:(DOMNode *)root whatToShow:(unsigned)whatToShow filter:(id <DOMNodeFilter>)filter expandEntityReferences:(BOOL)expandEntityReferences;
-- (DOMTreeWalker *)createTreeWalker:(DOMNode *)root whatToShow:(unsigned)whatToShow filter:(id <DOMNodeFilter>)filter expandEntityReferences:(BOOL)expandEntityReferences;
+- (DOMNodeIterator *)createNodeIterator:(DOMNode *)root whatToShow:(unsigned)whatToShow filter:(id <DOMNodeFilter>)filter expandEntityReferences:(BOOL)expandEntityReferences AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMTreeWalker *)createTreeWalker:(DOMNode *)root whatToShow:(unsigned)whatToShow filter:(id <DOMNodeFilter>)filter expandEntityReferences:(BOOL)expandEntityReferences AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMNodeIterator *)createNodeIterator:(DOMNode *)root :(unsigned)whatToShow :(id <DOMNodeFilter>)filter :(BOOL)expandEntityReferences;
 - (DOMTreeWalker *)createTreeWalker:(DOMNode *)root :(unsigned)whatToShow :(id <DOMNodeFilter>)filter :(BOOL)expandEntityReferences;
 #if ENABLE_XPATH
-- (DOMXPathExpression *)createExpression:(NSString *)expression :(id <DOMXPathNSResolver>)resolver;
-- (DOMXPathExpression *)createExpression:(NSString *)expression resolver:(id <DOMXPathNSResolver>)resolver;
-- (id <DOMXPathNSResolver>)createNSResolver:(DOMNode *)nodeResolver;
-- (DOMXPathResult *)evaluate:(NSString *)expression :(DOMNode *)contextNode :(id <DOMXPathNSResolver>)resolver :(unsigned short)type :(DOMXPathResult *)inResult;
-- (DOMXPathResult *)evaluate:(NSString *)expression contextNode:(DOMNode *)contextNode resolver:(id <DOMXPathNSResolver>)resolver type:(unsigned short)type inResult:(DOMXPathResult *)inResult;
+- (DOMXPathExpression *)createExpression:(NSString *)expression :(id <DOMXPathNSResolver>)resolver AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED;
+- (DOMXPathExpression *)createExpression:(NSString *)expression resolver:(id <DOMXPathNSResolver>)resolver AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (id <DOMXPathNSResolver>)createNSResolver:(DOMNode *)nodeResolver AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMXPathResult *)evaluate:(NSString *)expression :(DOMNode *)contextNode :(id <DOMXPathNSResolver>)resolver :(unsigned short)type :(DOMXPathResult *)inResult AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED;
+- (DOMXPathResult *)evaluate:(NSString *)expression contextNode:(DOMNode *)contextNode resolver:(id <DOMXPathNSResolver>)resolver type:(unsigned short)type inResult:(DOMXPathResult *)inResult AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 #endif
 @end
 
-@interface DOMDocumentFragment : DOMNode
+@interface DOMDocumentFragment : DOMNode WEBKIT_VERSION_1_3
 @end
 
-@interface DOMDocumentType : DOMNode
+@interface DOMDocumentType : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *name;
 @property(readonly, retain) DOMNamedNodeMap *entities;
 @property(readonly, retain) DOMNamedNodeMap *notations;
 @property(readonly, copy) NSString *internalSubset;
 @end
 
-@interface DOMElement : DOMNode
+@interface DOMElement : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *tagName;
 @property(readonly, retain) DOMCSSStyleDeclaration *style;
 @property(readonly) int offsetLeft;
 @property(readonly) int scrollHeight;
 - (NSString *)getAttribute:(NSString *)name;
 - (void)setAttribute:(NSString *)name :(NSString *)value;
-- (void)setAttribute:(NSString *)name value:(NSString *)value;
+- (void)setAttribute:(NSString *)name value:(NSString *)value AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)removeAttribute:(NSString *)name;
 - (DOMAttr *)getAttributeNode:(NSString *)name;
 - (DOMAttr *)setAttributeNode:(DOMAttr *)newAttr;
 - (void)removeAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
 - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
 - (DOMAttr *)getAttributeNodeNS:(NSString *)namespaceURI :(NSString *)localName;
-- (NSString *)getAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName;
-- (void)setAttributeNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName value:(NSString *)value;
-- (void)removeAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName;
-- (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI localName:(NSString *)localName;
-- (DOMAttr *)getAttributeNodeNS:(NSString *)namespaceURI localName:(NSString *)localName;
+- (NSString *)getAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)setAttributeNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName value:(NSString *)value AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)removeAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMAttr *)getAttributeNodeNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMAttr *)setAttributeNodeNS:(DOMAttr *)newAttr;
 - (BOOL)hasAttribute:(NSString *)name;
 - (BOOL)hasAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
-- (BOOL)hasAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName;
-- (void)scrollIntoView:(BOOL)alignWithTop;
-- (void)scrollIntoViewIfNeeded:(BOOL)centerIfNeeded;
+- (BOOL)hasAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)scrollIntoView:(BOOL)alignWithTop AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)scrollIntoViewIfNeeded:(BOOL)centerIfNeeded AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMEntity : DOMNode
+@interface DOMEntity : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *publicId;
 @property(readonly, copy) NSString *systemId;
 @property(readonly, copy) NSString *notationName;
 @end
 
-@interface DOMEntityReference : DOMNode
+@interface DOMEntityReference : DOMNode WEBKIT_VERSION_1_3
 @end
 
-@interface DOMNamedNodeMap : DOMObject
+@interface DOMNamedNodeMap : DOMObject WEBKIT_VERSION_1_3
 @property(readonly) unsigned length;
 - (DOMNode *)getNamedItem:(NSString *)name;
 - (DOMNode *)setNamedItem:(DOMNode *)node;
 - (DOMNode *)removeNamedItem:(NSString *)name;
 - (DOMNode *)item:(unsigned)index;
 - (DOMNode *)getNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
-- (DOMNode *)getNamedItemNS:(NSString *)namespaceURI localName:(NSString *)localName;
+- (DOMNode *)getNamedItemNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMNode *)setNamedItemNS:(DOMNode *)node;
 - (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
-- (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI localName:(NSString *)localName;
+- (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI localName:(NSString *)localName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMNode : DOMObject
+@interface DOMNode : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *nodeName;
 @property(copy) NSString *nodeValue;
 @property(readonly) unsigned short nodeType;
 @property(readonly, copy) NSString *namespaceURI;
 @property(copy) NSString *prefix;
 @property(readonly, copy) NSString *localName;
-@property(copy) NSString *textContent;
+@property(copy) NSString *textContent AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMNode *)insertBefore:(DOMNode *)newChild :(DOMNode *)refChild;
-- (DOMNode *)insertBefore:(DOMNode *)newChild refChild:(DOMNode *)refChild;
+- (DOMNode *)insertBefore:(DOMNode *)newChild refChild:(DOMNode *)refChild AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMNode *)replaceChild:(DOMNode *)newChild :(DOMNode *)oldChild;
-- (DOMNode *)replaceChild:(DOMNode *)newChild oldChild:(DOMNode *)oldChild;
+- (DOMNode *)replaceChild:(DOMNode *)newChild oldChild:(DOMNode *)oldChild AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (DOMNode *)removeChild:(DOMNode *)oldChild;
 - (DOMNode *)appendChild:(DOMNode *)newChild;
 - (BOOL)hasChildNodes;
 - (DOMNode *)cloneNode:(BOOL)deep;
 - (void)normalize;
 - (BOOL)isSupported:(NSString *)feature :(NSString *)version;
-- (BOOL)isSupported:(NSString *)feature version:(NSString *)version;
+- (BOOL)isSupported:(NSString *)feature version:(NSString *)version AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (BOOL)hasAttributes;
-- (BOOL)isSameNode:(DOMNode *)other;
-- (BOOL)isEqualNode:(DOMNode *)other;
+- (BOOL)isSameNode:(DOMNode *)other AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (BOOL)isEqualNode:(DOMNode *)other AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMNodeList : DOMObject
+@interface DOMNodeList : DOMObject WEBKIT_VERSION_1_3
 @property(readonly) unsigned length;
 - (DOMNode *)item:(unsigned)index;
 @end
 
-@interface DOMNotation : DOMNode
+@interface DOMNotation : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *publicId;
 @property(readonly, copy) NSString *systemId;
 @end
 
-@interface DOMProcessingInstruction : DOMNode
+@interface DOMProcessingInstruction : DOMNode WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *target;
 @property(copy) NSString *data;
 @end
 
-@interface DOMText : DOMCharacterData
+@interface DOMText : DOMCharacterData WEBKIT_VERSION_1_3
 - (DOMText *)splitText:(unsigned)offset;
 @end
 
-@interface DOMHTMLAnchorElement : DOMHTMLElement
+@interface DOMHTMLAnchorElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *accessKey;
 @property(copy) NSString *charset;
 @property(copy) NSString *coords;
 @property(copy) NSString *shape;
 @property(copy) NSString *target;
 @property(copy) NSString *type;
-@property(readonly, copy) NSURL *absoluteLinkURL;
+@property(readonly, copy) NSURL *absoluteLinkURL AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMHTMLAppletElement : DOMHTMLElement
+@interface DOMHTMLAppletElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @property(copy) NSString *alt;
 @property(copy) NSString *archive;
 @property(copy) NSString *width;
 @end
 
-@interface DOMHTMLAreaElement : DOMHTMLElement
+@interface DOMHTMLAreaElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *accessKey;
 @property(copy) NSString *alt;
 @property(copy) NSString *coords;
 @property BOOL noHref;
 @property(copy) NSString *shape;
 @property(copy) NSString *target;
-@property(readonly, copy) NSURL *absoluteLinkURL;
+@property(readonly, copy) NSURL *absoluteLinkURL AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMHTMLBRElement : DOMHTMLElement
+@interface DOMHTMLBRElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *clear;
 @end
 
-@interface DOMHTMLBaseElement : DOMHTMLElement
+@interface DOMHTMLBaseElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *href;
 @property(copy) NSString *target;
 @end
 
-@interface DOMHTMLBaseFontElement : DOMHTMLElement
+@interface DOMHTMLBaseFontElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *color;
 @property(copy) NSString *face;
 @property(copy) NSString *size;
 @end
 
-@interface DOMHTMLBodyElement : DOMHTMLElement
+@interface DOMHTMLBodyElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *aLink;
 @property(copy) NSString *background;
 @property(copy) NSString *bgColor;
 @property(copy) NSString *vLink;
 @end
 
-@interface DOMHTMLButtonElement : DOMHTMLElement
+@interface DOMHTMLButtonElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *accessKey;
 @property BOOL disabled;
 @property(copy) NSString *value;
 @end
 
-@interface DOMHTMLCanvasElement : DOMHTMLElement
+@interface DOMHTMLCanvasElement : DOMHTMLElement WEBKIT_VERSION_3_0
 @property int height;
 @property int width;
 @end
 
-@interface DOMHTMLCollection : DOMObject
+@interface DOMHTMLCollection : DOMObject WEBKIT_VERSION_1_3
 @property(readonly) unsigned length;
 - (DOMNode *)item:(unsigned)index;
 - (DOMNode *)namedItem:(NSString *)name;
 @end
 
-@interface DOMHTMLDListElement : DOMHTMLElement
+@interface DOMHTMLDListElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL compact;
 @end
 
-@interface DOMHTMLDirectoryElement : DOMHTMLElement
+@interface DOMHTMLDirectoryElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL compact;
 @end
 
-@interface DOMHTMLDivElement : DOMHTMLElement
+@interface DOMHTMLDivElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @end
 
-@interface DOMHTMLDocument : DOMDocument
+@interface DOMHTMLDocument : DOMDocument WEBKIT_VERSION_1_3
 - (void)open;
 - (void)close;
 - (void)write:(NSString *)text;
 - (void)writeln:(NSString *)text;
 @end
 
-@interface DOMHTMLElement : DOMElement
+@interface DOMHTMLElement : DOMElement WEBKIT_VERSION_1_3
 @property(copy) NSString *title;
 @property(copy) NSString *idName;
 @property(copy) NSString *lang;
 @property(readonly, retain) DOMHTMLCollection *children;
 @property(copy) NSString *contentEditable;
 @property(readonly) BOOL isContentEditable;
-@property(readonly, copy) NSString *titleDisplayString;
+@property(readonly, copy) NSString *titleDisplayString AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @property int tabIndex;
 - (void)blur;
 - (void)focus;
 @end
 
-@interface DOMHTMLEmbedElement : DOMHTMLElement
+@interface DOMHTMLEmbedElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @property int height;
 @property(copy) NSString *name;
 @property int width;
 @end
 
-@interface DOMHTMLFieldSetElement : DOMHTMLElement
+@interface DOMHTMLFieldSetElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @end
 
-@interface DOMHTMLFontElement : DOMHTMLElement
+@interface DOMHTMLFontElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *color;
 @property(copy) NSString *face;
 @property(copy) NSString *size;
 @end
 
-@interface DOMHTMLFormElement : DOMHTMLElement
+@interface DOMHTMLFormElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLCollection *elements;
 @property(readonly) int length;
 @property(copy) NSString *name;
 - (void)reset;
 @end
 
-@interface DOMHTMLFrameElement : DOMHTMLElement
+@interface DOMHTMLFrameElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *frameBorder;
 @property(copy) NSString *longDesc;
 @property(copy) NSString *marginHeight;
 @property(readonly, retain) DOMDocument *contentDocument;
 @end
 
-@interface DOMHTMLFrameSetElement : DOMHTMLElement
+@interface DOMHTMLFrameSetElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *cols;
 @property(copy) NSString *rows;
 @end
 
-@interface DOMHTMLHRElement : DOMHTMLElement
+@interface DOMHTMLHRElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @property BOOL noShade;
 @property(copy) NSString *size;
 @property(copy) NSString *width;
 @end
 
-@interface DOMHTMLHeadElement : DOMHTMLElement
+@interface DOMHTMLHeadElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *profile;
 @end
 
-@interface DOMHTMLHeadingElement : DOMHTMLElement
+@interface DOMHTMLHeadingElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @end
 
-@interface DOMHTMLHtmlElement : DOMHTMLElement
+@interface DOMHTMLHtmlElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *version;
 @end
 
-@interface DOMHTMLIFrameElement : DOMHTMLElement
+@interface DOMHTMLIFrameElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @property(copy) NSString *frameBorder;
 @property(copy) NSString *height;
 @property(readonly, retain) DOMDocument *contentDocument;
 @end
 
-@interface DOMHTMLImageElement : DOMHTMLElement
+@interface DOMHTMLImageElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *name;
 @property(copy) NSString *align;
 @property(copy) NSString *alt;
 @property(copy) NSString *useMap;
 @property int vspace;
 @property int width;
-@property(readonly, copy) NSString *altDisplayString;
-@property(readonly, copy) NSURL *absoluteImageURL;
+@property(readonly, copy) NSString *altDisplayString AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+@property(readonly, copy) NSURL *absoluteImageURL AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMHTMLInputElement : DOMHTMLElement
+@interface DOMHTMLInputElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *defaultValue;
 @property BOOL defaultChecked;
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *type;
 @property(copy) NSString *useMap;
 @property(copy) NSString *value;
-@property(readonly, copy) NSString *altDisplayString;
-@property(readonly, copy) NSURL *absoluteImageURL;
+@property(readonly, copy) NSString *altDisplayString AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+@property(readonly, copy) NSURL *absoluteImageURL AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)select;
 - (void)click;
 @end
 
-@interface DOMHTMLIsIndexElement : DOMHTMLInputElement
+@interface DOMHTMLIsIndexElement : DOMHTMLInputElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *prompt;
 @end
 
-@interface DOMHTMLLIElement : DOMHTMLElement
+@interface DOMHTMLLIElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *type;
 @property int value;
 @end
 
-@interface DOMHTMLLabelElement : DOMHTMLElement
+@interface DOMHTMLLabelElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *accessKey;
 @property(copy) NSString *htmlFor;
 @end
 
-@interface DOMHTMLLegendElement : DOMHTMLElement
+@interface DOMHTMLLegendElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *accessKey;
 @property(copy) NSString *align;
 @end
 
-@interface DOMHTMLLinkElement : DOMHTMLElement
+@interface DOMHTMLLinkElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL disabled;
 @property(copy) NSString *charset;
 @property(copy) NSString *href;
 @property(copy) NSString *rev;
 @property(copy) NSString *target;
 @property(copy) NSString *type;
-@property(readonly, copy) NSURL *absoluteLinkURL;
+@property(readonly, copy) NSURL *absoluteLinkURL AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMHTMLMapElement : DOMHTMLElement
+@interface DOMHTMLMapElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLCollection *areas;
 @property(copy) NSString *name;
 @end
 
-@interface DOMHTMLMarqueeElement : DOMHTMLElement
+@interface DOMHTMLMarqueeElement : DOMHTMLElement WEBKIT_VERSION_3_0
 - (void)start;
 - (void)stop;
 @end
 
-@interface DOMHTMLMenuElement : DOMHTMLElement
+@interface DOMHTMLMenuElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL compact;
 @end
 
-@interface DOMHTMLMetaElement : DOMHTMLElement
+@interface DOMHTMLMetaElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *content;
 @property(copy) NSString *httpEquiv;
 @property(copy) NSString *name;
 @property(copy) NSString *scheme;
 @end
 
-@interface DOMHTMLModElement : DOMHTMLElement
+@interface DOMHTMLModElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *cite;
 @property(copy) NSString *dateTime;
 @end
 
-@interface DOMHTMLOListElement : DOMHTMLElement
+@interface DOMHTMLOListElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL compact;
 @property int start;
 @property(copy) NSString *type;
 @end
 
-@interface DOMHTMLObjectElement : DOMHTMLElement
+@interface DOMHTMLObjectElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *code;
 @property(copy) NSString *align;
 @property int vspace;
 @property(copy) NSString *width;
 @property(readonly, retain) DOMDocument *contentDocument;
-@property(readonly, copy) NSURL *absoluteImageURL;
+@property(readonly, copy) NSURL *absoluteImageURL AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMHTMLOptGroupElement : DOMHTMLElement
+@interface DOMHTMLOptGroupElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL disabled;
 @property(copy) NSString *label;
 @end
 
-@interface DOMHTMLOptionElement : DOMHTMLElement
+@interface DOMHTMLOptionElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property BOOL defaultSelected;
 @property(readonly, copy) NSString *text;
 @property(copy) NSString *value;
 @end
 
-@interface DOMHTMLOptionsCollection : DOMObject
+@interface DOMHTMLOptionsCollection : DOMObject WEBKIT_VERSION_1_3
 @property unsigned length;
 - (DOMNode *)item:(unsigned)index;
 - (DOMNode *)namedItem:(NSString *)name;
 @end
 
-@interface DOMHTMLParagraphElement : DOMHTMLElement
+@interface DOMHTMLParagraphElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @end
 
-@interface DOMHTMLParamElement : DOMHTMLElement
+@interface DOMHTMLParamElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *name;
 @property(copy) NSString *type;
 @property(copy) NSString *value;
 @property(copy) NSString *valueType;
 @end
 
-@interface DOMHTMLPreElement : DOMHTMLElement
+@interface DOMHTMLPreElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property int width;
 @end
 
-@interface DOMHTMLQuoteElement : DOMHTMLElement
+@interface DOMHTMLQuoteElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *cite;
 @end
 
-@interface DOMHTMLScriptElement : DOMHTMLElement
+@interface DOMHTMLScriptElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *text;
 @property(copy) NSString *htmlFor;
 @property(copy) NSString *event;
 @property(copy) NSString *type;
 @end
 
-@interface DOMHTMLSelectElement : DOMHTMLElement
+@interface DOMHTMLSelectElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *type;
 @property int selectedIndex;
 @property(copy) NSString *value;
 @property(copy) NSString *name;
 @property int size;
 - (void)add:(DOMHTMLElement *)element :(DOMHTMLElement *)before;
-- (void)add:(DOMHTMLElement *)element before:(DOMHTMLElement *)before;
+- (void)add:(DOMHTMLElement *)element before:(DOMHTMLElement *)before AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)remove:(int)index;
 @end
 
-@interface DOMHTMLStyleElement : DOMHTMLElement
+@interface DOMHTMLStyleElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL disabled;
 @property(copy) NSString *media;
 @property(copy) NSString *type;
 @end
 
-@interface DOMHTMLTableCaptionElement : DOMHTMLElement
+@interface DOMHTMLTableCaptionElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @end
 
-@interface DOMHTMLTableCellElement : DOMHTMLElement
+@interface DOMHTMLTableCellElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly) int cellIndex;
 @property(copy) NSString *abbr;
 @property(copy) NSString *align;
 @property(copy) NSString *width;
 @end
 
-@interface DOMHTMLTableColElement : DOMHTMLElement
+@interface DOMHTMLTableColElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @property(copy) NSString *ch;
 @property(copy) NSString *chOff;
 @property(copy) NSString *width;
 @end
 
-@interface DOMHTMLTableElement : DOMHTMLElement
+@interface DOMHTMLTableElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(retain) DOMHTMLTableCaptionElement *caption;
 @property(retain) DOMHTMLTableSectionElement *tHead;
 @property(retain) DOMHTMLTableSectionElement *tFoot;
 - (void)deleteRow:(int)index;
 @end
 
-@interface DOMHTMLTableRowElement : DOMHTMLElement
+@interface DOMHTMLTableRowElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly) int rowIndex;
 @property(readonly) int sectionRowIndex;
 @property(readonly, retain) DOMHTMLCollection *cells;
 - (void)deleteCell:(int)index;
 @end
 
-@interface DOMHTMLTableSectionElement : DOMHTMLElement
+@interface DOMHTMLTableSectionElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *align;
 @property(copy) NSString *ch;
 @property(copy) NSString *chOff;
 - (void)deleteRow:(int)index;
 @end
 
-@interface DOMHTMLTextAreaElement : DOMHTMLElement
+@interface DOMHTMLTextAreaElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *defaultValue;
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *accessKey;
 - (void)select;
 @end
 
-@interface DOMHTMLTitleElement : DOMHTMLElement
+@interface DOMHTMLTitleElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *text;
 @end
 
-@interface DOMHTMLUListElement : DOMHTMLElement
+@interface DOMHTMLUListElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property BOOL compact;
 @property(copy) NSString *type;
 @end
 
-@interface DOMStyleSheetList : DOMObject
+@interface DOMStyleSheetList : DOMObject WEBKIT_VERSION_1_3
 @property(readonly) unsigned length;
 - (DOMStyleSheet *)item:(unsigned)index;
 @end
 
-@interface DOMCSSCharsetRule : DOMCSSRule
+@interface DOMCSSCharsetRule : DOMCSSRule WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *encoding;
 @end
 
-@interface DOMCSSFontFaceRule : DOMCSSRule
+@interface DOMCSSFontFaceRule : DOMCSSRule WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMCSSStyleDeclaration *style;
 @end
 
-@interface DOMCSSImportRule : DOMCSSRule
+@interface DOMCSSImportRule : DOMCSSRule WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *href;
 @property(readonly, retain) DOMMediaList *media;
 @property(readonly, retain) DOMCSSStyleSheet *styleSheet;
 @end
 
-@interface DOMCSSMediaRule : DOMCSSRule
+@interface DOMCSSMediaRule : DOMCSSRule WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMMediaList *media;
 @property(readonly, retain) DOMCSSRuleList *cssRules;
 - (unsigned)insertRule:(NSString *)rule :(unsigned)index;
-- (unsigned)insertRule:(NSString *)rule index:(unsigned)index;
+- (unsigned)insertRule:(NSString *)rule index:(unsigned)index AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)deleteRule:(unsigned)index;
 @end
 
-@interface DOMCSSPageRule : DOMCSSRule
+@interface DOMCSSPageRule : DOMCSSRule WEBKIT_VERSION_1_3
 @property(copy) NSString *selectorText;
 @property(readonly, retain) DOMCSSStyleDeclaration *style;
 @end
 
-@interface DOMCSSPrimitiveValue : DOMCSSValue
+@interface DOMCSSPrimitiveValue : DOMCSSValue WEBKIT_VERSION_1_3
 @property(readonly) unsigned short primitiveType;
 - (void)setFloatValue:(unsigned short)unitType :(float)floatValue;
-- (void)setFloatValue:(unsigned short)unitType floatValue:(float)floatValue;
+- (void)setFloatValue:(unsigned short)unitType floatValue:(float)floatValue AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (float)getFloatValue:(unsigned short)unitType;
 - (void)setStringValue:(unsigned short)stringType :(NSString *)stringValue;
-- (void)setStringValue:(unsigned short)stringType stringValue:(NSString *)stringValue;
+- (void)setStringValue:(unsigned short)stringType stringValue:(NSString *)stringValue AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (NSString *)getStringValue;
 - (DOMCounter *)getCounterValue;
 - (DOMRect *)getRectValue;
 - (DOMRGBColor *)getRGBColorValue;
 @end
 
-@interface DOMRGBColor : DOMObject
+@interface DOMRGBColor : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMCSSPrimitiveValue *red;
 @property(readonly, retain) DOMCSSPrimitiveValue *green;
 @property(readonly, retain) DOMCSSPrimitiveValue *blue;
 @property(readonly, retain) DOMCSSPrimitiveValue *alpha;
-@property(readonly, copy) NSColor *color;
+@property(readonly, copy) NSColor *color AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMCSSRule : DOMObject
+@interface DOMCSSRule : DOMObject WEBKIT_VERSION_1_3
 @property(readonly) unsigned short type;
 @property(copy) NSString *cssText;
 @property(readonly, retain) DOMCSSStyleSheet *parentStyleSheet;
 @property(readonly, retain) DOMCSSRule *parentRule;
 @end
 
-@interface DOMCSSRuleList : DOMObject
+@interface DOMCSSRuleList : DOMObject WEBKIT_VERSION_1_3
 @property(readonly) unsigned length;
 - (DOMCSSRule *)item:(unsigned)index;
 @end
 
-@interface DOMCSSStyleDeclaration : DOMObject
+@interface DOMCSSStyleDeclaration : DOMObject WEBKIT_VERSION_1_3
 @property(copy) NSString *cssText;
 @property(readonly) unsigned length;
 @property(readonly, retain) DOMCSSRule *parentRule;
 - (NSString *)removeProperty:(NSString *)propertyName;
 - (NSString *)getPropertyPriority:(NSString *)propertyName;
 - (void)setProperty:(NSString *)propertyName :(NSString *)value :(NSString *)priority;
-- (void)setProperty:(NSString *)propertyName value:(NSString *)value priority:(NSString *)priority;
+- (void)setProperty:(NSString *)propertyName value:(NSString *)value priority:(NSString *)priority AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (NSString *)item:(unsigned)index;
-- (NSString *)getPropertyShorthand:(NSString *)propertyName;
-- (BOOL)isPropertyImplicit:(NSString *)propertyName;
+- (NSString *)getPropertyShorthand:(NSString *)propertyName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (BOOL)isPropertyImplicit:(NSString *)propertyName AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 @end
 
-@interface DOMCSSStyleRule : DOMCSSRule
+@interface DOMCSSStyleRule : DOMCSSRule WEBKIT_VERSION_1_3
 @property(copy) NSString *selectorText;
 @property(readonly, retain) DOMCSSStyleDeclaration *style;
 @end
 
-@interface DOMStyleSheet : DOMObject
+@interface DOMStyleSheet : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *type;
 @property BOOL disabled;
 @property(readonly, retain) DOMNode *ownerNode;
 @property(readonly, retain) DOMMediaList *media;
 @end
 
-@interface DOMCSSStyleSheet : DOMStyleSheet
+@interface DOMCSSStyleSheet : DOMStyleSheet WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMCSSRule *ownerRule;
 @property(readonly, retain) DOMCSSRuleList *cssRules;
 - (unsigned)insertRule:(NSString *)rule :(unsigned)index;
-- (unsigned)insertRule:(NSString *)rule index:(unsigned)index;
+- (unsigned)insertRule:(NSString *)rule index:(unsigned)index AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)deleteRule:(unsigned)index;
 @end
 
-@interface DOMCSSValue : DOMObject
+@interface DOMCSSValue : DOMObject WEBKIT_VERSION_1_3
 @property(copy) NSString *cssText;
 @property(readonly) unsigned short cssValueType;
 @end
 
-@interface DOMCSSValueList : DOMCSSValue
+@interface DOMCSSValueList : DOMCSSValue WEBKIT_VERSION_1_3
 @property(readonly) unsigned length;
 - (DOMCSSValue *)item:(unsigned)index;
 @end
 
-@interface DOMCSSUnknownRule : DOMCSSRule
+@interface DOMCSSUnknownRule : DOMCSSRule WEBKIT_VERSION_1_3
 @end
 
-@interface DOMCounter : DOMObject
+@interface DOMCounter : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *identifier;
 @property(readonly, copy) NSString *listStyle;
 @property(readonly, copy) NSString *separator;
 @end
 
-@interface DOMRect : DOMObject
+@interface DOMRect : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMCSSPrimitiveValue *top;
 @property(readonly, retain) DOMCSSPrimitiveValue *right;
 @property(readonly, retain) DOMCSSPrimitiveValue *bottom;
 @property(readonly, retain) DOMCSSPrimitiveValue *left;
 @end
 
-@interface DOMEvent : DOMObject
+@interface DOMEvent : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, copy) NSString *type;
 @property(readonly, retain) id <DOMEventTarget> target;
 @property(readonly, retain) id <DOMEventTarget> currentTarget;
 @property(readonly) DOMTimeStamp timeStamp;
 - (void)stopPropagation;
 - (void)preventDefault;
-- (void)initEvent:(NSString *)eventTypeArg canBubbleArg:(BOOL)canBubbleArg cancelableArg:(BOOL)cancelableArg;
+- (void)initEvent:(NSString *)eventTypeArg canBubbleArg:(BOOL)canBubbleArg cancelableArg:(BOOL)cancelableArg AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)initEvent:(NSString *)eventTypeArg :(BOOL)canBubbleArg :(BOOL)cancelableArg;
 @end
 
-@interface DOMUIEvent : DOMEvent
+@interface DOMUIEvent : DOMEvent WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMAbstractView *view;
 @property(readonly) int detail;
-- (void)initUIEvent:(NSString *)type canBubble:(BOOL)canBubble cancelable:(BOOL)cancelable view:(DOMAbstractView *)view detail:(int)detail;
+- (void)initUIEvent:(NSString *)type canBubble:(BOOL)canBubble cancelable:(BOOL)cancelable view:(DOMAbstractView *)view detail:(int)detail AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)initUIEvent:(NSString *)type :(BOOL)canBubble :(BOOL)cancelable :(DOMAbstractView *)view :(int)detail;
 @end
 
-@interface DOMMutationEvent : DOMEvent
+@interface DOMMutationEvent : DOMEvent WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMNode *relatedNode;
 @property(readonly, copy) NSString *prevValue;
 @property(readonly, copy) NSString *newValue;
 @property(readonly, copy) NSString *attrName;
 @property(readonly) unsigned short attrChange;
-- (void)initMutationEvent:(NSString *)type canBubble:(BOOL)canBubble cancelable:(BOOL)cancelable relatedNode:(DOMNode *)relatedNode prevValue:(NSString *)prevValue newValue:(NSString *)newValue attrName:(NSString *)attrName attrChange:(unsigned short)attrChange;
+- (void)initMutationEvent:(NSString *)type canBubble:(BOOL)canBubble cancelable:(BOOL)cancelable relatedNode:(DOMNode *)relatedNode prevValue:(NSString *)prevValue newValue:(NSString *)newValue attrName:(NSString *)attrName attrChange:(unsigned short)attrChange AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)initMutationEvent:(NSString *)type :(BOOL)canBubble :(BOOL)cancelable :(DOMNode *)relatedNode :(NSString *)prevValue :(NSString *)newValue :(NSString *)attrName :(unsigned short)attrChange;
 @end
 
-@interface DOMOverflowEvent : DOMEvent
+@interface DOMOverflowEvent : DOMEvent WEBKIT_VERSION_3_0
 @property(readonly) unsigned short orient;
 @property(readonly) BOOL horizontalOverflow;
 @property(readonly) BOOL verticalOverflow;
 - (void)initOverflowEvent:(unsigned short)orient horizontalOverflow:(BOOL)horizontalOverflow verticalOverflow:(BOOL)verticalOverflow;
 @end
 
-@interface DOMWheelEvent : DOMUIEvent
+@interface DOMWheelEvent : DOMUIEvent WEBKIT_VERSION_3_0
 @property(readonly) int screenX;
 @property(readonly) int screenY;
 @property(readonly) int clientX;
 @property(readonly) int wheelDelta;
 @end
 
-@interface DOMKeyboardEvent : DOMUIEvent
+@interface DOMKeyboardEvent : DOMUIEvent WEBKIT_VERSION_3_0
 @property(readonly, copy) NSString *keyIdentifier;
 @property(readonly) unsigned keyLocation;
 @property(readonly) BOOL ctrlKey;
 - (BOOL)getModifierState:(NSString *)keyIdentifierArg;
 @end
 
-@interface DOMMouseEvent : DOMUIEvent
+@interface DOMMouseEvent : DOMUIEvent WEBKIT_VERSION_1_3
 @property(readonly) int screenX;
 @property(readonly) int screenY;
 @property(readonly) int clientX;
 @property(readonly) BOOL metaKey;
 @property(readonly) unsigned short button;
 @property(readonly, retain) id <DOMEventTarget> relatedTarget;
-- (void)initMouseEvent:(NSString *)type canBubble:(BOOL)canBubble cancelable:(BOOL)cancelable view:(DOMAbstractView *)view detail:(int)detail screenX:(int)screenX screenY:(int)screenY clientX:(int)clientX clientY:(int)clientY ctrlKey:(BOOL)ctrlKey altKey:(BOOL)altKey shiftKey:(BOOL)shiftKey metaKey:(BOOL)metaKey button:(unsigned short)button relatedTarget:(id <DOMEventTarget>)relatedTarget;
+- (void)initMouseEvent:(NSString *)type canBubble:(BOOL)canBubble cancelable:(BOOL)cancelable view:(DOMAbstractView *)view detail:(int)detail screenX:(int)screenX screenY:(int)screenY clientX:(int)clientX clientY:(int)clientY ctrlKey:(BOOL)ctrlKey altKey:(BOOL)altKey shiftKey:(BOOL)shiftKey metaKey:(BOOL)metaKey button:(unsigned short)button relatedTarget:(id <DOMEventTarget>)relatedTarget AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)initMouseEvent:(NSString *)type :(BOOL)canBubble :(BOOL)cancelable :(DOMAbstractView *)view :(int)detail :(int)screenX :(int)screenY :(int)clientX :(int)clientY :(BOOL)ctrlKey :(BOOL)altKey :(BOOL)shiftKey :(BOOL)metaKey :(unsigned short)button :(id <DOMEventTarget>)relatedTarget;
 @end
 
-@interface DOMRange : DOMObject
+@interface DOMRange : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMNode *startContainer;
 @property(readonly) int startOffset;
 @property(readonly, retain) DOMNode *endContainer;
 @property(readonly) int endOffset;
 @property(readonly) BOOL collapsed;
 @property(readonly, retain) DOMNode *commonAncestorContainer;
-@property(readonly, copy) NSString *text;
-- (void)setStart:(DOMNode *)refNode offset:(int)offset;
+@property(readonly, copy) NSString *text AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)setStart:(DOMNode *)refNode offset:(int)offset AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)setStart:(DOMNode *)refNode :(int)offset;
-- (void)setEnd:(DOMNode *)refNode offset:(int)offset;
+- (void)setEnd:(DOMNode *)refNode offset:(int)offset AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (void)setEnd:(DOMNode *)refNode :(int)offset;
 - (void)setStartBefore:(DOMNode *)refNode;
 - (void)setStartAfter:(DOMNode *)refNode;
 - (void)collapse:(BOOL)toStart;
 - (void)selectNode:(DOMNode *)refNode;
 - (void)selectNodeContents:(DOMNode *)refNode;
-- (short)compareBoundaryPoints:(unsigned short)how sourceRange:(DOMRange *)sourceRange;
+- (short)compareBoundaryPoints:(unsigned short)how sourceRange:(DOMRange *)sourceRange AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (short)compareBoundaryPoints:(unsigned short)how :(DOMRange *)sourceRange;
 - (void)deleteContents;
 - (DOMDocumentFragment *)extractContents;
 - (void)detach;
 @end
 
-@interface DOMNodeIterator : DOMObject
+@interface DOMNodeIterator : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMNode *root;
 @property(readonly) unsigned whatToShow;
 @property(readonly, retain) id <DOMNodeFilter> filter;
 - (void)detach;
 @end
 
-@interface DOMMediaList : DOMObject
+@interface DOMMediaList : DOMObject WEBKIT_VERSION_1_3
 @property(copy) NSString *mediaText;
 @property(readonly) unsigned length;
 - (NSString *)item:(unsigned)index;
 - (void)appendMedium:(NSString *)newMedium;
 @end
 
-@interface DOMTreeWalker : DOMObject
+@interface DOMTreeWalker : DOMObject WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMNode *root;
 @property(readonly) unsigned whatToShow;
 @property(readonly, retain) id <DOMNodeFilter> filter;
 - (DOMNode *)nextNode;
 @end
 
-@interface DOMXPathResult : DOMObject
+@interface DOMXPathResult : DOMObject WEBKIT_VERSION_3_0
 @property(readonly) unsigned short resultType;
 @property(readonly) double numberValue;
 @property(readonly, copy) NSString *stringValue;
 - (DOMNode *)snapshotItem:(unsigned)index;
 @end
 
-@interface DOMXPathExpression : DOMObject
-// We should be able to remove the old style version of this method
-// once we can verify that all the internal Apple usages have switched
-// to the new style, because this has never been in a public release.
-- (DOMXPathResult *)evaluate:(DOMNode *)contextNode type:(unsigned short)type inResult:(DOMXPathResult *)inResult;
-- (DOMXPathResult *)evaluate:(DOMNode *)contextNode :(unsigned short)type :(DOMXPathResult *)inResult;
+@interface DOMXPathExpression : DOMObject WEBKIT_VERSION_3_0
+- (DOMXPathResult *)evaluate:(DOMNode *)contextNode type:(unsigned short)type inResult:(DOMXPathResult *)inResult AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (DOMXPathResult *)evaluate:(DOMNode *)contextNode :(unsigned short)type :(DOMXPathResult *)inResult AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED;
 @end
 
 // Protocols
 
-@protocol DOMEventListener <NSObject>
+@protocol DOMEventListener <NSObject> WEBKIT_VERSION_1_3
 - (void)handleEvent:(DOMEvent *)evt;
 @end
 
-@protocol DOMEventTarget <NSObject, NSCopying>
+@protocol DOMEventTarget <NSObject, NSCopying> WEBKIT_VERSION_1_3
 - (void)addEventListener:(NSString *)type :(id <DOMEventListener>)listener :(BOOL)useCapture;
 - (void)removeEventListener:(NSString *)type :(id <DOMEventListener>)listener :(BOOL)useCapture;
-- (void)addEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture;
-- (void)removeEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture;
+- (void)addEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
+- (void)removeEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 - (BOOL)dispatchEvent:(DOMEvent *)event;
 @end
 
-@protocol DOMNodeFilter <NSObject>
+@protocol DOMNodeFilter <NSObject> WEBKIT_VERSION_1_3
 - (short)acceptNode:(DOMNode *)n;
 @end
 
-@protocol DOMXPathNSResolver <NSObject>
+@protocol DOMXPathNSResolver <NSObject> WEBKIT_VERSION_3_0
 - (NSString *)lookupNamespaceURI:(NSString *)prefix;
 @end
index 3af774c..90994e6 100644 (file)
@@ -25,6 +25,9 @@
 
 #import <Foundation/Foundation.h>
 #import <JavaScriptCore/JSBase.h>
+#import <JavaScriptCore/WebKitAvailability.h>
+
+#if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_1_3
 
 // NSObject (WebScripting) -----------------------------------------------------
 
     @discussion Use this method to bridge between the WebScriptObject and 
     JavaScriptCore APIs.
 */
-- (JSObjectRef)JSObject;
+- (JSObjectRef)JSObject AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER;
 
 /*!
     @method callWebScriptMethod:withArguments:
 + (WebUndefined *)undefined;
 
 @end
+
+#endif
index 2b828b0..d929bd1 100644 (file)
@@ -30,6 +30,7 @@ my $module = "";
 my $outputDir = "";
 my %publicInterfaces = ();
 my $newPublicClass = 0;
+my $interfaceAvailabilityVersion = "";
 my $isProtocol = 0;
 my $noImpl = 0;
 my @ivars = ();
@@ -132,7 +133,7 @@ my $fatalError = 0;
 # Default Licence Templates
 my $headerLicenceTemplate = << "EOF";
 /*
- * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Samuel Weinig <sam.weinig\@gmail.com>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -222,15 +223,17 @@ sub ReadPublicInterfaces
     close FILE;
 
     foreach $line (@documentContent) {
-        if (!$isProtocol && $line =~ /^\s*\@interface\s*$class\s*:\s*(\w+)\s*/) {
+        if (!$isProtocol && $line =~ /^\s*\@interface\s*$class\s*:\s*(\w+)\s*([A-Z0-9_]*)/) {
             if ($superClass ne $1) {
                 warn "Public API change. Superclass for \"$class\" differs ($1 != $superClass)";
                 $fatalError = 1;
             }
 
+            $interfaceAvailabilityVersion = $2 if defined $2;
             $found = 1;
             next;
-        } elsif ($isProtocol && $line =~ /^\s*\@protocol $class\s*/) {
+        } elsif ($isProtocol && $line =~ /^\s*\@protocol $class\s*<[^>]+>\s*([A-Z0-9_]*)/) {
+            $interfaceAvailabilityVersion = $1 if defined $1;
             $found = 1;
             next;
         }
@@ -241,12 +244,18 @@ sub ReadPublicInterfaces
             # trim whitspace
             $line =~ s/^\s+//;
             $line =~ s/\s+$//;
-            $publicInterfaces{$line} = 1 if length($line);
+
+            my $availabilityMacro = "";
+            $line =~ s/\s([A-Z0-9_]+)\s*;$/;/;
+            $availabilityMacro = $1 if defined $1;
+
+            $publicInterfaces{$line} = $availabilityMacro if length $line;
         }
     }
 
     # If this class was not found in PublicDOMInterfaces.h then it should be considered as an entirely new public class.
-    $newPublicClass = ! $found;
+    $newPublicClass = !$found;
+    $interfaceAvailabilityVersion = "WEBKIT_VERSION_LATEST" if $newPublicClass;
 }
 
 # Params: 'domClass' struct
@@ -690,14 +699,18 @@ sub GenerateHeader
     push(@headerContentHeader, "\n");
 
     # - INCLUDES -
+    my $includedWebKitAvailabilityHeader = 0;
     unless ($isProtocol) {
         my $parentHeaderName = GetClassHeaderName($parentName);
         push(@headerContentHeader, "#import <WebCore/$parentHeaderName.h>\n");
+        $includedWebKitAvailabilityHeader = 1;
     }
+
     foreach my $parentProtocol (@protocolsToImplement) {
         next if $parentProtocol =~ /^NS/; 
         $parentProtocol = GetClassHeaderName($parentProtocol);
         push(@headerContentHeader, "#import <WebCore/$parentProtocol.h>\n");
+        $includedWebKitAvailabilityHeader = 1;
     }
 
     # Special case needed for legacy support of DOMRange
@@ -705,9 +718,15 @@ sub GenerateHeader
         push(@headerContentHeader, "#import <WebCore/DOMCore.h>\n");
         push(@headerContentHeader, "#import <WebCore/DOMDocument.h>\n");
         push(@headerContentHeader, "#import <WebCore/DOMRangeException.h>\n");
+        $includedWebKitAvailabilityHeader = 1;
     }
 
+    push(@headerContentHeader, "#import <JavaScriptCore/WebKitAvailability.h>\n") unless $includedWebKitAvailabilityHeader;
+
+    my $interfaceAvailabilityVersionCheck = "#if WEBKIT_VERSION_MAX_ALLOWED >= $interfaceAvailabilityVersion\n\n";
+
     push(@headerContentHeader, "\n");
+    push(@headerContentHeader, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion;
 
     # - Add constants.
     if ($numConstants > 0) {
@@ -732,17 +751,11 @@ sub GenerateHeader
     }
 
     # - Begin @interface or @protocol
-    if ($isProtocol) {
-        my $parentProtocols = join(", ", @protocolsToImplement);
-        push(@headerContent, "\@protocol $className <$parentProtocols>\n");
-    } else {
-        if (@protocolsToImplement eq 0) {
-            push(@headerContent, "\@interface $className : $parentName\n");
-        } else {
-             my $parentProtocols = join(", ", @protocolsToImplement);
-             push(@headerContent, "\@interface $className : $parentName <$parentProtocols>\n");
-        }
-    }
+    my $interfaceDeclaration = ($isProtocol ? "\@protocol $className" : "\@interface $className : $parentName");
+    $interfaceDeclaration .= " <" . join(", ", @protocolsToImplement) . ">" if @protocolsToImplement > 0;
+    $interfaceDeclaration .= "\n";
+
+    push(@headerContent, $interfaceDeclaration);
 
     my @headerAttributes = ();
     my @privateHeaderAttributes = ();
@@ -781,10 +794,17 @@ sub GenerateHeader
             my $attributeIsReadonly = ($attribute->type =~ /^readonly/);
 
             my $property = "\@property" . GetPropertyAttributes($attribute->signature->type, $attributeIsReadonly);
-            $property .= " " . $attributeType . ($attributeType =~ /\*$/ ? "" : " ") . $attributeName . ";";
+            $property .= " " . $attributeType . ($attributeType =~ /\*$/ ? "" : " ") . $attributeName;
 
-            my $public = ($publicInterfaces{$property} or $newPublicClass);
-            delete $publicInterfaces{$property};
+            my $publicInterfaceKey = $property . ";";
+
+            my $declarationSuffix = ";\n";
+            if (defined $publicInterfaces{$publicInterfaceKey} and length $publicInterfaces{$publicInterfaceKey}) {
+                $declarationSuffix = " " . $publicInterfaces{$publicInterfaceKey} . $declarationSuffix;
+            }
+
+            my $public = (defined $publicInterfaces{$publicInterfaceKey} or $newPublicClass);
+            delete $publicInterfaces{$publicInterfaceKey};
 
             AddForwardDeclarationsForType($attribute->signature->type, $public);
 
@@ -803,18 +823,18 @@ sub GenerateHeader
             }
 
             if ($buildingForLeopardOrLater) {
-                $property .= "\n";
+                $property .= $declarationSuffix;
                 push(@headerAttributes, $property) if $public;
                 push(@privateHeaderAttributes, $property) unless $public;
             } else {
                 # - GETTER
-                my $getter = "- (" . $attributeType . ")" . $attributeName . ";\n";
+                my $getter = "- (" . $attributeType . ")" . $attributeName . $declarationSuffix;
                 push(@headerAttributes, $getter) if $public;
                 push(@privateHeaderAttributes, $getter) unless $public;
 
                 # - SETTER
                 if (!$attributeIsReadonly) {
-                    my $setter = "- (void)$setterName(" . $attributeType . ")new" . ucfirst($attributeName) . ";\n";
+                    my $setter = "- (void)$setterName(" . $attributeType . ")new" . ucfirst($attributeName) . $declarationSuffix;
                     push(@headerAttributes, $setter) if $public;
                     push(@privateHeaderAttributes, $setter) unless $public;
                 }
@@ -860,7 +880,7 @@ sub GenerateHeader
                 $parameterIndex++;
             }
 
-            $functionSig .= ";";
+            my $publicInterfaceKey = $functionSig . ";";
 
             my $conflict = $conflictMethod{$methodName};
             if ($conflict) {
@@ -868,15 +888,18 @@ sub GenerateHeader
                 $fatalError = 1;
             }
 
-            if ($isProtocol && !$newPublicClass && !defined $publicInterfaces{$functionSig}) {
-                warn "Protocol method $functionSig is not in PublicDOMInterfaces.h. Protocols require all methods to be public";
+            if ($isProtocol && !$newPublicClass && !defined $publicInterfaces{$publicInterfaceKey}) {
+                warn "Protocol method $publicInterfaceKey is not in PublicDOMInterfaces.h. Protocols require all methods to be public";
                 $fatalError = 1;
             }
 
-            my $public = ($publicInterfaces{$functionSig} or $newPublicClass);
-            delete $publicInterfaces{$functionSig};
+            my $declarationSuffix = ";\n";
+            if (defined $publicInterfaces{$publicInterfaceKey} and length $publicInterfaces{$publicInterfaceKey}) {
+                $declarationSuffix = " " . $publicInterfaces{$publicInterfaceKey} . ";\n";
+            }
 
-            $functionSig .= "\n";
+            my $public = (defined $publicInterfaces{$publicInterfaceKey} or $newPublicClass);
+            delete $publicInterfaces{$publicInterfaceKey};
 
             foreach my $type (keys %typesToForwardDeclare) {
                 # add any forward declarations to the public header if a deprecated version will be generated
@@ -884,26 +907,35 @@ sub GenerateHeader
                 AddForwardDeclarationsForType($type, $public) unless $public and $needsDeprecatedVersion;
             }
 
-            push(@headerFunctions, $functionSig) if $public;
-            push(@privateHeaderFunctions, $functionSig) unless $public;
+            my $functionDeclaration = $functionSig . $declarationSuffix;
+
+            push(@headerFunctions, $functionDeclaration) if $public;
+            push(@privateHeaderFunctions, $functionDeclaration) unless $public;
 
             # generate the old style method names with un-named parameters, these methods are deprecated
             if ($needsDeprecatedVersion) {
                 my $deprecatedFunctionSig = $functionSig;
                 $deprecatedFunctionSig =~ s/\s\w+:/ :/g; # remove parameter names
-                my $deprecatedFunctionKey = $deprecatedFunctionSig;
 
-                $deprecatedFunctionSig =~ s/;\n$/ DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;\n/ if $buildingForLeopardOrLater;
-                push(@deprecatedHeaderFunctions, $deprecatedFunctionSig);
+                $publicInterfaceKey = $deprecatedFunctionSig . ";";
+
+                my $availabilityMacro = "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0";
+                if (defined $publicInterfaces{$publicInterfaceKey} and length $publicInterfaces{$publicInterfaceKey}) {
+                    $availabilityMacro = $publicInterfaces{$publicInterfaceKey};
+                }
+
+                $availabilityMacro = "WEBKIT_CATEGORY_METHOD_ANNOTATION($availabilityMacro)" unless $isProtocol;
 
-                $deprecatedFunctionKey =~ s/\n$//; # remove the newline
+                $functionDeclaration = "$deprecatedFunctionSig $availabilityMacro;\n";
 
-                unless (defined $publicInterfaces{$deprecatedFunctionKey}) {
-                    warn "Deprecated method $deprecatedFunctionKey is not in PublicDOMInterfaces.h. All deprecated methods need to be public, or should have the OldStyleObjC IDL attribute removed";
+                push(@deprecatedHeaderFunctions, $functionDeclaration);
+
+                unless (defined $publicInterfaces{$publicInterfaceKey}) {
+                    warn "Deprecated method $publicInterfaceKey is not in PublicDOMInterfaces.h. All deprecated methods need to be public, or should have the OldStyleObjC IDL attribute removed";
                     $fatalError = 1;
                 }
 
-                delete $publicInterfaces{$deprecatedFunctionKey};
+                delete $publicInterfaces{$publicInterfaceKey};
             }
         }
 
@@ -927,16 +959,18 @@ sub GenerateHeader
         push(@headerContent, "\@end\n");
     }
 
+    push(@headerContent, "\n#endif\n") if length $interfaceAvailabilityVersion;
+
     my %alwaysGenerateForNoSVGBuild = map { $_ => 1 } qw(DOMHTMLEmbedElement DOMHTMLObjectElement);
 
-    if (@privateHeaderAttributes > 0 or @privateHeaderFunctions > 0
-            or exists $alwaysGenerateForNoSVGBuild{$className}) {
+    if (@privateHeaderAttributes > 0 or @privateHeaderFunctions > 0 or exists $alwaysGenerateForNoSVGBuild{$className}) {
         # - Private category @interface
         @privateHeaderContentHeader = split("\r", $headerLicenceTemplate);
-        push(@headerContentHeader, "\n");
+        push(@privateHeaderContentHeader, "\n");
 
         my $classHeaderName = GetClassHeaderName($className);
         push(@privateHeaderContentHeader, "#import <WebCore/$classHeaderName.h>\n\n");
+        push(@privateHeaderContentHeader, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion;
 
         @privateHeaderContent = ();
         push(@privateHeaderContent, "\@interface $className (" . $className . "Private)\n");
@@ -944,6 +978,8 @@ sub GenerateHeader
         push(@privateHeaderContent, "\n") if $buildingForLeopardOrLater and @privateHeaderAttributes > 0 and @privateHeaderFunctions > 0;
         push(@privateHeaderContent, @privateHeaderFunctions) if @privateHeaderFunctions > 0;
         push(@privateHeaderContent, "\@end\n");
+
+        push(@privateHeaderContent, "\n#endif\n") if length $interfaceAvailabilityVersion;
     }
 
     unless ($isProtocol) {
@@ -954,36 +990,41 @@ sub GenerateHeader
 
         # Generate interface definitions. 
         @internalHeaderContent = split("\r", $implementationLicenceTemplate);
-        push(@internalHeaderContent, "\n#import <WebCore/$className.h>\n");
+
+        push(@internalHeaderContent, "\n#import <WebCore/$className.h>\n\n");
+        push(@internalHeaderContent, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion;
+
         if ($interfaceName eq "Node" or $interfaceName eq "SVGElementInstance") {
-            push(@internalHeaderContent, "\n\@protocol DOMEventTarget;\n");
+            push(@internalHeaderContent, "\@protocol DOMEventTarget;\n\n");
         }
+
         if ($codeGenerator->IsSVGAnimatedType($interfaceName)) {
             push(@internalHeaderContent, "#import <WebCore/SVGAnimatedTemplate.h>\n\n");
         } elsif ($interfaceName eq "RGBColor") {
             push(@internalHeaderContent, "#import <WebCore/Color.h>\n\n");
         } else {
             if ($podType and $podType ne "float") {
-                push(@internalHeaderContent, "\nnamespace WebCore { class $podType; }\n\n");
+                push(@internalHeaderContent, "namespace WebCore { class $podType; }\n\n");
             } elsif ($interfaceName eq "Node") {
-                push(@internalHeaderContent, "\nnamespace WebCore { class Node; class EventTarget; }\n\n");
+                push(@internalHeaderContent, "namespace WebCore { class Node; class EventTarget; }\n\n");
             } elsif ($interfaceName eq "SVGElementInstance") {
-                push(@internalHeaderContent, "\nnamespace WebCore { class SVGElementInstance; class EventTarget; }\n\n");
+                push(@internalHeaderContent, "namespace WebCore { class SVGElementInstance; class EventTarget; }\n\n");
             } else {
                 my $implClassName = GetImplClassName($interfaceName);
-                push(@internalHeaderContent, "\nnamespace WebCore { class $implClassName; }\n\n");
+                push(@internalHeaderContent, "namespace WebCore { class $implClassName; }\n\n");
             }
         }
 
         push(@internalHeaderContent, "\@interface $className (WebCoreInternal)\n");
         push(@internalHeaderContent, $typeGetterSig . ";\n");
         push(@internalHeaderContent, $typeMakerSig . ";\n");
-        if ($interfaceName eq "Node") {
-            push(@internalHeaderContent, "+ (id <DOMEventTarget>)_wrapEventTarget:(WebCore::EventTarget *)eventTarget;\n");
-        } elsif ($interfaceName eq "SVGElementInstance") {
+
+        if ($interfaceName eq "Node" or $interfaceName eq "SVGElementInstance") {
             push(@internalHeaderContent, "+ (id <DOMEventTarget>)_wrapEventTarget:(WebCore::EventTarget *)eventTarget;\n");
         }
+
         push(@internalHeaderContent, "\@end\n");
+        push(@internalHeaderContent, "\n#endif\n") if length $interfaceAvailabilityVersion;
     }
 }
 
index c5f919d..13f79d9 100644 (file)
@@ -1,3 +1,13 @@
+2008-10-09  Timothy Hatcher  <timothy@apple.com>
+
+        Don't convert JavaScriptCore header include paths to WebKit paths. This was needed
+        back when NPAPI and WebScriptObject migrated from JavaScriptCore. Also remove
+        JavaScriptCore from the VPATH.
+
+        Reviewed by Sam Weinig.
+
+        * MigrateHeaders.make:
+
 2008-10-08  Darin Adler  <darin@apple.com>
 
         Reviewed by Cameron Zwarich.
index b53df99..6d96623 100644 (file)
@@ -25,7 +25,7 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-VPATH = $(WEBCORE_PRIVATE_HEADERS_DIR) $(JAVASCRIPTCORE_PRIVATE_HEADERS_DIR)
+VPATH = $(WEBCORE_PRIVATE_HEADERS_DIR)
 
 INTERNAL_HEADERS_DIR = $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit
 PUBLIC_HEADERS_DIR = $(TARGET_BUILD_DIR)/$(PUBLIC_HEADERS_FOLDER_PATH)
@@ -481,7 +481,7 @@ all : \
 
 endif
 
-REPLACE_RULES = -e s/\<WebCore/\<WebKit/ -e s/\<JavaScriptCore/\<WebKit/ -e s/DOMDOMImplementation/DOMImplementation/ -e 's/\<WebKit\/JSBase.h/\<JavaScriptCore\/JSBase.h/'
+REPLACE_RULES = -e s/\<WebCore/\<WebKit/ -e s/DOMDOMImplementation/DOMImplementation/
 HEADER_MIGRATE_CMD = sed $(REPLACE_RULES) $< $(PROCESS_HEADER_FOR_MACOSX_TARGET_CMD) > $@
 
 ifeq ($(MACOSX_DEPLOYMENT_TARGET),10.4)