Title: [275756] trunk/Source/WebCore
Revision
275756
Author
[email protected]
Date
2021-04-09 03:25:22 -0700 (Fri, 09 Apr 2021)

Log Message

Teardown shadow root renderers on SlotAssignment::didChangeSlot
https://bugs.webkit.org/show_bug.cgi?id=221386

Patch by Carlos Garcia Campos <[email protected]> on 2021-04-09
Reviewed by Ryosuke Niwa.

This reverts r272900 to move the call to RenderTreeUpdater::tearDownRenderers() from hostChildElementDidChange()
to didChangeSlot(). This ensures the renderers are also cleared for other shadow root trees not using details
element.

* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::addSlotElementByName):
(WebCore::SlotAssignment::didChangeSlot):
* dom/SlotAssignment.h:
(WebCore::ShadowRoot::hostChildElementDidChange):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (275755 => 275756)


--- trunk/Source/WebCore/ChangeLog	2021-04-09 09:29:51 UTC (rev 275755)
+++ trunk/Source/WebCore/ChangeLog	2021-04-09 10:25:22 UTC (rev 275756)
@@ -1,3 +1,20 @@
+2021-04-09  Carlos Garcia Campos  <[email protected]>
+
+        Teardown shadow root renderers on SlotAssignment::didChangeSlot
+        https://bugs.webkit.org/show_bug.cgi?id=221386
+
+        Reviewed by Ryosuke Niwa.
+
+        This reverts r272900 to move the call to RenderTreeUpdater::tearDownRenderers() from hostChildElementDidChange()
+        to didChangeSlot(). This ensures the renderers are also cleared for other shadow root trees not using details
+        element.
+
+        * dom/SlotAssignment.cpp:
+        (WebCore::SlotAssignment::addSlotElementByName):
+        (WebCore::SlotAssignment::didChangeSlot):
+        * dom/SlotAssignment.h:
+        (WebCore::ShadowRoot::hostChildElementDidChange):
+
 2021-04-09  Philippe Normand  <[email protected]>
 
         [GStreamer] fast/canvas/canvas-createPattern-video-loading.html is failing since r218170

Modified: trunk/Source/WebCore/dom/SlotAssignment.cpp (275755 => 275756)


--- trunk/Source/WebCore/dom/SlotAssignment.cpp	2021-04-09 09:29:51 UTC (rev 275755)
+++ trunk/Source/WebCore/dom/SlotAssignment.cpp	2021-04-09 10:25:22 UTC (rev 275756)
@@ -120,6 +120,10 @@
         return makeUnique<Slot>();
     });
     auto& slot = *addResult.iterator->value;
+
+    if (!m_slotAssignmentsIsValid)
+        assignSlots(shadowRoot);
+
     bool needsSlotchangeEvent = shadowRoot.shouldFireSlotchangeEvent() && hasAssignedNodes(shadowRoot, slot);
 
     slot.elementCount++;
@@ -292,7 +296,9 @@
     auto* slot = m_slots.get(slotName);
     if (!slot)
         return;
-    
+
+    RenderTreeUpdater::tearDownRenderers(*shadowRoot.host());
+
     slot->assignedNodes.clear();
     m_slotAssignmentsIsValid = false;
 

Modified: trunk/Source/WebCore/dom/SlotAssignment.h (275755 => 275756)


--- trunk/Source/WebCore/dom/SlotAssignment.h	2021-04-09 09:29:51 UTC (rev 275755)
+++ trunk/Source/WebCore/dom/SlotAssignment.h	2021-04-09 10:25:22 UTC (rev 275756)
@@ -131,11 +131,8 @@
 
 inline void ShadowRoot::hostChildElementDidChange(const Element& childElement)
 {
-    if (!m_slotAssignment)
-        return;
-    if (m_host)
-        RenderTreeUpdater::tearDownRenderers(*m_host);
-    m_slotAssignment->hostChildElementDidChange(childElement, *this);
+    if (m_slotAssignment)
+        m_slotAssignment->hostChildElementDidChange(childElement, *this);
 }
 
 inline void ShadowRoot::hostChildElementDidChangeSlotAttribute(Element& element, const AtomString& oldValue, const AtomString& newValue)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to