Title: [222874] trunk/Source/WebCore
Revision
222874
Author
[email protected]
Date
2017-10-04 13:23:10 -0700 (Wed, 04 Oct 2017)

Log Message

RenderMultiColumnFlow::m_beingEvacuated is redundant.
https://bugs.webkit.org/show_bug.cgi?id=177886
<rdar://problem/34815997>

Reviewed by Simon Fraser.

m_beingEvacuated was introduced to protect RenderMultiColumnFlow from triggering
remove/insert code while the column is being destroyed and the descendants are getting reparented.
However,
1. the setMultiColumnFlow(nullptr) call already protects from triggering the remove callback
2. When adding the children back to their original position, we should not be able to find
this column as the enclosing block anymore (simply because we are moving the children as siblings
to the multicol renderer)

Covered by existing tests.

* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):
(WebCore::RenderMultiColumnFlow::evacuateAndDestroy):
(WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted):
(WebCore::RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved):
* rendering/RenderMultiColumnFlow.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (222873 => 222874)


--- trunk/Source/WebCore/ChangeLog	2017-10-04 20:20:43 UTC (rev 222873)
+++ trunk/Source/WebCore/ChangeLog	2017-10-04 20:23:10 UTC (rev 222874)
@@ -1,3 +1,28 @@
+2017-10-04  Zalan Bujtas  <[email protected]>
+
+        RenderMultiColumnFlow::m_beingEvacuated is redundant.
+        https://bugs.webkit.org/show_bug.cgi?id=177886
+        <rdar://problem/34815997>
+
+        Reviewed by Simon Fraser.
+
+        m_beingEvacuated was introduced to protect RenderMultiColumnFlow from triggering
+        remove/insert code while the column is being destroyed and the descendants are getting reparented.
+        However, 
+        1. the setMultiColumnFlow(nullptr) call already protects from triggering the remove callback
+        2. When adding the children back to their original position, we should not be able to find
+        this column as the enclosing block anymore (simply because we are moving the children as siblings
+        to the multicol renderer) 
+
+        Covered by existing tests.
+
+        * rendering/RenderMultiColumnFlow.cpp:
+        (WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):
+        (WebCore::RenderMultiColumnFlow::evacuateAndDestroy):
+        (WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted):
+        (WebCore::RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved):
+        * rendering/RenderMultiColumnFlow.h:
+
 2017-10-04  Antti Koivisto  <[email protected]>
 
         Fix typo.

Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlow.cpp (222873 => 222874)


--- trunk/Source/WebCore/rendering/RenderMultiColumnFlow.cpp	2017-10-04 20:20:43 UTC (rev 222873)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlow.cpp	2017-10-04 20:23:10 UTC (rev 222874)
@@ -49,7 +49,6 @@
     , m_needsHeightsRecalculation(false)
     , m_progressionIsInline(false)
     , m_progressionIsReversed(false)
-    , m_beingEvacuated(false)
 {
     setFragmentedFlowState(InsideInFragmentedFlow);
 }
@@ -165,8 +164,6 @@
 void RenderMultiColumnFlow::evacuateAndDestroy()
 {
     RenderBlockFlow* multicolContainer = multiColumnBlockFlow();
-    m_beingEvacuated = true;
-    
     // Delete the line box tree.
     deleteLines();
     
@@ -403,7 +400,7 @@
 
 void RenderMultiColumnFlow::fragmentedFlowDescendantInserted(RenderObject& newDescendant)
 {
-    if (gShiftingSpanner || m_beingEvacuated || newDescendant.isInFlowRenderFragmentedFlow())
+    if (gShiftingSpanner || newDescendant.isInFlowRenderFragmentedFlow())
         return;
 
     Vector<RenderPtr<RenderObject>> spannersToDelete;
@@ -468,8 +465,6 @@
 
 void RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved(RenderObject& relative)
 {
-    if (m_beingEvacuated)
-        return;
     invalidateFragments();
     if (is<RenderMultiColumnSpannerPlaceholder>(relative)) {
         // Remove the map entry for this spanner, but leave the actual spanner renderer alone. Also

Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlow.h (222873 => 222874)


--- trunk/Source/WebCore/rendering/RenderMultiColumnFlow.h	2017-10-04 20:20:43 UTC (rev 222873)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlow.h	2017-10-04 20:23:10 UTC (rev 222874)
@@ -145,7 +145,6 @@
     
     bool m_progressionIsInline;
     bool m_progressionIsReversed;
-    bool m_beingEvacuated;
     
     static bool gShiftingSpanner;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to