Title: [217848] trunk
- Revision
- 217848
- Author
- [email protected]
- Date
- 2017-06-06 12:35:56 -0700 (Tue, 06 Jun 2017)
Log Message
Safari doesn't load newest The Order of the Stick comic.
https://bugs.webkit.org/show_bug.cgi?id=172949
<rdar://problem/32389730>
Reviewed by Antti Koivisto.
Source/WebCore:
As part of the table layout, RenderTableSection::layoutRows calls the RenderTableCell's layout() directly
(skipping the RenderTableRow parent). If during this call the RenderTableCell (or any of its descendant) marks the ancestor
chain dirty, this dirty flag on the RenderTableRows will never be cleared and we'll end up early returning from RenderTableSection::paint.
For certain type of float objects, we need to invalidate the line layout path during layout (and we mark the ancestors dirty).
This patch takes a conservative approach and marks the ancestors dirty only when the renderer is not dirty yet, but
as part of webkit.org/b/172947 we should revisit and validate whether the setNeedsLayout() is required at all.
Test: fast/table/floating-table-sibling-is-invisible.html
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):
LayoutTests:
* fast/table/floating-table-sibling-is-invisible-expected.html: Added.
* fast/table/floating-table-sibling-is-invisible.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (217847 => 217848)
--- trunk/LayoutTests/ChangeLog 2017-06-06 18:45:24 UTC (rev 217847)
+++ trunk/LayoutTests/ChangeLog 2017-06-06 19:35:56 UTC (rev 217848)
@@ -1,3 +1,14 @@
+2017-06-06 Zalan Bujtas <[email protected]>
+
+ Safari doesn't load newest The Order of the Stick comic.
+ https://bugs.webkit.org/show_bug.cgi?id=172949
+ <rdar://problem/32389730>
+
+ Reviewed by Antti Koivisto.
+
+ * fast/table/floating-table-sibling-is-invisible-expected.html: Added.
+ * fast/table/floating-table-sibling-is-invisible.html: Added.
+
2017-06-06 Emilio Cobos Álvarez <[email protected]>
[css-conditional] The one-string version of CSS.supports should be wrapped in implied parentheses.
Added: trunk/LayoutTests/fast/table/floating-table-sibling-is-invisible-expected.html (0 => 217848)
--- trunk/LayoutTests/fast/table/floating-table-sibling-is-invisible-expected.html (rev 0)
+++ trunk/LayoutTests/fast/table/floating-table-sibling-is-invisible-expected.html 2017-06-06 19:35:56 UTC (rev 217848)
@@ -0,0 +1,16 @@
+<html>
+<head>
+<title>This tests if we paint sibling content of a floating table</title>
+<style>
+div {
+ position: absolute;
+ left: 2px;
+ top: 2px;
+ width: 196px;
+ height: 196px;
+ background-color: green;
+}
+</style>
+</head>
+<body><div></div></body>
+</html>
Added: trunk/LayoutTests/fast/table/floating-table-sibling-is-invisible.html (0 => 217848)
--- trunk/LayoutTests/fast/table/floating-table-sibling-is-invisible.html (rev 0)
+++ trunk/LayoutTests/fast/table/floating-table-sibling-is-invisible.html 2017-06-06 19:35:56 UTC (rev 217848)
@@ -0,0 +1,27 @@
+<html>
+<head>
+<title>This tests if we paint sibling content of a floating table</title>
+<style>
+.container {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+}
+
+td {
+ color: transparent;
+ font-size: 10px;
+ padding: 0px;
+}
+
+tr {
+ background-color: green;
+}
+
+</style>
+</head>
+<body>
+<!-- PASS if the green box is visible above -->
+<table class=container width="200px" height="200px"><tr><td><table align="left"><tr><td> </td></tr></table><p>foobar</p></td></tr></table>
+</body>
+</html>
\ No newline at end of file
Modified: trunk/Source/WebCore/ChangeLog (217847 => 217848)
--- trunk/Source/WebCore/ChangeLog 2017-06-06 18:45:24 UTC (rev 217847)
+++ trunk/Source/WebCore/ChangeLog 2017-06-06 19:35:56 UTC (rev 217848)
@@ -1,3 +1,23 @@
+2017-06-06 Zalan Bujtas <[email protected]>
+
+ Safari doesn't load newest The Order of the Stick comic.
+ https://bugs.webkit.org/show_bug.cgi?id=172949
+ <rdar://problem/32389730>
+
+ Reviewed by Antti Koivisto.
+
+ As part of the table layout, RenderTableSection::layoutRows calls the RenderTableCell's layout() directly
+ (skipping the RenderTableRow parent). If during this call the RenderTableCell (or any of its descendant) marks the ancestor
+ chain dirty, this dirty flag on the RenderTableRows will never be cleared and we'll end up early returning from RenderTableSection::paint.
+ For certain type of float objects, we need to invalidate the line layout path during layout (and we mark the ancestors dirty).
+ This patch takes a conservative approach and marks the ancestors dirty only when the renderer is not dirty yet, but
+ as part of webkit.org/b/172947 we should revisit and validate whether the setNeedsLayout() is required at all.
+
+ Test: fast/table/floating-table-sibling-is-invisible.html
+
+ * rendering/RenderBlockFlow.cpp:
+ (WebCore::RenderBlockFlow::invalidateLineLayoutPath):
+
2017-06-06 Emilio Cobos Álvarez <[email protected]>
[css-conditional] The one-string version of CSS.supports should be wrapped in implied parentheses.
Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (217847 => 217848)
--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp 2017-06-06 18:45:24 UTC (rev 217847)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp 2017-06-06 19:35:56 UTC (rev 217848)
@@ -3691,8 +3691,11 @@
case SimpleLinesPath:
// The simple line layout may have become invalid.
m_simpleLineLayout = nullptr;
+ setLineLayoutPath(UndeterminedPath);
+ if (needsLayout())
+ return;
+ // FIXME: We should just kick off a subtree layout here (if needed at all) see webkit.org/b/172947.
setNeedsLayout();
- setLineLayoutPath(UndeterminedPath);
return;
}
ASSERT_NOT_REACHED();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes