Reviewed by Tim H.
authorweinig <weinig@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 21 Oct 2006 13:34:58 +0000 (13:34 +0000)
committerweinig <weinig@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 21 Oct 2006 13:34:58 +0000 (13:34 +0000)
        Fix for http://bugs.webkit.org/show_bug.cgi?id=11372
        Auto-generate a few more Objective-C DOM methods.

        - Auto-generate getMatchedCSSRules and getComputedStyle methods.

        * bindings/objc/DOMCSS.h:
        * bindings/objc/DOMCSS.mm:
        * bindings/objc/DOMExtensions.h:
        * bindings/objc/PublicDOMInterfaces.h:
        * bindings/scripts/CodeGeneratorObjC.pm:
        * dom/Document.idl:
        * page/DOMWindow.idl:

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

WebCore/ChangeLog
WebCore/bindings/objc/DOMCSS.h
WebCore/bindings/objc/DOMCSS.mm
WebCore/bindings/objc/DOMExtensions.h
WebCore/bindings/objc/PublicDOMInterfaces.h
WebCore/bindings/scripts/CodeGeneratorObjC.pm
WebCore/dom/Document.idl
WebCore/page/DOMWindow.idl

index 51dfd47a727921cb1fe79a1fc31591c078dbf487..44cc3a5971849003b0e66c261968fc0861f7cfbe 100644 (file)
@@ -1,3 +1,20 @@
+2006-10-21  Sam Weinig  <sam.weinig@gmail.com>
+
+        Reviewed by Tim H.
+
+        Fix for http://bugs.webkit.org/show_bug.cgi?id=11372
+        Auto-generate a few more Objective-C DOM methods.
+
+        - Auto-generate getMatchedCSSRules and getComputedStyle methods.
+
+        * bindings/objc/DOMCSS.h:
+        * bindings/objc/DOMCSS.mm:
+        * bindings/objc/DOMExtensions.h:
+        * bindings/objc/PublicDOMInterfaces.h:
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        * dom/Document.idl:
+        * page/DOMWindow.idl:
+
 2006-10-21  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Reviewed by aliu, landed by aliu.
index 3da866fb3ba9ef104b717a4bbd164e27780352f9..7bae9ed5f2dcc99121d28904d0bbb79c57de4a0b 100644 (file)
 #import <WebCore/DOMRGBColor.h>
 #import <WebCore/DOMRect.h>
 
-@interface DOMDocument (DOMViewCSS)
-- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
-@end
-
-@interface DOMDocument (DOMViewCSSDeprecated)
-#ifndef BUILDING_ON_TIGER
-- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)elt :(NSString *)pseudoElt DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
-#else
-- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)elt :(NSString *)pseudoElt;
-#endif
-@end
-
 @interface DOMCSSStyleDeclaration (DOMCSS2Properties)
 - (NSString *)azimuth;
 - (void)setAzimuth:(NSString *)azimuth;
index 37bc54780b15088c850d534ca3899e787139e4ba..2fe657d761c451c67a8ae0896d2e1b72ca87e524 100644 (file)
 #import "CSSValueList.h"
 #import "DOMInternal.h"
 #import "DOMPrivate.h"
-#import "DOMWindow.h"
-#import "Document.h"
 #import "StyleSheet.h"
 #import <objc/objc-class.h>
-#import <wtf/GetPtr.h>
 
 #ifdef SVG_SUPPORT
 #import "DOMSVGColor.h"
 #import "DOMSVGPaint.h"
 #endif
 
-namespace WebCore {
-    typedef DOMWindow AbstractView;
-}
-
 //------------------------------------------------------------------------------------------
 // DOMStyleSheet
 
@@ -1448,45 +1441,3 @@ namespace WebCore {
 }
 
 @end
-
-
-//------------------------------------------------------------------------------------------
-// DOMDocument CSS Extensions
-
-@implementation DOMDocument (DOMViewCSS)
-
-- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement
-{
-    WebCore::AbstractView* dv = [self _document]->defaultView();
-
-    if (!dv)
-        return nil;
-    
-    return [DOMCSSStyleDeclaration _CSSStyleDeclarationWith:WTF::getPtr(dv->getComputedStyle([element _element], pseudoElement))];
-}
-
-@end
-
-@implementation DOMDocument (DOMViewCSSDeprecated)
-
-- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)elt :(NSString *)pseudoElt
-{
-    return [self getComputedStyle:elt pseudoElement:pseudoElt];
-}
-
-@end
-
-@implementation DOMDocument (DOMDocumentCSSExtensions)
-
-- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement
-{
-    WebCore::AbstractView* dv = [self _document]->defaultView();
-
-    if (!dv)
-        return nil;
-    
-    // The parameter of "false" is handy for the DOM inspector and lets us see user agent and user rules.
-    return [DOMCSSRuleList _CSSRuleListWith:WTF::getPtr(dv->getMatchedCSSRules([element _element], pseudoElement, false))];
-}
-
-@end
index 55909c9f5e7a4102563bdbcc9610d508e1086afc..8188c3090e5f224f8f7d158a23128c863f05ad8f 100644 (file)
 - (NSArray *)lineBoxRects;
 @end
 
-@interface DOMDocument (DOMDocumentCSSExtensions)
-- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
-@end
-
 @interface DOMElement (DOMElementAppKitExtensions)
 - (NSImage *)image;
 @end
index e10f25d6b932adb012e945d710d6919fa8bc310e..ff34fb47147dffd76bb80c513ed407c888fa5cbf 100644 (file)
 - (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;
 - (DOMElement *)getElementById:(NSString *)elementId;
 - (DOMEvent *)createEvent:(NSString *)eventType;
 - (DOMRange *)createRange;
+- (DOMCSSStyleDeclaration *)createCSSStyleDeclaration;
 - (DOMCSSStyleDeclaration *)getOverrideStyle:(DOMElement *)element :(NSString *)pseudoElement;
 - (DOMCSSStyleDeclaration *)getOverrideStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
-- (DOMCSSStyleDeclaration *)createCSSStyleDeclaration;
-- (DOMNode *)adoptNode:(DOMNode *)source;
+- (DOMCSSStyleDeclaration *)getComputedStyle:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
+- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
+- (DOMCSSRuleList *)getMatchedCSSRules:(DOMElement *)element pseudoElement:(NSString *)pseudoElement authorOnly:(BOOL)authorOnly;
 #ifdef XPATH_SUPPORT
 - (DOMXPathExpression *)createExpression:(NSString *)expression :(id <DOMXPathNSResolver>)resolver;
 - (DOMXPathExpression *)createExpression:(NSString *)expression resolver:(id <DOMXPathNSResolver>)resolver;
index f9659f2b50980a770941e04c1356ce6c33349c88..eaa345156d74de7b9f24bca7d8da8b6e34ea2cb7 100644 (file)
@@ -1096,7 +1096,10 @@ sub GenerateImplementation
                 $parameterIndex++;
             }
 
+            push(@parameterNames, "ec") if $raisesExceptions;
+
             my @functionContent = ();
+            my $caller = "IMPL";
 
             # special case the XPathNSResolver
             if (defined $needsCustom{"XPathNSResolver"}) {
@@ -1116,9 +1119,16 @@ sub GenerateImplementation
                 $implIncludes{"Node.h"} = 1;
             }
 
-            push(@parameterNames, "ec") if $raisesExceptions;
+            if ($function->signature->extendedAttributes->{"UsesView"}) {
+                push(@functionContent, "    WebCore::DOMWindow* dv = $caller->defaultView();\n");
+                push(@functionContent, "    if (!dv)\n");
+                push(@functionContent, "        return nil;\n");
+                $implIncludes{"DOMWindow.h"} = 1;
+                $caller = "dv";
+            }
+
 
-            my $content = "IMPL->" . $functionName . "(" . join(", ", @parameterNames) . ")";
+            my $content = $caller . "->" . $functionName . "(" . join(", ", @parameterNames) . ")";
 
             if ($returnType eq "void") {
                 # Special case 'void' return type.
index 47dca39cb3298a2aac46aeab3898fd9cd6c4cec5..d4a6f38efc725f7cd4a71a66188fcdc55ce453f1 100644 (file)
@@ -23,11 +23,11 @@ module core {
     interface [LegacyParent=KJS::DOMEventTargetNode, GenerateConstructor] Document : EventTargetNode {
 
         // DOM Level 1 Core
-        
+
         readonly attribute DocumentType doctype;
         readonly attribute DOMImplementation implementation;
         readonly attribute Element documentElement;
-        
+
         Element            createElement(in DOMString tagName)
             raises (DOMException);
         DocumentFragment   createDocumentFragment();
@@ -153,6 +153,20 @@ module core {
         CSSStyleDeclaration createCSSStyleDeclaration();
 #endif
 
+#if defined(LANGUAGE_OBJECTIVE_C)
+        // DOM Level 2 Style Interface
+        [OldStyleObjC, UsesView] CSSStyleDeclaration getComputedStyle(in Element element,
+                                                                      in DOMString pseudoElement);
+
+        // WebKit extension
+        // FIXME: remove the first version once [Optional] is implemented for Objective-C.
+        [UsesView] CSSRuleList getMatchedCSSRules(in Element element,
+                                                  in DOMString pseudoElement);
+        [UsesView] CSSRuleList getMatchedCSSRules(in Element element,
+                                                  in DOMString pseudoElement,
+                                                  in [Optional] boolean authorOnly);
+#endif
+
     };
 
 }
index 026f263af401f838a832ae27b8f1a957025d2104..f1d6754cbdecddf9215242260d502ec775b2b148 100644 (file)
@@ -30,7 +30,7 @@ module window {
     interface [LegacyParent=KJS::Window, DoNotCache] DOMWindow {
         // DOM Level 2 AbstractView Interface
         readonly attribute Document document;
-        
+
         // DOM Level 2 Style Interface
         CSSStyleDeclaration getComputedStyle(in Element element,
                                              in DOMString pseudoElement);
@@ -40,7 +40,7 @@ module window {
                                        in DOMString pseudoElement,
                                        in [Optional] boolean authorOnly);
         readonly attribute double devicePixelRatio;
-        
+
         // Global constructors
         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
         attribute CSSRuleConstructor CSSRule;
@@ -58,13 +58,13 @@ module window {
         attribute NodeFilterConstructor NodeFilter;
         attribute RangeConstructor Range;
         attribute RangeExceptionConstructor RangeException;
-        
+
         // Mozilla has a separate XMLDocument object for XML documents. 
         // We just use Document for this.
         attribute DocumentConstructor XMLDocument;
-        
+
         attribute XMLSerializerConstructor XMLSerializer;
-        
+
 #ifdef XPATH_SUPPORT
         attribute XPathEvaluatorConstructor XPathEvaluator;
         attribute XPathResultConstructor XPathResult;