Title: [88584] trunk
Revision
88584
Author
[email protected]
Date
2011-06-10 18:08:09 -0700 (Fri, 10 Jun 2011)

Log Message

2011-06-10  James Simonsen  <[email protected]>

        Reviewed by Eric Seidel.

        <script> inside <svg> should be executed
        https://bugs.webkit.org/show_bug.cgi?id=62412

        * platform/chromium/html5lib/runner-expected.txt: Passes another test.
        * svg/dom/range-delete-expected.txt: Removed.
        * svg/dom/range-delete.html: Removed.
        * svg/dom/use-style-recalc-script-execute-crash-expected.txt: Now expected to execute script (and not crash).
        * svg/dom/use-style-recalc-script-execute-crash.html:
        * svg/in-html/resources/external.js: Added.
        * svg/in-html/script-expected.txt: Added.
        * svg/in-html/script-external-expected.txt: Added.
        * svg/in-html/script-external.html: Added.
        * svg/in-html/script-nested-expected.txt: Added.
        * svg/in-html/script-nested.html: Added.
        * svg/in-html/script-write-expected.txt: Added.
        * svg/in-html/script-write.html: Added.
        * svg/in-html/script.html: Added.
2011-06-10  James Simonsen  <[email protected]>

        Reviewed by Eric Seidel.

        <script> inside <svg> should be executed
        https://bugs.webkit.org/show_bug.cgi?id=62412

        Tests: svg/in-html/script-external.html
               svg/in-html/script-nested.html
               svg/in-html/script-write.html
               svg/in-html/script.html

        * html/parser/HTMLTreeBuilder.cpp:
        (WebCore::HTMLTreeBuilder::processEndTag):

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (88583 => 88584)


--- trunk/LayoutTests/ChangeLog	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/LayoutTests/ChangeLog	2011-06-11 01:08:09 UTC (rev 88584)
@@ -1,3 +1,25 @@
+2011-06-10  James Simonsen  <[email protected]>
+
+        Reviewed by Eric Seidel.
+
+        <script> inside <svg> should be executed
+        https://bugs.webkit.org/show_bug.cgi?id=62412
+
+        * platform/chromium/html5lib/runner-expected.txt: Passes another test.
+        * svg/dom/range-delete-expected.txt: Removed.
+        * svg/dom/range-delete.html: Removed.
+        * svg/dom/use-style-recalc-script-execute-crash-expected.txt: Now expected to execute script (and not crash).
+        * svg/dom/use-style-recalc-script-execute-crash.html:
+        * svg/in-html/resources/external.js: Added.
+        * svg/in-html/script-expected.txt: Added.
+        * svg/in-html/script-external-expected.txt: Added.
+        * svg/in-html/script-external.html: Added.
+        * svg/in-html/script-nested-expected.txt: Added.
+        * svg/in-html/script-nested.html: Added.
+        * svg/in-html/script-write-expected.txt: Added.
+        * svg/in-html/script-write.html: Added.
+        * svg/in-html/script.html: Added.
+
 2011-06-10  Adam Barth  <[email protected]>
 
         Reviewed by Darin Adler.

Modified: trunk/LayoutTests/platform/chromium/html5lib/runner-expected.txt (88583 => 88584)


--- trunk/LayoutTests/platform/chromium/html5lib/runner-expected.txt	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/LayoutTests/platform/chromium/html5lib/runner-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -110,7 +110,6 @@
 |       "quux"
 resources/tests10.dat:
 15
-40
 53
 54
 
@@ -147,23 +146,6 @@
 |     <p>
 |       "quux"
 
-Test 40 of 54 in resources/tests10.dat failed. Input:
-<svg><script></script><path>
-Got:
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg script>
-|         <svg path>
-Expected:
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg script>
-|       <svg path>
-
 Test 53 of 54 in resources/tests10.dat failed. Input:
 <math><annotation-xml><svg><foreignObject><div><math><mi></mi></math><span></span></div></foreignObject><path></path></svg></annotation-xml><mi>
 Got:

Deleted: trunk/LayoutTests/svg/dom/range-delete-expected.txt (88583 => 88584)


--- trunk/LayoutTests/svg/dom/range-delete-expected.txt	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/LayoutTests/svg/dom/range-delete-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -1 +0,0 @@
-Test Passed.

Deleted: trunk/LayoutTests/svg/dom/range-delete.html (88583 => 88584)


--- trunk/LayoutTests/svg/dom/range-delete.html	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/LayoutTests/svg/dom/range-delete.html	2011-06-11 01:08:09 UTC (rev 88584)
@@ -1,21 +0,0 @@
-<html>
-<script>
-if (window.layoutTestController)
-    layoutTestController.dumpAsText();
-</script>
-<svg>
-    <desc id="test"></desc>
-    <script>
-    var range = document.createRange();
-    range.setStartBefore(document.getElementById("test"));
-    range.setEndAfter(document.body);
-    range.deleteContents();
-    </script>
-</svg>
-<script> 
-var test = document.getElementById("test");
-var clone = document.body.cloneNode(true);
-test.parentNode.insertBefore(clone, test);
-</script>
-Test Passed.
-</html>

Modified: trunk/LayoutTests/svg/dom/use-style-recalc-script-execute-crash-expected.txt (88583 => 88584)


--- trunk/LayoutTests/svg/dom/use-style-recalc-script-execute-crash-expected.txt	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/LayoutTests/svg/dom/use-style-recalc-script-execute-crash-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -1 +1 @@
-Test passes if it does not crash and "script" inside "rect" does not execute.
+PASS

Modified: trunk/LayoutTests/svg/dom/use-style-recalc-script-execute-crash.html (88583 => 88584)


--- trunk/LayoutTests/svg/dom/use-style-recalc-script-execute-crash.html	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/LayoutTests/svg/dom/use-style-recalc-script-execute-crash.html	2011-06-11 01:08:09 UTC (rev 88584)
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html>
-Test passes if it does not crash and "script" inside "rect" does not execute.
+Test passes if it does not crash and "script" inside "rect" executes.
 <script>
 if (window.layoutTestController)
     layoutTestController.dumpAsText();
@@ -10,7 +10,7 @@
 <use xlink:href=""
 <rect id="test">
 <script>
-document.body.innerHTML = "FAIL";
+document.body.innerHTML = "PASS";
 </script>
 </rect>
 </g>

Added: trunk/LayoutTests/svg/in-html/resources/external.js (0 => 88584)


--- trunk/LayoutTests/svg/in-html/resources/external.js	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/resources/external.js	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1 @@
+debug("external script ran!");

Added: trunk/LayoutTests/svg/in-html/script-expected.txt (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,2 @@
+PASS script ran!
+

Added: trunk/LayoutTests/svg/in-html/script-external-expected.txt (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-external-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-external-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,3 @@
+external script ran!
+second inline ran!
+

Added: trunk/LayoutTests/svg/in-html/script-external.html (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-external.html	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-external.html	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,25 @@
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+</script>
+</head>
+<body>
+<!-- Makes sure we execute external scripts inside <svg>.
+Test passes if external script runs before second inline script. -->
+<div id="console"></div>
+<svg>
+    <g>
+        <rect id="test">
+            <script xlink:href=""
+            <script>
+                debug("second inline ran!");
+            </script>
+        </rect>
+    </g>
+</svg>
+</body>
+</html>

Added: trunk/LayoutTests/svg/in-html/script-nested-expected.txt (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-nested-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-nested-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,3 @@
+nested script ran!
+inline script done!
+

Added: trunk/LayoutTests/svg/in-html/script-nested.html (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-nested.html	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-nested.html	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,27 @@
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+</script>
+</head>
+<body>
+<!-- Makes scripts nested scripts run immediately and don't hang.
+Test passes if nested script runs before inline script finishes. -->
+<div id="console"></div>
+<svg>
+    <g>
+        <rect id="test">
+            <script>
+                nested = document.createElement("script");
+                nested.innerHTML = 'debug("nested script ran!");';
+                document.getElementsByTagName("head")[0].appendChild(nested);
+                debug("inline script done!");
+            </script>
+        </rect>
+    </g>
+</svg>
+</body>
+</html>

Added: trunk/LayoutTests/svg/in-html/script-write-expected.txt (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-write-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-write-expected.txt	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,3 @@
+written script ran!
+second inline script ran!
+

Added: trunk/LayoutTests/svg/in-html/script-write.html (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script-write.html	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script-write.html	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,27 @@
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+</script>
+</head>
+<body>
+<!-- Makes sure the insertion point is at the end of the running script.
+Test passes if written script runs before second inline script. -->
+<div id="console"></div>
+<svg>
+    <g>
+        <rect id="test">
+            <script>
+                document.write('<script>debug("written script ran!");</script>');
+            </script>
+            <script>
+                debug("second inline script ran!");
+            </script>
+        </rect>
+    </g>
+</svg>
+</body>
+</html>

Added: trunk/LayoutTests/svg/in-html/script.html (0 => 88584)


--- trunk/LayoutTests/svg/in-html/script.html	                        (rev 0)
+++ trunk/LayoutTests/svg/in-html/script.html	2011-06-11 01:08:09 UTC (rev 88584)
@@ -0,0 +1,23 @@
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+</script>
+</head>
+<body>
+<!-- Makes sure we execute scripts inside <svg>. Test passes if PASS is printed. -->
+<div id="console"></div>
+<svg>
+    <g>
+        <rect id="test">
+            <script>
+                testPassed("script ran!");
+            </script>
+        </rect>
+    </g>
+</svg>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (88583 => 88584)


--- trunk/Source/WebCore/ChangeLog	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/Source/WebCore/ChangeLog	2011-06-11 01:08:09 UTC (rev 88584)
@@ -1,3 +1,18 @@
+2011-06-10  James Simonsen  <[email protected]>
+
+        Reviewed by Eric Seidel.
+
+        <script> inside <svg> should be executed
+        https://bugs.webkit.org/show_bug.cgi?id=62412
+
+        Tests: svg/in-html/script-external.html
+               svg/in-html/script-nested.html
+               svg/in-html/script-write.html
+               svg/in-html/script.html
+
+        * html/parser/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::processEndTag):
+
 2011-06-10  Adam Barth  <[email protected]>
 
         Reviewed by Darin Adler.

Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (88583 => 88584)


--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2011-06-11 00:56:13 UTC (rev 88583)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2011-06-11 01:08:09 UTC (rev 88584)
@@ -2314,7 +2314,9 @@
         break;
     case InForeignContentMode:
         if (token.name() == SVGNames::scriptTag && m_tree.currentNode()->hasTagName(SVGNames::scriptTag)) {
-            notImplemented();
+            m_isPaused = true;
+            m_scriptToProcess = m_tree.currentElement();
+            m_tree.openElements()->pop();
             return;
         }
         if (!isInHTMLNamespace(m_tree.currentNode())) {
@@ -2329,7 +2331,7 @@
                     return;
                 }
                 nodeRecord = nodeRecord->next();
-                
+
                 if (isInHTMLNamespace(nodeRecord->node()))
                     break;
             }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to