Reviewed by Maciej.
authorzimmermann <zimmermann@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Mar 2007 19:28:12 +0000 (19:28 +0000)
committerzimmermann <zimmermann@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Mar 2007 19:28:12 +0000 (19:28 +0000)
Make JS function calls on POD-types (ie. SVGLength) take effect.
Calling ie. newValueInSpecifiedUnits on SVGLength works as expected.

This worked fine before we switched to SVGLength POD type, so this
can be considered as P1 regression fix.

Partly fix svg/hixie/dynamic/005-broken.svg. We match Opera now though
it's not yet completly fixed. Setting baseVal attribute on SVGAnimatedString
doesn't work as expected - needs a seperated fix.

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

LayoutTests/ChangeLog
LayoutTests/svg/hixie/dynamic/005-broken-expected.png
LayoutTests/svg/hixie/dynamic/005-broken-expected.txt
WebCore/ChangeLog
WebCore/bindings/scripts/CodeGeneratorJS.pm

index 13ad70c64986f4ae388999d474e6be0b95674da9..9f1db4f990349815f6d37fc2d5ba2119bc8f89a4 100644 (file)
@@ -1,3 +1,12 @@
+2007-03-19  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Maciej.
+
+        Partly fix svg/hixie/dynamic/005-broken.svg. Update test results.
+
+        * svg/hixie/dynamic/005-broken-expected.png:
+        * svg/hixie/dynamic/005-broken-expected.txt:
+
 2007-03-19  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Reviewed by Maciej.
index af4d896b5fa66a5db4c8d2fb81bc27ffbca239f2..371fe6660063b2951027bb52f5da25b7b870fad4 100644 (file)
Binary files a/LayoutTests/svg/hixie/dynamic/005-broken-expected.png and b/LayoutTests/svg/hixie/dynamic/005-broken-expected.png differ
index 0c3511b3b1cfa7f4660068a42b6bb2fcbb500d9d..189aa7def6ac7dfe24fd2ac56774e1266d781ce0 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-    RenderSVGContainer {svg} at (0,0) size 150x300
+    RenderSVGContainer {svg} at (0,0) size 300x300
       RenderPath {rect} at (0,0) size 150x300 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00L150.00,0.00L150.00,300.00L0.00,300.00"]
-      RenderPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#008000]}] [data=""]
-      RenderPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#000000]}] [data=""]
+      RenderPath {rect} at (0,0) size 300x150 [fill={[type=SOLID] [color=#008000]}] [data="M0.00,0.00L300.00,0.00L300.00,150.00L0.00,150.00"]
+      RenderPath {rect} at (0,150) size 300x150 [fill={[type=SOLID] [color=#000000]}] [data="M0.00,150.00L300.00,150.00L300.00,300.00L0.00,300.00"]
index 82cfc534b9baa88497abd294d3e75d8f555953c5..2f18188359ac262152b7a5863f0b4babb706dec4 100644 (file)
@@ -1,3 +1,19 @@
+2007-03-18  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Maciej.
+
+        Make JS function calls on POD-types (ie. SVGLength) take effect.
+        Calling ie. newValueInSpecifiedUnits on SVGLength works as expected.
+
+        This worked fine before we switched to SVGLength POD type, so this
+        can be considered as P1 regression fix.
+
+        Partly fix svg/hixie/dynamic/005-broken.svg. We match Opera now though
+        it's not yet completly fixed. Setting baseVal attribute on SVGAnimatedString
+        doesn't work as expected - needs a seperated fix.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+
 2007-03-19  Adele Peterson  <adele@apple.com>
 
         Reviewed by Adam.
index 23b9ad399842ce2ce34c3bbe9d6792899dfdccf6..66e59b638d9946d31376b6e9ea518c6e1c1d50c2 100644 (file)
@@ -992,7 +992,8 @@ sub GenerateImplementation
         push(@implContent, "      return throwError(exec, TypeError);\n\n");
 
         if ($podType) {
-            push(@implContent, "    $podType& imp(*static_cast<$className*>(thisObj)->impl());\n\n");
+            push(@implContent, "    JSSVGPODTypeWrapper<$podType>* wrapper = static_cast<$className*>(thisObj)->impl();\n");
+            push(@implContent, "    $podType& imp(*wrapper);\n\n");
         } else {
             push(@implContent, "    $implClassName* imp = static_cast<$implClassName*>(static_cast<$className*>(thisObj)->impl());\n\n");
         }
@@ -1030,7 +1031,7 @@ sub GenerateImplementation
 
                 if ($hasOptionalArguments) {
                     push(@implContent, "        if (argsCount < " . ($paramIndex + 1) . ") {\n");
-                    GenerateImplementationFunctionCall($function, $functionString, $paramIndex, "    " x 3);
+                    GenerateImplementationFunctionCall($function, $functionString, $paramIndex, "    " x 3, $podType);
                     push(@implContent, "        }\n\n");
                 }
 
@@ -1071,7 +1072,7 @@ sub GenerateImplementation
             }
 
             push(@implContent, "\n");
-            GenerateImplementationFunctionCall($function, $functionString, $paramIndex, "    " x 2);
+            GenerateImplementationFunctionCall($function, $functionString, $paramIndex, "    " x 2, $podType);
 
             push(@implContent, "    }\n"); # end case
         }
@@ -1146,6 +1147,7 @@ sub GenerateImplementationFunctionCall()
     my $functionString = shift;
     my $paramIndex = shift;
     my $indent = shift;
+    my $podType = shift;
 
     if (@{$function->raisesExceptions}) {
         $functionString .= ", " if $paramIndex;
@@ -1156,10 +1158,12 @@ sub GenerateImplementationFunctionCall()
     if ($function->signature->type eq "void") {
         push(@implContent, $indent . "$functionString;\n");
         push(@implContent, $indent . "setDOMException(exec, ec);\n") if @{$function->raisesExceptions};
+        push(@implContent, $indent . "wrapper->commitChange(exec);\n") if $podType;
         push(@implContent, $indent . "return jsUndefined();\n");
     } else {
         push(@implContent, "\n" . $indent . "KJS::JSValue* result = " . NativeToJSValue($function->signature, "", $functionString) . ";\n");
         push(@implContent, $indent . "setDOMException(exec, ec);\n") if @{$function->raisesExceptions};
+        push(@implContent, $indent . "wrapper->commitChange(exec);\n") if $podType;
         push(@implContent, $indent . "return result;\n");
     }
 }