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;
}