REGRESSION(r138263): Don't use fastGetAttribute for HTMLNames::classAttr because...
authorarv@chromium.org <arv@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Dec 2012 19:16:00 +0000 (19:16 +0000)
committerarv@chromium.org <arv@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Dec 2012 19:16:00 +0000 (19:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=105555

Reviewed by Tony Chang.

The code generated generated code that uses fastGetAttribute for the className WebIDL attribute getter.
However, this attribute is animatable in SVG so we cannot use the fast function for it.

No new tests. The assert is no longer hit.

* bindings/scripts/CodeGenerator.pm:

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

Source/WebCore/ChangeLog
Source/WebCore/bindings/scripts/CodeGenerator.pm

index 910051a..21f3770 100644 (file)
@@ -1,3 +1,17 @@
+2012-12-20  Erik Arvidsson  <arv@chromium.org>
+
+        REGRESSION(r138263): Don't use fastGetAttribute for HTMLNames::classAttr because it breaks on SVGElement
+        https://bugs.webkit.org/show_bug.cgi?id=105555
+
+        Reviewed by Tony Chang.
+
+        The code generated generated code that uses fastGetAttribute for the className WebIDL attribute getter.
+        However, this attribute is animatable in SVG so we cannot use the fast function for it.
+
+        No new tests. The assert is no longer hit.
+
+        * bindings/scripts/CodeGenerator.pm:
+
 2012-12-20  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [GTK] Add API to set a TLS errors policy to WebKit2 GTK+ API
index 68b3115..92a08a9 100644 (file)
@@ -567,10 +567,14 @@ sub ContentAttributeName
 
 sub CanUseFastAttribute
 {
-    my ($generator, $attribute) = @_;
+    my ($generator, $attribute, $contentAttributeName) = @_;
     my $attributeType = $attribute->signature->type;
     # HTMLNames::styleAttr cannot be used with fast{Get,Has}Attribute but we do not [Reflect] the
     # style attribute.
+
+    # Unfortunately SVG makes class animatable.
+    return 0 if $contentAttributeName eq "WebCore::HTMLNames::classAttr";
+
     return !$generator->IsSVGAnimatedType($attributeType);
 }
 
@@ -589,7 +593,7 @@ sub GetterExpression
         $functionName = "getURLAttribute";
     } elsif ($attribute->signature->type eq "boolean") {
         my $namespace = $generator->NamespaceForAttributeName($interfaceName, $contentAttributeName);
-        if ($generator->CanUseFastAttribute($attribute)) {
+        if ($generator->CanUseFastAttribute($attribute, $contentAttributeName)) {
             $functionName = "fastHasAttribute";
         } else {
             $functionName = "hasAttribute";
@@ -599,7 +603,7 @@ sub GetterExpression
     } elsif ($attribute->signature->type eq "unsigned long") {
         $functionName = "getUnsignedIntegralAttribute";
     } else {
-        if ($generator->CanUseFastAttribute($attribute)) {
+        if ($generator->CanUseFastAttribute($attribute, $contentAttributeName)) {
             $functionName = "fastGetAttribute";
         } else {
             $functionName = "getAttribute";