Title: [137421] trunk
- Revision
- 137421
- Author
- [email protected]
- Date
- 2012-12-11 23:22:34 -0800 (Tue, 11 Dec 2012)
Log Message
[Shadow DOM] registering InsertionPoints to ShadowRoot should work out of a document.
https://bugs.webkit.org/show_bug.cgi?id=104346
Reviewed by Hajime Morita.
Source/WebCore:
We need to register InsertionPoints even if ShadowRoot is out of Document, since distribution should work
out of Document, too.
Instead of checking isInDocument(), we have to make sure InsertionPoint and an element which InsertionPoint
inserted into have the same treescope.
Tests: fast/dom/shadow/has-content-elements.html
fast/dom/shadow/has-shadow-insertion-point.html
* html/shadow/InsertionPoint.cpp:
(WebCore::InsertionPoint::insertedInto):
(WebCore::InsertionPoint::removedFrom):
LayoutTests:
Added tests for out-of-Document version and calling insertedInto/removedFrom several times.
* fast/dom/shadow/has-content-elements-expected.txt:
* fast/dom/shadow/has-content-elements.html:
* fast/dom/shadow/has-shadow-insertion-point-expected.txt:
* fast/dom/shadow/has-shadow-insertion-point.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (137420 => 137421)
--- trunk/LayoutTests/ChangeLog 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/LayoutTests/ChangeLog 2012-12-12 07:22:34 UTC (rev 137421)
@@ -1,3 +1,17 @@
+2012-12-11 Shinya Kawanaka <[email protected]>
+
+ [Shadow DOM] registering InsertionPoints to ShadowRoot should work out of a document.
+ https://bugs.webkit.org/show_bug.cgi?id=104346
+
+ Reviewed by Hajime Morita.
+
+ Added tests for out-of-Document version and calling insertedInto/removedFrom several times.
+
+ * fast/dom/shadow/has-content-elements-expected.txt:
+ * fast/dom/shadow/has-content-elements.html:
+ * fast/dom/shadow/has-shadow-insertion-point-expected.txt:
+ * fast/dom/shadow/has-shadow-insertion-point.html:
+
2012-12-11 Takashi Sakamoto <[email protected]>
Text nodes in shadow roots don't inherit style properly
Modified: trunk/LayoutTests/fast/dom/shadow/has-content-elements-expected.txt (137420 => 137421)
--- trunk/LayoutTests/fast/dom/shadow/has-content-elements-expected.txt 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/LayoutTests/fast/dom/shadow/has-content-elements-expected.txt 2012-12-12 07:22:34 UTC (rev 137421)
@@ -1,5 +1,6 @@
-Test for Bug 100921: https://bugs.webkit.org/show_bug.cgi?id=100921 - [Shadow] ShadowRoot should be able to know the existence of <content>
+Test for Bug 100921 and 104346: HTMLContentElement should be registered correctly.
+In the case host is in document
PASS internals.hasContentElement(shadowRoot) is false
PASS internals.hasContentElement(shadowRoot) is true
PASS internals.hasContentElement(shadowRoot) is false
@@ -17,6 +18,30 @@
PASS internals.hasContentElement(youngerShadowRoot) is false
PASS internals.hasContentElement(shadowRoot) is false
PASS internals.hasContentElement(youngerShadowRoot) is true
+In the case host is not in document
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(innerShadowRoot1) is true
+PASS internals.hasContentElement(innerShadowRoot2) is true
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(youngerShadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(youngerShadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(youngerShadowRoot) is true
+insertedInto/removedFrom can be called several times.
+PASS internals.hasContentElement(shadowRoot) is false
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(shadowRoot) is true
+PASS internals.hasContentElement(shadowRoot) is false
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/dom/shadow/has-content-elements.html (137420 => 137421)
--- trunk/LayoutTests/fast/dom/shadow/has-content-elements.html 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/LayoutTests/fast/dom/shadow/has-content-elements.html 2012-12-12 07:22:34 UTC (rev 137421)
@@ -12,66 +12,98 @@
</head>
<body>
-<p>Test for Bug 100921: <a href="" - [Shadow] ShadowRoot should be able to know the existence of <content></p>
+<p>Test for Bug <a href="" and <a href="" HTMLContentElement should be registered correctly.</p>
-<div id="host"></div>
+<div id="wrapper"></div>
<pre id="console"></pre>
<script>
-var host = document.getElementById("host");
-var shadowRoot = host.webkitCreateShadowRoot();
+function doCommonTest() {
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
+ var div = document.createElement("div");
+ div.appendChild(document.createElement("content"));
+ shadowRoot.appendChild(div);
+ shouldBeTrue("internals.hasContentElement(shadowRoot)");
+
+ shadowRoot.removeChild(div);
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
+
+ shadowRoot.innerHTML = "<div>No Insertion Points</div>";
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
+
+ shadowRoot.innerHTML = "<content></content>";
+ shouldBeTrue("internals.hasContentElement(shadowRoot)");
+
+ shadowRoot.innerHTML = "<shadow></shadow>";
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
+
+ shadowRoot.innerHTML = "<div><div><div><content></content></div></div></div>";
+ shouldBeTrue("internals.hasContentElement(shadowRoot)");
+
+ // Case for nested shadow subtree
+ shadowRoot.innerHTML = '<div>in shadow root</div>';
+ var innerDiv1 = shadowRoot.querySelector('div');
+ innerShadowRoot1 = innerDiv1.webkitCreateShadowRoot();
+ innerShadowRoot1.innerHTML = "<div><content></content></div>";
+ var innerDiv2 = innerShadowRoot1.querySelector('div');
+ innerShadowRoot2 = innerDiv2.webkitCreateShadowRoot();
+ innerShadowRoot2.innerHTML = "<div><content title='debugstop'></content></div>";
+
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
+ shouldBeTrue("internals.hasContentElement(innerShadowRoot1)");
+ shouldBeTrue("internals.hasContentElement(innerShadowRoot2)");
+ shadowRoot.innerHTML = "<div></div>";
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
-var div = document.createElement("div");
-div.appendChild(document.createElement("content"));
-shadowRoot.appendChild(div);
-shouldBeTrue("internals.hasContentElement(shadowRoot)");
+ // Case for multiple shadow subtrees
+ shadowRoot.innerHTML = "<div><div><div><content></content></div></div></div>";
+ youngerShadowRoot = host.webkitCreateShadowRoot();
+ // Modifying older shadow root or younger shadow root doesn't affect the other.
+ shouldBeTrue("internals.hasContentElement(shadowRoot)");
+ shouldBeFalse("internals.hasContentElement(youngerShadowRoot)");
+
+ shadowRoot.innerHTML = "<shadow></shadow>";
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
+ shouldBeFalse("internals.hasContentElement(youngerShadowRoot)");
+
+ youngerShadowRoot.innerHTML = "<content></content>";
+ shouldBeFalse("internals.hasContentElement(shadowRoot)");
+ shouldBeTrue("internals.hasContentElement(youngerShadowRoot)");
+}
-shadowRoot.removeChild(div);
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
+debug('In the case host is in document');
+host = document.createElement('div');
+wrapper.appendChild(host);
+shadowRoot = host.webkitCreateShadowRoot();
+doCommonTest();
+wrapper.innerHTML = "";
-shadowRoot.innerHTML = "<div>No Insertion Points</div>";
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
+debug('In the case host is not in document');
+host = document.createElement('div');
+shadowRoot = host.webkitCreateShadowRoot();
+doCommonTest();
+wrapper.innerHTML = "";
-shadowRoot.innerHTML = "<content></content>";
-shouldBeTrue("internals.hasContentElement(shadowRoot)");
+debug('insertedInto/removedFrom can be called several times.');
+var host = document.createElement('div');
+var content = document.createElement('content');
+var div1 = document.createElement('div');
+var div2 = document.createElement('div');
+var shadowRoot = host.webkitCreateShadowRoot();
+div1.appendChild(content);
+shouldBeFalse('internals.hasContentElement(shadowRoot)');
+shadowRoot.appendChild(div1);
+shouldBeTrue('internals.hasContentElement(shadowRoot)');
+div2.appendChild(host);
+shouldBeTrue('internals.hasContentElement(shadowRoot)');
+div2.removeChild(host);
+shouldBeTrue('internals.hasContentElement(shadowRoot)');
+shadowRoot.removeChild(div1);
+shouldBeFalse('internals.hasContentElement(shadowRoot)');
+div1.removeChild(content);
-shadowRoot.innerHTML = "<shadow></shadow>";
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
-
-shadowRoot.innerHTML = "<div><div><div><content></content></div></div></div>";
-shouldBeTrue("internals.hasContentElement(shadowRoot)");
-
-// Case for nested shadow subtree
-shadowRoot.innerHTML = '<div>in shadow root</div>';
-var innerDiv1 = shadowRoot.querySelector('div');
-var innerShadowRoot1 = innerDiv1.webkitCreateShadowRoot();
-innerShadowRoot1.innerHTML = "<div><content></content></div>";
-var innerDiv2 = innerShadowRoot1.querySelector('div');
-var innerShadowRoot2 = innerDiv2.webkitCreateShadowRoot();
-innerShadowRoot2.innerHTML = "<div><content title='debugstop'></content></div>";
-
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
-shouldBeTrue("internals.hasContentElement(innerShadowRoot1)");
-shouldBeTrue("internals.hasContentElement(innerShadowRoot2)");
-shadowRoot.innerHTML = "<div></div>";
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
-
-// Case for multiple shadow subtrees
-shadowRoot.innerHTML = "<div><div><div><content></content></div></div></div>";
-var youngerShadowRoot = host.webkitCreateShadowRoot();
-// Modifying older shadow root or younger shadow root doesn't affect the other.
-shouldBeTrue("internals.hasContentElement(shadowRoot)");
-shouldBeFalse("internals.hasContentElement(youngerShadowRoot)");
-
-shadowRoot.innerHTML = "<shadow></shadow>";
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
-shouldBeFalse("internals.hasContentElement(youngerShadowRoot)");
-
-youngerShadowRoot.innerHTML = "<content></content>";
-shouldBeFalse("internals.hasContentElement(shadowRoot)");
-shouldBeTrue("internals.hasContentElement(youngerShadowRoot)");
+wrapper.innerHTML = '';
</script>
<script src=""
</body>
Modified: trunk/LayoutTests/fast/dom/shadow/has-shadow-insertion-point-expected.txt (137420 => 137421)
--- trunk/LayoutTests/fast/dom/shadow/has-shadow-insertion-point-expected.txt 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/LayoutTests/fast/dom/shadow/has-shadow-insertion-point-expected.txt 2012-12-12 07:22:34 UTC (rev 137421)
@@ -1,3 +1,6 @@
+Test for Bug 97184 and 104346 : HTMLShadowElement should be registered correctly.
+
+In the case host is in document
PASS internals.hasShadowInsertionPoint(shadowRoot) is false
PASS internals.hasShadowInsertionPoint(shadowRoot) is true
PASS internals.hasShadowInsertionPoint(shadowRoot) is false
@@ -11,8 +14,27 @@
PASS internals.hasShadowInsertionPoint(youngerShadowRoot) is false
PASS internals.hasShadowInsertionPoint(shadowRoot) is false
PASS internals.hasShadowInsertionPoint(youngerShadowRoot) is true
+In the case host is not in document
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(youngerShadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(youngerShadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(youngerShadowRoot) is true
+insertedInto/removedFrom can be called several times.
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(shadowRoot) is true
+PASS internals.hasShadowInsertionPoint(shadowRoot) is false
PASS successfullyParsed is true
TEST COMPLETE
-Test for Bug 97184: https://bugs.webkit.org/show_bug.cgi?id=97184 - [Shadow] ShadowRoot should know whether <shadow> in its treescope
Modified: trunk/LayoutTests/fast/dom/shadow/has-shadow-insertion-point.html (137420 => 137421)
--- trunk/LayoutTests/fast/dom/shadow/has-shadow-insertion-point.html 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/LayoutTests/fast/dom/shadow/has-shadow-insertion-point.html 2012-12-12 07:22:34 UTC (rev 137421)
@@ -11,49 +11,81 @@
</script>
</head>
<body>
- <span>Test for Bug 97184: <a href="" -
- [Shadow] ShadowRoot should know whether <shadow> in its treescope
- </span>
- <div id="host"></div>
+<p>Test for Bug <a href="" and <a href="" : HTMLShadowElement should be registered correctly.</p>
+
+<div id="wrapper"></div>
+<pre id="console"></pre>
+
<script>
-var host = document.getElementById("host");
-var shadowRoot = host.webkitCreateShadowRoot();
+function doTest() {
+ shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
-shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
+ var div = document.createElement("div");
+ div.appendChild(document.createElement("shadow"));
+ shadowRoot.appendChild(div);
+ shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
-var div = document.createElement("div");
-div.appendChild(document.createElement("shadow"));
-shadowRoot.appendChild(div);
-shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
+ shadowRoot.removeChild(div);
+ shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
-shadowRoot.removeChild(div);
-shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
+ shadowRoot.innerHTML = "<div>No Insertion Points</div>";
+ shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
-shadowRoot.innerHTML = "<div>No Insertion Points</div>";
-shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
+ shadowRoot.innerHTML = "<content></content>";
+ shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
-shadowRoot.innerHTML = "<content></content>";
-shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
+ shadowRoot.innerHTML = "<shadow></shadow>";
+ shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
-shadowRoot.innerHTML = "<shadow></shadow>";
-shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
+ shadowRoot.innerHTML = "<div><div><div><shadow></shadow></div></div></div>";
+ shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
-shadowRoot.innerHTML = "<div><div><div><shadow></shadow></div></div></div>";
-shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
+ youngerShadowRoot = host.webkitCreateShadowRoot(host);
+ // Modifying older shadow root or younger shadow root doesn't affect the other.
+ shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
+ shouldBeFalse("internals.hasShadowInsertionPoint(youngerShadowRoot)");
-var youngerShadowRoot = host.webkitCreateShadowRoot();
-// Modifying older shadow root or younger shadow root doesn't affect the other.
-shouldBeTrue("internals.hasShadowInsertionPoint(shadowRoot)");
-shouldBeFalse("internals.hasShadowInsertionPoint(youngerShadowRoot)");
+ shadowRoot.innerHTML = "<content></content>";
+ shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
+ shouldBeFalse("internals.hasShadowInsertionPoint(youngerShadowRoot)");
-shadowRoot.innerHTML = "<content></content>";
-shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
-shouldBeFalse("internals.hasShadowInsertionPoint(youngerShadowRoot)");
+ youngerShadowRoot.innerHTML = "<shadow></shadow>";
+ shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
+ shouldBeTrue("internals.hasShadowInsertionPoint(youngerShadowRoot)");
+}
-youngerShadowRoot.innerHTML = "<shadow></shadow>";
-shouldBeFalse("internals.hasShadowInsertionPoint(shadowRoot)");
-shouldBeTrue("internals.hasShadowInsertionPoint(youngerShadowRoot)");
+debug('In the case host is in document');
+host = document.createElement('div');
+wrapper.appendChild(host);
+shadowRoot = host.webkitCreateShadowRoot();
+doTest();
+wrapper.innerHTML = "";
+
+debug('In the case host is not in document');
+host = document.createElement('div');
+shadowRoot = host.webkitCreateShadowRoot();
+doTest();
+wrapper.innerHTML = "";
+
+debug('insertedInto/removedFrom can be called several times.');
+var host = document.createElement('div');
+var shadow = document.createElement('shadow');
+var div1 = document.createElement('div');
+var div2 = document.createElement('div');
+var shadowRoot = host.webkitCreateShadowRoot();
+div1.appendChild(shadow);
+shouldBeFalse('internals.hasShadowInsertionPoint(shadowRoot)');
+shadowRoot.appendChild(div1);
+shouldBeTrue('internals.hasShadowInsertionPoint(shadowRoot)');
+div2.appendChild(host);
+shouldBeTrue('internals.hasShadowInsertionPoint(shadowRoot)');
+div2.removeChild(host);
+shouldBeTrue('internals.hasShadowInsertionPoint(shadowRoot)');
+shadowRoot.removeChild(div1);
+shouldBeFalse('internals.hasShadowInsertionPoint(shadowRoot)');
+div1.removeChild(shadow);
+
</script>
<script src=""
</body>
Modified: trunk/Source/WebCore/ChangeLog (137420 => 137421)
--- trunk/Source/WebCore/ChangeLog 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/Source/WebCore/ChangeLog 2012-12-12 07:22:34 UTC (rev 137421)
@@ -1,3 +1,23 @@
+2012-12-11 Shinya Kawanaka <[email protected]>
+
+ [Shadow DOM] registering InsertionPoints to ShadowRoot should work out of a document.
+ https://bugs.webkit.org/show_bug.cgi?id=104346
+
+ Reviewed by Hajime Morita.
+
+ We need to register InsertionPoints even if ShadowRoot is out of Document, since distribution should work
+ out of Document, too.
+
+ Instead of checking isInDocument(), we have to make sure InsertionPoint and an element which InsertionPoint
+ inserted into have the same treescope.
+
+ Tests: fast/dom/shadow/has-content-elements.html
+ fast/dom/shadow/has-shadow-insertion-point.html
+
+ * html/shadow/InsertionPoint.cpp:
+ (WebCore::InsertionPoint::insertedInto):
+ (WebCore::InsertionPoint::removedFrom):
+
2012-12-11 Takashi Sakamoto <[email protected]>
Text nodes in shadow roots don't inherit style properly
Modified: trunk/Source/WebCore/html/shadow/InsertionPoint.cpp (137420 => 137421)
--- trunk/Source/WebCore/html/shadow/InsertionPoint.cpp 2012-12-12 07:01:03 UTC (rev 137420)
+++ trunk/Source/WebCore/html/shadow/InsertionPoint.cpp 2012-12-12 07:22:34 UTC (rev 137421)
@@ -123,40 +123,38 @@
Node::InsertionNotificationRequest InsertionPoint::insertedInto(ContainerNode* insertionPoint)
{
HTMLElement::insertedInto(insertionPoint);
- if (insertionPoint->inDocument()) {
- if (ShadowRoot* root = containingShadowRoot()) {
- root->owner()->setValidityUndetermined();
- root->owner()->invalidateDistribution();
- if (isActive() && !m_registeredWithShadowRoot) {
- m_registeredWithShadowRoot = true;
- root->registerInsertionPoint(this);
- }
+
+ if (ShadowRoot* root = containingShadowRoot()) {
+ root->owner()->setValidityUndetermined();
+ root->owner()->invalidateDistribution();
+ if (isActive() && !m_registeredWithShadowRoot && insertionPoint->treeScope()->rootNode() == root) {
+ m_registeredWithShadowRoot = true;
+ root->registerInsertionPoint(this);
}
}
+
return InsertionDone;
}
void InsertionPoint::removedFrom(ContainerNode* insertionPoint)
{
- if (insertionPoint->inDocument()) {
- ShadowRoot* root = containingShadowRoot();
- if (!root)
- root = insertionPoint->containingShadowRoot();
+ ShadowRoot* root = containingShadowRoot();
+ if (!root)
+ root = insertionPoint->containingShadowRoot();
- // host can be null when removedFrom() is called from ElementShadow destructor.
- ElementShadow* rootOwner = root ? root->owner() : 0;
- if (rootOwner)
- rootOwner->invalidateDistribution();
+ // host can be null when removedFrom() is called from ElementShadow destructor.
+ ElementShadow* rootOwner = root ? root->owner() : 0;
+ if (rootOwner)
+ rootOwner->invalidateDistribution();
- // Since this insertion point is no longer visible from the shadow subtree, it need to clean itself up.
- clearDistribution();
+ // Since this insertion point is no longer visible from the shadow subtree, it need to clean itself up.
+ clearDistribution();
- if (m_registeredWithShadowRoot) {
- m_registeredWithShadowRoot = false;
- if (root)
- root->unregisterInsertionPoint(this);
- }
+ if (m_registeredWithShadowRoot && insertionPoint->treeScope()->rootNode() == root) {
+ ASSERT(root);
+ m_registeredWithShadowRoot = false;
+ root->unregisterInsertionPoint(this);
}
HTMLElement::removedFrom(insertionPoint);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes