Title: [282047] trunk/Source/WebCore
Revision
282047
Author
[email protected]
Date
2021-09-05 06:44:12 -0700 (Sun, 05 Sep 2021)

Log Message

Ensure fragmented flow state invalidation even when the cached fragmented flow is not present.
https://bugs.webkit.org/show_bug.cgi?id=229914
<rdar://82025006>

Reviewed by Antti Koivisto.

The cached fragmented flow is the byproduct of querying the enclosing fragment during layout/repaint.
Sometimes when the layout process, between 2 subsequent style change does not generate such cached fragmented flows
the invalidation process stops early and leaves subtrees in an inconsistent state.

Let's use the passed in fragmented flow when the cached value is not present.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::resetEnclosingFragmentedFlowAndChildInfoIncludingDescendants):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (282046 => 282047)


--- trunk/Source/WebCore/ChangeLog	2021-09-04 16:55:13 UTC (rev 282046)
+++ trunk/Source/WebCore/ChangeLog	2021-09-05 13:44:12 UTC (rev 282047)
@@ -1,3 +1,20 @@
+2021-09-05  Alan Bujtas  <[email protected]>
+
+        Ensure fragmented flow state invalidation even when the cached fragmented flow is not present.
+        https://bugs.webkit.org/show_bug.cgi?id=229914
+        <rdar://82025006>
+
+        Reviewed by Antti Koivisto.
+
+        The cached fragmented flow is the byproduct of querying the enclosing fragment during layout/repaint.
+        Sometimes when the layout process, between 2 subsequent style change does not generate such cached fragmented flows
+        the invalidation process stops early and leaves subtrees in an inconsistent state.
+
+        Let's use the passed in fragmented flow when the cached value is not present.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::resetEnclosingFragmentedFlowAndChildInfoIncludingDescendants):
+
 2021-09-04  Peng Liu  <[email protected]>
 
         [iOS] Play/pause button's icon does not update when pausing in full screen

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (282046 => 282047)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2021-09-04 16:55:13 UTC (rev 282046)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2021-09-05 13:44:12 UTC (rev 282047)
@@ -2683,15 +2683,13 @@
     return rareData->m_enclosingFragmentedFlow.value().get();
 }
 
-void RenderBlock::resetEnclosingFragmentedFlowAndChildInfoIncludingDescendants(RenderFragmentedFlow*)
+void RenderBlock::resetEnclosingFragmentedFlowAndChildInfoIncludingDescendants(RenderFragmentedFlow* fragmentedFlow)
 {
     if (fragmentedFlowState() == NotInsideFragmentedFlow)
         return;
 
-    if (cachedEnclosingFragmentedFlowNeedsUpdate())
-        return;
-
-    auto* fragmentedFlow = cachedEnclosingFragmentedFlow();
+    if (auto* cachedFragmentedFlow = cachedEnclosingFragmentedFlow())
+        fragmentedFlow = cachedFragmentedFlow;
     setCachedEnclosingFragmentedFlowNeedsUpdate();
     RenderElement::resetEnclosingFragmentedFlowAndChildInfoIncludingDescendants(fragmentedFlow);
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to