Title: [109359] trunk
Revision
109359
Author
[email protected]
Date
2012-03-01 10:05:45 -0800 (Thu, 01 Mar 2012)

Log Message

Appending ShadowRoot into an element should not cause crash.
https://bugs.webkit.org/show_bug.cgi?id=79620

Reviewed by Dimitri Glazkov.

Source/WebCore:

We should treat ShadowRoot as a document fragment.

Test: fast/dom/shadow/shadow-root-append.html

* dom/ContainerNode.cpp:
(WebCore::collectTargetNodes):

LayoutTests:

* fast/dom/shadow/shadow-root-append-expected.txt: Added.
* fast/dom/shadow/shadow-root-append.html: Added.
* platform/efl/Skipped:
* platform/mac/Skipped:
* platform/qt/Skipped:
* platform/win/Skipped:
* platform/wincairo/Skipped:
* platform/wk2/Skipped:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (109358 => 109359)


--- trunk/LayoutTests/ChangeLog	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/ChangeLog	2012-03-01 18:05:45 UTC (rev 109359)
@@ -1,3 +1,19 @@
+2012-03-01  Shinya Kawanaka  <[email protected]>
+
+        Appending ShadowRoot into an element should not cause crash.
+        https://bugs.webkit.org/show_bug.cgi?id=79620
+
+        Reviewed by Dimitri Glazkov.
+
+        * fast/dom/shadow/shadow-root-append-expected.txt: Added.
+        * fast/dom/shadow/shadow-root-append.html: Added.
+        * platform/efl/Skipped:
+        * platform/mac/Skipped:
+        * platform/qt/Skipped:
+        * platform/win/Skipped:
+        * platform/wincairo/Skipped:
+        * platform/wk2/Skipped:
+
 2012-03-01  Stephen Chenney  <[email protected]>
 
         Crash in WebCore::SVGDocumentExtensions::removeAnimationElementFromTarget

Added: trunk/LayoutTests/fast/dom/shadow/shadow-root-append-expected.txt (0 => 109359)


--- trunk/LayoutTests/fast/dom/shadow/shadow-root-append-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/shadow-root-append-expected.txt	2012-03-01 18:05:45 UTC (rev 109359)
@@ -0,0 +1,11 @@
+This test checks that appending shadow root as a child does not crash.
+
+PASS root.firstChild is null
+PASS container.firstChild.textContent is "SS"
+PASS root.firstChild is null
+PASS container.firstChild.textContent is "PA"
+PASS container.firstChild is not container.lastChild
+PASS successfullyParsed is true
+
+TEST COMPLETE
+PASS

Added: trunk/LayoutTests/fast/dom/shadow/shadow-root-append.html (0 => 109359)


--- trunk/LayoutTests/fast/dom/shadow/shadow-root-append.html	                        (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/shadow-root-append.html	2012-03-01 18:05:45 UTC (rev 109359)
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<p>This test checks that appending shadow root as a child does not crash.</p>
+<pre id="console"></pre>
+<div id="container"></div>
+
+<script>
+function doTest() {
+    if (!window.internals) {
+        debug('This test runs on DRT only');
+        return;
+    }
+
+    var div = document.createElement('div');
+    root = new WebKitShadowRoot(div);
+    root.appendChild(document.createTextNode('SS'));
+
+    container = document.getElementById('container');
+    container.appendChild(root);
+
+    shouldBeNull('root.firstChild');
+    shouldBe('container.firstChild.textContent', '"SS"');
+
+    var div = document.createElement('div');
+    root = new WebKitShadowRoot(div);
+    root.appendChild(document.createTextNode('PA'));
+
+    container.insertBefore(root, container.firstChild);
+
+    shouldBeNull('root.firstChild');
+    shouldBe('container.firstChild.textContent', '"PA"');
+    shouldNotBe('container.firstChild', 'container.lastChild');
+}
+
+doTest();
+var successfullyParsed = true;
+</script>
+<script src=""
+</body>
+</html>

Modified: trunk/LayoutTests/platform/efl/Skipped (109358 => 109359)


--- trunk/LayoutTests/platform/efl/Skipped	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/platform/efl/Skipped	2012-03-01 18:05:45 UTC (rev 109359)
@@ -2092,6 +2092,7 @@
 fast/dom/shadow/shadow-disable.html
 fast/dom/shadow/shadow-root-attached.html
 fast/dom/shadow/shadow-root-new.html
+fast/dom/shadow/shadow-root-append.html
 fast/dom/shadow/multiple-shadowroot.html
 fast/dom/shadow/multiple-shadowroot-rendering.html
 fast/dom/shadow/multiple-shadowroot-adopt.html

Modified: trunk/LayoutTests/platform/mac/Skipped (109358 => 109359)


--- trunk/LayoutTests/platform/mac/Skipped	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/platform/mac/Skipped	2012-03-01 18:05:45 UTC (rev 109359)
@@ -435,6 +435,7 @@
 fast/dom/shadow/shadow-root-innerHTML.html
 fast/dom/shadow/shadow-root-new.html
 fast/dom/shadow/shadow-ul-li.html
+fast/dom/shadow/shadow-root-append.html
 fast/dom/shadow/multiple-shadowroot.html
 fast/dom/shadow/multiple-shadowroot-rendering.html
 fast/dom/shadow/multiple-shadowroot-adopt.html

Modified: trunk/LayoutTests/platform/qt/Skipped (109358 => 109359)


--- trunk/LayoutTests/platform/qt/Skipped	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/platform/qt/Skipped	2012-03-01 18:05:45 UTC (rev 109359)
@@ -173,6 +173,7 @@
 fast/dom/shadow/shadow-root-innerHTML.html
 fast/dom/shadow/shadow-root-new.html
 fast/dom/shadow/shadow-ul-li.html
+fast/dom/shadow/shadow-root-append.html
 fast/dom/shadow/multiple-shadowroot.html
 fast/dom/shadow/multiple-shadowroot-rendering.html
 fast/dom/shadow/multiple-shadowroot-adopt.html

Modified: trunk/LayoutTests/platform/win/Skipped (109358 => 109359)


--- trunk/LayoutTests/platform/win/Skipped	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/platform/win/Skipped	2012-03-01 18:05:45 UTC (rev 109359)
@@ -1461,6 +1461,7 @@
 fast/dom/shadow/shadow-root-innerHTML.html
 fast/dom/shadow/shadow-root-new.html
 fast/dom/shadow/shadow-ul-li.html
+fast/dom/shadow/shadow-root-append.html
 fast/dom/shadow/multiple-shadowroot.html
 fast/dom/shadow/multiple-shadowroot-rendering.html
 fast/dom/shadow/multiple-shadowroot-adopt.html

Modified: trunk/LayoutTests/platform/wincairo/Skipped (109358 => 109359)


--- trunk/LayoutTests/platform/wincairo/Skipped	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/platform/wincairo/Skipped	2012-03-01 18:05:45 UTC (rev 109359)
@@ -1974,6 +1974,7 @@
 fast/dom/shadow/shadow-root-attached.html
 fast/dom/shadow/shadow-root-innerHTML.html
 fast/dom/shadow/shadow-root-new.html
+fast/dom/shadow/shadow-root-append.html
 fast/dom/shadow/multiple-shadowroot.html
 fast/dom/shadow/multiple-shadowroot-rendering.html
 fast/dom/shadow/multiple-shadowroot-adopt.html

Modified: trunk/LayoutTests/platform/wk2/Skipped (109358 => 109359)


--- trunk/LayoutTests/platform/wk2/Skipped	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/LayoutTests/platform/wk2/Skipped	2012-03-01 18:05:45 UTC (rev 109359)
@@ -1072,6 +1072,7 @@
 fast/dom/shadow/shadow-root-innerHTML.html
 fast/dom/shadow/shadow-root-new.html
 fast/dom/shadow/shadow-ul-li.html
+fast/dom/shadow/shadow-root-append.html
 fast/dom/shadow/multiple-shadowroot.html
 fast/dom/shadow/multiple-shadowroot-rendering.html
 fast/dom/shadow/multiple-shadowroot-adopt.html

Modified: trunk/Source/WebCore/ChangeLog (109358 => 109359)


--- trunk/Source/WebCore/ChangeLog	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/Source/WebCore/ChangeLog	2012-03-01 18:05:45 UTC (rev 109359)
@@ -1,3 +1,17 @@
+2012-03-01  Shinya Kawanaka  <[email protected]>
+
+        Appending ShadowRoot into an element should not cause crash.
+        https://bugs.webkit.org/show_bug.cgi?id=79620
+
+        Reviewed by Dimitri Glazkov.
+
+        We should treat ShadowRoot as a document fragment.
+
+        Test: fast/dom/shadow/shadow-root-append.html
+
+        * dom/ContainerNode.cpp:
+        (WebCore::collectTargetNodes):
+
 2012-03-01  Pavel Podivilov  <[email protected]>
 
         Web Inspector: use live location to update console message bubbles.

Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (109358 => 109359)


--- trunk/Source/WebCore/dom/ContainerNode.cpp	2012-03-01 18:05:41 UTC (rev 109358)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp	2012-03-01 18:05:45 UTC (rev 109359)
@@ -69,7 +69,7 @@
 
 static void collectTargetNodes(Node* node, NodeVector& nodes)
 {
-    if (node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE || node->isShadowRoot()) {
+    if (node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE) {
         nodes.append(node);
         return;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to