Title: [231621] trunk
Revision
231621
Author
[email protected]
Date
2018-05-09 17:08:40 -0700 (Wed, 09 May 2018)

Log Message

Release assert in TreeScopeOrderedMap::remove via HTMLImageElement::removedFromAncestor
https://bugs.webkit.org/show_bug.cgi?id=185493

Reviewed by Brent Fulgham.

Source/WebCore:

Fixed the bug that HTMLImageElement::removedFromAncestor and HTMLMapElement::removedFromAncestor
were calling removeImageElementByUsemap on the document instead of the shadow tree from which it was removed.

Test: fast/images/imagemap-in-shadow-tree-removed.html

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::removedFromAncestor):
* html/HTMLMapElement.cpp:
(WebCore::HTMLMapElement::removedFromAncestor):

LayoutTests:

Added a regression test.

* fast/images/imagemap-in-shadow-tree-removed-expected.txt: Added.
* fast/images/imagemap-in-shadow-tree-removed.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (231620 => 231621)


--- trunk/LayoutTests/ChangeLog	2018-05-10 00:06:49 UTC (rev 231620)
+++ trunk/LayoutTests/ChangeLog	2018-05-10 00:08:40 UTC (rev 231621)
@@ -1,3 +1,15 @@
+2018-05-09  Ryosuke Niwa  <[email protected]>
+
+        Release assert in TreeScopeOrderedMap::remove via HTMLImageElement::removedFromAncestor
+        https://bugs.webkit.org/show_bug.cgi?id=185493
+
+        Reviewed by Brent Fulgham.
+
+        Added a regression test.
+
+        * fast/images/imagemap-in-shadow-tree-removed-expected.txt: Added.
+        * fast/images/imagemap-in-shadow-tree-removed.html: Added.
+
 2018-05-09  Joanmarie Diggs  <[email protected]>
 
         AX: Hidden nodes which are not directly referenced should not participate name/description from content

Added: trunk/LayoutTests/fast/images/imagemap-in-shadow-tree-removed-expected.txt (0 => 231621)


--- trunk/LayoutTests/fast/images/imagemap-in-shadow-tree-removed-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/images/imagemap-in-shadow-tree-removed-expected.txt	2018-05-10 00:08:40 UTC (rev 231621)
@@ -0,0 +1,4 @@
+This tests removing an image map area inside a shadow tree. WebKit should not hit any assertions.
+
+PASS
+

Added: trunk/LayoutTests/fast/images/imagemap-in-shadow-tree-removed.html (0 => 231621)


--- trunk/LayoutTests/fast/images/imagemap-in-shadow-tree-removed.html	                        (rev 0)
+++ trunk/LayoutTests/fast/images/imagemap-in-shadow-tree-removed.html	2018-05-10 00:08:40 UTC (rev 231621)
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<p>This tests removing an image map area inside a shadow tree. WebKit should not hit any assertions.</p>
+<div id="result"></div>
+<script>
+
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+const host = document.createElement('div');
+document.body.appendChild(host);
+
+const shadowRoot = host.attachShadow({mode: 'closed'});
+shadowRoot.innerHTML = `<div></div>`;
+
+const container = document.createElement('div');
+document.body.appendChild(container);
+container.innerHTML = `<img src="" width="400" height="400" usemap="" _onload_="startTest()">
+<map name="imagemap">
+    <area id="area" shape="rect" coords="0,0,200,200" href="" tabindex="0">
+</map>`;
+
+function startTest()
+{
+    shadowRoot.firstChild.appendChild(container);
+    container.remove();
+    document.getElementById('result').textContent = 'PASS';
+}
+
+</script>
+</body>
+</head>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (231620 => 231621)


--- trunk/Source/WebCore/ChangeLog	2018-05-10 00:06:49 UTC (rev 231620)
+++ trunk/Source/WebCore/ChangeLog	2018-05-10 00:08:40 UTC (rev 231621)
@@ -1,3 +1,20 @@
+2018-05-09  Ryosuke Niwa  <[email protected]>
+
+        Release assert in TreeScopeOrderedMap::remove via HTMLImageElement::removedFromAncestor
+        https://bugs.webkit.org/show_bug.cgi?id=185493
+
+        Reviewed by Brent Fulgham.
+
+        Fixed the bug that HTMLImageElement::removedFromAncestor and HTMLMapElement::removedFromAncestor
+        were calling removeImageElementByUsemap on the document instead of the shadow tree from which it was removed.
+
+        Test: fast/images/imagemap-in-shadow-tree-removed.html
+
+        * html/HTMLImageElement.cpp:
+        (WebCore::HTMLImageElement::removedFromAncestor):
+        * html/HTMLMapElement.cpp:
+        (WebCore::HTMLMapElement::removedFromAncestor):
+
 2018-05-09  Joanmarie Diggs  <[email protected]>
 
         AX: Hidden nodes which are not directly referenced should not participate name/description from content

Modified: trunk/Source/WebCore/html/HTMLImageElement.cpp (231620 => 231621)


--- trunk/Source/WebCore/html/HTMLImageElement.cpp	2018-05-10 00:06:49 UTC (rev 231620)
+++ trunk/Source/WebCore/html/HTMLImageElement.cpp	2018-05-10 00:08:40 UTC (rev 231621)
@@ -342,7 +342,7 @@
         m_form->removeImgElement(this);
 
     if (removalType.disconnectedFromDocument && !m_parsedUsemap.isNull())
-        treeScope().removeImageElementByUsemap(*m_parsedUsemap.impl(), *this);
+        oldParentOfRemovedTree.treeScope().removeImageElementByUsemap(*m_parsedUsemap.impl(), *this);
 
     if (is<HTMLPictureElement>(parentNode()))
         setPictureElement(nullptr);

Modified: trunk/Source/WebCore/html/HTMLMapElement.cpp (231620 => 231621)


--- trunk/Source/WebCore/html/HTMLMapElement.cpp	2018-05-10 00:06:49 UTC (rev 231620)
+++ trunk/Source/WebCore/html/HTMLMapElement.cpp	2018-05-10 00:08:40 UTC (rev 231621)
@@ -126,7 +126,7 @@
 void HTMLMapElement::removedFromAncestor(RemovalType removalType, ContainerNode& oldParentOfRemovedTree)
 {
     if (removalType.disconnectedFromDocument)
-        treeScope().removeImageMap(*this);
+        oldParentOfRemovedTree.treeScope().removeImageMap(*this);
     HTMLElement::removedFromAncestor(removalType, oldParentOfRemovedTree);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to