Title: [175965] trunk
- Revision
- 175965
- Author
- [email protected]
- Date
- 2014-11-11 11:38:37 -0800 (Tue, 11 Nov 2014)
Log Message
[Frame Flattening] ASSERT(transaction->view == &view()) fails in RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction()
https://bugs.webkit.org/show_bug.cgi?id=138615
<rdar://problem/18928487>
Reviewed by David Hyatt.
Source/WebCore:
Fixes an issue where we always expected that the RenderView associated with the RenderBlock called in
RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction() is the same as the RenderView associated with
the top transaction in the UpdateScrollInfoAfterLayoutTransaction stack regardless of frame flattening. This
expectation is only true when frame flattening is disabled.
Test: fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction):
LayoutTests:
Add a test that causes an assertion failure in affected builds.
* fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update-expected.txt: Added.
* fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (175964 => 175965)
--- trunk/LayoutTests/ChangeLog 2014-11-11 19:18:58 UTC (rev 175964)
+++ trunk/LayoutTests/ChangeLog 2014-11-11 19:38:37 UTC (rev 175965)
@@ -1,3 +1,16 @@
+2014-11-11 Daniel Bates <[email protected]>
+
+ [Frame Flattening] ASSERT(transaction->view == &view()) fails in RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction()
+ https://bugs.webkit.org/show_bug.cgi?id=138615
+ <rdar://problem/18928487>
+
+ Reviewed by David Hyatt.
+
+ Add a test that causes an assertion failure in affected builds.
+
+ * fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update-expected.txt: Added.
+ * fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html: Added.
+
2014-11-11 Tibor Meszaros <[email protected]>
[EFL] Unskip now passing http tests
Added: trunk/LayoutTests/fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update-expected.txt (0 => 175965)
--- trunk/LayoutTests/fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update-expected.txt 2014-11-11 19:38:37 UTC (rev 175965)
@@ -0,0 +1,4 @@
+Test that the layout of a frame-flattened <iframe> inside a flex box doesn't try to modify the list of elements in the main frame that are waiting for a scroll update. This test passed if you see the word PASS below. Otherwise, it failed.
+
+
+PASS
Added: trunk/LayoutTests/fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html (0 => 175965)
--- trunk/LayoutTests/fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html (rev 0)
+++ trunk/LayoutTests/fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html 2014-11-11 19:38:37 UTC (rev 175965)
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+#flex-box-in-main-frame {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+}
+</style>
+<script>
+if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
+
+if (window.internals)
+ internals.settings.setFrameFlatteningEnabled(true);
+
+function runTest()
+{
+ var iframeDocument = document.getElementById("iframe").contentDocument;
+ iframeDocument.getElementById("container").style.display = "inline"; // Removes anonymous wrapper around "This is some inline text."
+ iframeDocument.body.offsetWidth; // Force layout
+
+ document.getElementById("console").innerText = "PASS";
+
+ if (window.testRunner)
+ testRunner.notifyDone();
+}
+</script>
+</head>
+<body>
+<p>Test that the layout of a frame-flattened <iframe> inside a flex box doesn't try to modify the list of elements in the main frame that are waiting for a scroll update. This test passed if you see the word PASS below. Otherwise, it failed.</p>
+<div id="flex-box-in-main-frame">
+ <!-- Note, we defer scroll updates to this flex box until we finish the layout of its children. -->
+ <iframe id="iframe" _onload_="runTest()" width="20%" height="20%" scrolling="auto" srcdoc="
+ <div id='container'>
+ This is some inline text.
+ <p>This is some text in a block.</p>
+ </div>
+ "></iframe>
+</div>
+<pre id="console">FAIL</pre>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (175964 => 175965)
--- trunk/Source/WebCore/ChangeLog 2014-11-11 19:18:58 UTC (rev 175964)
+++ trunk/Source/WebCore/ChangeLog 2014-11-11 19:38:37 UTC (rev 175965)
@@ -1,3 +1,21 @@
+2014-11-11 Daniel Bates <[email protected]>
+
+ [Frame Flattening] ASSERT(transaction->view == &view()) fails in RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction()
+ https://bugs.webkit.org/show_bug.cgi?id=138615
+ <rdar://problem/18928487>
+
+ Reviewed by David Hyatt.
+
+ Fixes an issue where we always expected that the RenderView associated with the RenderBlock called in
+ RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction() is the same as the RenderView associated with
+ the top transaction in the UpdateScrollInfoAfterLayoutTransaction stack regardless of frame flattening. This
+ expectation is only true when frame flattening is disabled.
+
+ Test: fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction):
+
2014-11-11 Tim Horton <[email protected]>
Adopt DDActionContext menu type SPI
Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (175964 => 175965)
--- trunk/Source/WebCore/rendering/RenderBlock.cpp 2014-11-11 19:18:58 UTC (rev 175964)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp 2014-11-11 19:38:37 UTC (rev 175965)
@@ -896,8 +896,8 @@
if (UNLIKELY(updateScrollInfoAfterLayoutTransactionStack().get() != 0)) {
UpdateScrollInfoAfterLayoutTransaction* transaction = currentUpdateScrollInfoAfterLayoutTransaction();
ASSERT(transaction);
- ASSERT(transaction->view == &view());
- transaction->blocks.remove(this);
+ if (transaction->view == &view())
+ transaction->blocks.remove(this);
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes