Title: [195267] releases/WebKitGTK/webkit-2.10
- Revision
- 195267
- Author
- [email protected]
- Date
- 2016-01-19 01:02:16 -0800 (Tue, 19 Jan 2016)
Log Message
Merge r195069 - ASSERTION FAILED: !newRelayoutRoot.container() || !newRelayoutRoot.container()->needsLayout() in WebCore::FrameView::scheduleRelayoutOfSubtree
https://bugs.webkit.org/show_bug.cgi?id=151605#c1
Reviewed by David Hyatt.
Do not let RenderMultiColumnSet/RenderFlowThread mark ancestors dirty while updating scrollbars
for overflow content. While updating scrollbars, we only layout descendants so marking parents dirty
is unnecessary and could lead to an invalid dirty state.
Source/WebCore:
Test: fast/multicol/body-stuck-with-dirty-bit-with-columns.html
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutSpecialExcludedChild):
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::invalidateRegions):
* rendering/RenderFlowThread.h:
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::prepareForLayout):
LayoutTests:
* fast/multicol/body-stuck-with-dirty-bit-with-columns-expected.txt: Added.
* fast/multicol/body-stuck-with-dirty-bit-with-columns.html: Added.
Modified Paths
Added Paths
Diff
Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog (195266 => 195267)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog 2016-01-19 09:00:42 UTC (rev 195266)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog 2016-01-19 09:02:16 UTC (rev 195267)
@@ -1,3 +1,17 @@
+2016-01-14 Zalan Bujtas <[email protected]>
+
+ ASSERTION FAILED: !newRelayoutRoot.container() || !newRelayoutRoot.container()->needsLayout() in WebCore::FrameView::scheduleRelayoutOfSubtree
+ https://bugs.webkit.org/show_bug.cgi?id=151605#c1
+
+ Reviewed by David Hyatt.
+
+ Do not let RenderMultiColumnSet/RenderFlowThread mark ancestors dirty while updating scrollbars
+ for overflow content. While updating scrollbars, we only layout descendants so marking parents dirty
+ is unnecessary and could lead to an invalid dirty state.
+
+ * fast/multicol/body-stuck-with-dirty-bit-with-columns-expected.txt: Added.
+ * fast/multicol/body-stuck-with-dirty-bit-with-columns.html: Added.
+
2016-01-14 Martin Robinson <[email protected]>
[GTK] [EFL] Hyphenation can never work in practice due to requirements on lang tags
Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/multicol/body-stuck-with-dirty-bit-with-columns-expected.txt (0 => 195267)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/multicol/body-stuck-with-dirty-bit-with-columns-expected.txt (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/multicol/body-stuck-with-dirty-bit-with-columns-expected.txt 2016-01-19 09:02:16 UTC (rev 195267)
@@ -0,0 +1 @@
+
Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/multicol/body-stuck-with-dirty-bit-with-columns.html (0 => 195267)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/multicol/body-stuck-with-dirty-bit-with-columns.html (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/multicol/body-stuck-with-dirty-bit-with-columns.html 2016-01-19 09:02:16 UTC (rev 195267)
@@ -0,0 +1,39 @@
+<title>This tests that we don't leave any renderer dirty when layout is done. PASS if no crash or assert in debug.</title>
+<style>
+*{
+ -webkit-columns: 55px 87;
+ overflow-y: scroll;
+ -webkit-background-composite: source-out;
+ width: 0%;
+}
+*|* {
+ display: inline-flex;
+}
+</style>
+<summary id="id_0">
+ aa
+ <progress></progress>
+</summary>
+<script>
+if (window.testRunner)
+ testRunner.waitUntilDone();
+
+setTimeout(function() {
+ if (window.localStorage.stage == 3) {
+ delete window.localStorage.stage;
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.notifyDone();
+ }
+ } else {
+ if (window.localStorage.stage)
+ window.localStorage.stage++;
+ else
+ window.localStorage.stage = 1;
+ window.scrollTo(0,document.body.scrollHeight);
+ v_0 = document.getElementById('id_0');
+ v_0.removeChild(v_0.childNodes[0]);
+ location.reload();
+ }
+}, 0);
+</script>
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (195266 => 195267)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2016-01-19 09:00:42 UTC (rev 195266)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2016-01-19 09:02:16 UTC (rev 195267)
@@ -1,3 +1,24 @@
+2016-01-14 Zalan Bujtas <[email protected]>
+
+ ASSERTION FAILED: !newRelayoutRoot.container() || !newRelayoutRoot.container()->needsLayout() in WebCore::FrameView::scheduleRelayoutOfSubtree
+ https://bugs.webkit.org/show_bug.cgi?id=151605#c1
+
+ Reviewed by David Hyatt.
+
+ Do not let RenderMultiColumnSet/RenderFlowThread mark ancestors dirty while updating scrollbars
+ for overflow content. While updating scrollbars, we only layout descendants so marking parents dirty
+ is unnecessary and could lead to an invalid dirty state.
+
+ Test: fast/multicol/body-stuck-with-dirty-bit-with-columns.html
+
+ * rendering/RenderBlockFlow.cpp:
+ (WebCore::RenderBlockFlow::layoutSpecialExcludedChild):
+ * rendering/RenderFlowThread.cpp:
+ (WebCore::RenderFlowThread::invalidateRegions):
+ * rendering/RenderFlowThread.h:
+ * rendering/RenderMultiColumnSet.cpp:
+ (WebCore::RenderMultiColumnSet::prepareForLayout):
+
2016-01-14 Martin Robinson <[email protected]>
[GTK] [EFL] Hyphenation can never work in practice due to requirements on lang tags
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderBlockFlow.cpp (195266 => 195267)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderBlockFlow.cpp 2016-01-19 09:00:42 UTC (rev 195266)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderBlockFlow.cpp 2016-01-19 09:02:16 UTC (rev 195267)
@@ -3755,7 +3755,7 @@
for (RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet(); columnSet; columnSet = columnSet->nextSiblingMultiColumnSet())
columnSet->prepareForLayout(!flowThread->inBalancingPass());
- flowThread->invalidateRegions();
+ flowThread->invalidateRegions(MarkOnlyThis);
flowThread->setNeedsHeightsRecalculation(true);
flowThread->layout();
} else {
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderFlowThread.cpp (195266 => 195267)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderFlowThread.cpp 2016-01-19 09:00:42 UTC (rev 195266)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderFlowThread.cpp 2016-01-19 09:02:16 UTC (rev 195267)
@@ -106,7 +106,7 @@
m_regionList.remove(renderRegion);
}
-void RenderFlowThread::invalidateRegions()
+void RenderFlowThread::invalidateRegions(MarkingBehavior markingParents)
{
ASSERT(!inFinalLayoutPhase());
@@ -125,7 +125,7 @@
if (m_lineToRegionMap)
m_lineToRegionMap->clear();
m_layersToRegionMappingsDirty = true;
- setNeedsLayout();
+ setNeedsLayout(markingParents);
m_regionsInvalidated = true;
}
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderFlowThread.h (195266 => 195267)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderFlowThread.h 2016-01-19 09:00:42 UTC (rev 195266)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderFlowThread.h 2016-01-19 09:02:16 UTC (rev 195267)
@@ -85,7 +85,7 @@
virtual void regionChangedWritingMode(RenderRegion*) { }
void validateRegions();
- void invalidateRegions();
+ void invalidateRegions(MarkingBehavior = MarkContainingBlockChain);
bool hasValidRegionInfo() const { return !m_regionsInvalidated && !m_regionList.isEmpty(); }
// Some renderers (column spanners) are moved out of the flow thread to live among column
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderMultiColumnSet.cpp (195266 => 195267)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderMultiColumnSet.cpp 2016-01-19 09:00:42 UTC (rev 195266)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderMultiColumnSet.cpp 2016-01-19 09:02:16 UTC (rev 195267)
@@ -362,7 +362,7 @@
// Start with "infinite" flow thread portion height until height is known.
setLogicalBottomInFlowThread(RenderFlowThread::maxLogicalHeight());
- setNeedsLayout();
+ setNeedsLayout(MarkOnlyThis);
}
void RenderMultiColumnSet::beginFlow(RenderBlock* container)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes