Changeset 109515 in webkit


Ignore:
Timestamp:
Mar 1, 2012 10:50:12 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Fix code generators to correctly guard header declarations that have a [Conditional] attribute.
https://bugs.webkit.org/show_bug.cgi?id=79375

Patch by Pablo Flouret <pablof@motorola.com> on 2012-03-01
Reviewed by Kentaro Hara.

In most cases code generators weren't checking the Conditional attribute
when generating code in headers for function/attribute/constants, they
were just guarding against the Conditional for the whole interface.

  • bindings/scripts/CodeGeneratorCPP.pm:

(GenerateHeader):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):

  • bindings/scripts/CodeGeneratorObjC.pm:

(GenerateHeader):

  • bindings/scripts/CodeGeneratorV8.pm:

(GenerateHeader):

  • bindings/scripts/test/CPP/WebDOMTestInterface.h:
  • bindings/scripts/test/CPP/WebDOMTestObj.h:
  • bindings/scripts/test/JS/JSTestInterface.h:

(JSTestInterface):
(WebCore):

  • bindings/scripts/test/JS/JSTestObj.h:

(WebCore):

  • bindings/scripts/test/ObjC/DOMTestInterface.h:
  • bindings/scripts/test/ObjC/DOMTestObj.h:
Location:
trunk/Source/WebCore
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r109514 r109515  
     12012-03-01  Pablo Flouret  <pablof@motorola.com>
     2
     3        Fix code generators to correctly guard header declarations that have a [Conditional] attribute.
     4        https://bugs.webkit.org/show_bug.cgi?id=79375
     5
     6        Reviewed by Kentaro Hara.
     7
     8        In most cases code generators weren't checking the Conditional attribute
     9        when generating code in headers for function/attribute/constants, they
     10        were just guarding against the Conditional for the whole interface.
     11
     12        * bindings/scripts/CodeGeneratorCPP.pm:
     13        (GenerateHeader):
     14        * bindings/scripts/CodeGeneratorJS.pm:
     15        (GenerateHeader):
     16        * bindings/scripts/CodeGeneratorObjC.pm:
     17        (GenerateHeader):
     18        * bindings/scripts/CodeGeneratorV8.pm:
     19        (GenerateHeader):
     20        * bindings/scripts/test/CPP/WebDOMTestInterface.h:
     21        * bindings/scripts/test/CPP/WebDOMTestObj.h:
     22        * bindings/scripts/test/JS/JSTestInterface.h:
     23        (JSTestInterface):
     24        (WebCore):
     25        * bindings/scripts/test/JS/JSTestObj.h:
     26        (WebCore):
     27        * bindings/scripts/test/ObjC/DOMTestInterface.h:
     28        * bindings/scripts/test/ObjC/DOMTestObj.h:
     29
     30
    1312012-03-01  Dana Jansens  <danakj@chromium.org>
    232
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm

    r109195 r109515  
    495495            }
    496496
     497            my $conditionalString = GenerateConditionalString($function->signature);
     498            push(@headerFunctions, "#if ${conditionalString}\n") if $conditionalString;
    497499            push(@headerFunctions, "    ");
    498500            push(@headerFunctions, $functionDeclaration);
     501            push(@headerFunctions, "#endif\n") if $conditionalString;
    499502        }
    500503
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r109200 r109515  
    845845            $numCustomAttributes++ if ($attribute->signature->extendedAttributes->{"CustomSetter"} || $attribute->signature->extendedAttributes->{"JSCustomSetter"});
    846846            if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
     847                my $conditionalString = GenerateConditionalString($attribute->signature);
     848                push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    847849                push(@headerContent, "    JSC::WriteBarrier<JSC::Unknown> m_" . $attribute->signature->name . ";\n");
    848850                $numCachedAttributes++;
    849851                $needsMarkChildren = 1;
     852                push(@headerContent, "#endif\n") if $conditionalString;
    850853            }
    851854        }
     
    862865
    863866        foreach my $attribute (@{$dataNode->attributes}) {
     867            my $conditionalString = GenerateConditionalString($attribute->signature);
    864868            if ($attribute->signature->extendedAttributes->{"Custom"} || $attribute->signature->extendedAttributes->{"JSCustom"} || $attribute->signature->extendedAttributes->{"CustomGetter"} || $attribute->signature->extendedAttributes->{"JSCustomGetter"}) {
     869                push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    865870                my $methodName = $codeGenerator->WK_lcfirst($attribute->signature->name);
    866871                push(@headerContent, "    JSC::JSValue " . $methodName . "(JSC::ExecState*) const;\n");
     872                push(@headerContent, "#endif\n") if $conditionalString;
    867873            }
    868874            if (($attribute->signature->extendedAttributes->{"Custom"} || $attribute->signature->extendedAttributes->{"JSCustom"} || $attribute->signature->extendedAttributes->{"CustomSetter"} || $attribute->signature->extendedAttributes->{"JSCustomSetter"}) && $attribute->type !~ /^readonly/) {
     875                push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    869876                push(@headerContent, "    void set" . $codeGenerator->WK_ucfirst($attribute->signature->name) . "(JSC::ExecState*, JSC::JSValue);\n");
     877                push(@headerContent, "#endif\n") if $conditionalString;
    870878            }
    871879        }
     
    881889            next unless $function->signature->extendedAttributes->{"Custom"} or $function->signature->extendedAttributes->{"JSCustom"};
    882890            next if $function->{overloads} && $function->{overloadIndex} != 1;
     891            my $conditionalString = GenerateConditionalString($function->signature);
     892            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    883893            my $functionImplementationName = $function->signature->extendedAttributes->{"ImplementedAs"} || $codeGenerator->WK_lcfirst($function->signature->name);
    884894            push(@headerContent, "    JSC::JSValue " . $functionImplementationName . "(JSC::ExecState*);\n");
     895            push(@headerContent, "#endif\n") if $conditionalString;
    885896        }
    886897    }
     
    10681079        foreach my $function (@{$dataNode->functions}) {
    10691080            next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
     1081            my $conditionalString = GenerateConditionalString($function->signature);
     1082            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    10701083            my $functionName = GetFunctionName($className, $function);
    10711084            push(@headerContent, "JSC::EncodedJSValue JSC_HOST_CALL ${functionName}(JSC::ExecState*);\n");
     1085            push(@headerContent, "#endif\n") if $conditionalString;
    10721086        }
    10731087    }
     
    10761090        push(@headerContent,"// Attributes\n\n");
    10771091        foreach my $attribute (@{$dataNode->attributes}) {
     1092            my $conditionalString = GenerateConditionalString($attribute->signature);
     1093            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    10781094            my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($attribute->signature->name) . ($attribute->signature->type =~ /Constructor$/ ? "Constructor" : "");
    10791095            push(@headerContent, "JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);\n");
     
    10821098                push(@headerContent, "void ${setter}(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);\n");
    10831099            }
     1100            push(@headerContent, "#endif\n") if $conditionalString;
    10841101        }
    10851102       
     
    10981115        push(@headerContent,"// Constants\n\n");
    10991116        foreach my $constant (@{$dataNode->constants}) {
     1117            my $conditionalString = GenerateConditionalString($constant);
     1118            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    11001119            my $getter = "js" . $interfaceName . $codeGenerator->WK_ucfirst($constant->name);
    1101             my $conditional = $constant->extendedAttributes->{"Conditional"};
    1102             if ($conditional) {
    1103                 my $conditionalString = $codeGenerator->GenerateConditionalStringFromAttributeValue($conditional);
    1104                 push(@headerContent, "#if ${conditionalString}\n");
    1105             }
    11061120            push(@headerContent, "JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);\n");
    1107             push(@headerContent, "#endif\n") if $conditional;
     1121            push(@headerContent, "#endif\n") if $conditionalString;
    11081122        }
    11091123    }
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm

    r107299 r109515  
    921921            }
    922922
     923            my $functionConditionalString = GenerateConditionalString($function->signature);
     924            if ($functionConditionalString) {
     925                push(@headerFunctions, "#if ${functionConditionalString}\n") if $public;
     926                push(@privateHeaderFunctions, "#if ${functionConditionalString}\n") unless $public;
     927                push(@deprecatedHeaderFunctions, "#if ${functionConditionalString}\n") if $needsDeprecatedVersion;
     928            }
     929
    923930            push(@headerFunctions, $functionDeclaration) if $public;
    924931            push(@privateHeaderFunctions, $functionDeclaration) unless $public;
     
    948955
    949956                delete $publicInterfaces{$publicInterfaceKey};
     957            }
     958
     959            if ($functionConditionalString) {
     960                push(@headerFunctions, "#endif\n") if $public;
     961                push(@privateHeaderFunctions, "#endif\n") unless $public;
     962                push(@deprecatedHeaderFunctions, "#endif\n") if $needsDeprecatedVersion;
    950963            }
    951964        }
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm

    r108757 r109515  
    366366
    367367        if (($attrExt->{"Custom"} || $attrExt->{"V8Custom"}) && !$attrExt->{"ImplementedBy"} && $function->{overloadIndex} == 1) {
     368            my $conditionalString = GenerateConditionalString($function->signature);
     369            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    368370            push(@headerContent, <<END);
    369371    static v8::Handle<v8::Value> ${name}Callback(const v8::Arguments&);
    370372END
     373            push(@headerContent, "#endif // ${conditionalString}\n") if $conditionalString;
    371374        }
    372375
     
    385388        my $name = $attribute->signature->name;
    386389        my $attrExt = $attribute->signature->extendedAttributes;
     390        my $conditionalString = GenerateConditionalString($attribute->signature);
    387391        if (($attrExt->{"V8CustomGetter"} || $attrExt->{"CustomGetter"} ||
    388392             $attrExt->{"V8Custom"} || $attrExt->{"Custom"}) &&
    389393            !$attrExt->{"ImplementedBy"}) {
     394            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    390395            push(@headerContent, <<END);
    391396    static v8::Handle<v8::Value> ${name}AccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo&);
    392397END
     398            push(@headerContent, "#endif // ${conditionalString}\n") if $conditionalString;
    393399        }
    394400        if (($attrExt->{"V8CustomSetter"} || $attrExt->{"CustomSetter"} ||
    395401             $attrExt->{"V8Custom"} || $attrExt->{"Custom"}) &&
    396402            !$attrExt->{"ImplementedBy"}) {
     403            push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
    397404            push(@headerContent, <<END);
    398405    static void ${name}AccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value>, const v8::AccessorInfo&);
    399406END
     407            push(@headerContent, "#endif // ${conditionalString}\n") if $conditionalString;
    400408        }
    401409        if ($attrExt->{"V8EnabledAtRuntime"}) {
  • trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h

    r108757 r109515  
    6565#endif
    6666
     67#if ENABLE(Condition11) || ENABLE(Condition12)
    6768    void supplementalMethod1();
     69#endif
     70#if ENABLE(Condition11) || ENABLE(Condition12)
    6871    void supplementalMethod4();
     72#endif
    6973
    7074    WebCore::TestInterface* impl() const;
  • trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h

    r109502 r109515  
    161161    void methodWithOptionalStringIsUndefined(const WebDOMString& str);
    162162    void methodWithOptionalStringIsNullString(const WebDOMString& str);
     163#if ENABLE(Condition1)
    163164    WebDOMString conditionalMethod1();
     165#endif
     166#if ENABLE(Condition1) && ENABLE(Condition2)
    164167    void conditionalMethod2();
     168#endif
     169#if ENABLE(Condition1) || ENABLE(Condition2)
    165170    void conditionalMethod3();
     171#endif
    166172    void classMethod();
    167173    int classMethodWithOptional(int arg);
     174#if ENABLE(Condition1)
    168175    void overloadedMethod1(int arg);
     176#endif
     177#if ENABLE(Condition1)
    169178    void overloadedMethod1(const WebDOMString& type);
     179#endif
    170180    void convert1(const WebDOMa& );
    171181    void convert2(const WebDOMb& );
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h

    r108757 r109515  
    5959
    6060    // Custom attributes
     61#if ENABLE(Condition11) || ENABLE(Condition12)
    6162    JSC::JSValue supplementalStr3(JSC::ExecState*) const;
     63#endif
     64#if ENABLE(Condition11) || ENABLE(Condition12)
    6265    void setSupplementalStr3(JSC::ExecState*, JSC::JSValue);
     66#endif
    6367
    6468    // Custom functions
     69#if ENABLE(Condition11) || ENABLE(Condition12)
    6570    JSC::JSValue supplementalMethod3(JSC::ExecState*);
     71#endif
    6672    TestInterface* impl() const { return m_impl; }
    6773    void releaseImpl() { m_impl->deref(); m_impl = 0; }
     
    150156// Functions
    151157
     158#if ENABLE(Condition11) || ENABLE(Condition12)
    152159JSC::EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod1(JSC::ExecState*);
     160#endif
     161#if ENABLE(Condition11) || ENABLE(Condition12)
    153162JSC::EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod2(JSC::ExecState*);
     163#endif
     164#if ENABLE(Condition11) || ENABLE(Condition12)
    154165JSC::EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod3(JSC::ExecState*);
     166#endif
     167#if ENABLE(Condition11) || ENABLE(Condition12)
    155168JSC::EncodedJSValue JSC_HOST_CALL jsTestInterfaceConstructorFunctionSupplementalMethod4(JSC::ExecState*);
     169#endif
    156170// Attributes
    157171
     172#if ENABLE(Condition11) || ENABLE(Condition12)
    158173JSC::JSValue jsTestInterfaceSupplementalStr1(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
     174#endif
     175#if ENABLE(Condition11) || ENABLE(Condition12)
    159176JSC::JSValue jsTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    160177void setJSTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     178#endif
     179#if ENABLE(Condition11) || ENABLE(Condition12)
    161180JSC::JSValue jsTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    162181void setJSTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     182#endif
     183#if ENABLE(Condition11) || ENABLE(Condition12)
    163184JSC::JSValue jsTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    164185void setJSTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     186#endif
    165187JSC::JSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    166188// Constants
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h

    r107994 r109515  
    185185JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(JSC::ExecState*);
    186186JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(JSC::ExecState*);
     187#if ENABLE(Condition1)
    187188JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod1(JSC::ExecState*);
     189#endif
     190#if ENABLE(Condition1) && ENABLE(Condition2)
    188191JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod2(JSC::ExecState*);
     192#endif
     193#if ENABLE(Condition1) || ENABLE(Condition2)
    189194JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod3(JSC::ExecState*);
     195#endif
    190196JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(JSC::ExecState*);
    191197JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionClassMethod(JSC::ExecState*);
    192198JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionClassMethodWithOptional(JSC::ExecState*);
     199#if ENABLE(Condition1)
    193200JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionOverloadedMethod1(JSC::ExecState*);
     201#endif
    194202JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUnsignedLongArray(JSC::ExecState*);
    195203JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionGetSVGDocument(JSC::ExecState*);
     
    270278JSC::JSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    271279void setJSTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     280#if ENABLE(Condition1)
    272281JSC::JSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    273282void setJSTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     283#endif
     284#if ENABLE(Condition1) && ENABLE(Condition2)
    274285JSC::JSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    275286void setJSTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     287#endif
     288#if ENABLE(Condition1) || ENABLE(Condition2)
    276289JSC::JSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    277290void setJSTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     291#endif
     292#if ENABLE(Condition1)
    278293JSC::JSValue jsTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    279294void setJSTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     295#endif
     296#if ENABLE(Condition1) && ENABLE(Condition2)
    280297JSC::JSValue jsTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    281298void setJSTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     299#endif
     300#if ENABLE(Condition1) || ENABLE(Condition2)
    282301JSC::JSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    283302void setJSTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     303#endif
    284304JSC::JSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    285305JSC::JSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
  • trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h

    r108757 r109515  
    5959- (void)setSupplementalNode:(DOMNode *)newSupplementalNode;
    6060#endif
     61#if ENABLE(Condition11) || ENABLE(Condition12)
    6162- (void)supplementalMethod1;
     63#endif
     64#if ENABLE(Condition11) || ENABLE(Condition12)
    6265- (DOMTestObj *)supplementalMethod2:(NSString *)strArg objArg:(DOMTestObj *)objArg;
     66#endif
     67#if ENABLE(Condition11) || ENABLE(Condition12)
    6368- (void)supplementalMethod3;
     69#endif
     70#if ENABLE(Condition11) || ENABLE(Condition12)
    6471- (void)supplementalMethod4;
     72#endif
    6573@end
    6674
  • trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h

    r107994 r109515  
    196196- (void)methodWithOptionalStringIsUndefined:(NSString *)str;
    197197- (void)methodWithOptionalStringIsNullString:(NSString *)str;
     198#if ENABLE(Condition1)
    198199- (NSString *)conditionalMethod1;
     200#endif
     201#if ENABLE(Condition1) && ENABLE(Condition2)
    199202- (void)conditionalMethod2;
     203#endif
     204#if ENABLE(Condition1) || ENABLE(Condition2)
    200205- (void)conditionalMethod3;
     206#endif
    201207- (void)classMethod;
    202208- (int)classMethodWithOptional:(int)arg;
     209#if ENABLE(Condition1)
    203210- (void)overloadedMethod1:(int)arg;
     211#endif
     212#if ENABLE(Condition1)
    204213- (void)overloadedMethod1:(NSString *)type;
     214#endif
    205215- (DOMSVGDocument *)getSVGDocument;
    206216- (void)convert1:(DOMa *);
Note: See TracChangeset for help on using the changeset viewer.