Title: [224773] trunk
- Revision
- 224773
- Author
- [email protected]
- Date
- 2017-11-13 13:14:46 -0800 (Mon, 13 Nov 2017)
Log Message
Don't eliminate whitespace renderer if the previous sibling is a text renderer
https://bugs.webkit.org/show_bug.cgi?id=179620
Reviewed by Zalan Bujtas.
Source/WebCore:
Currently whitespace elimination code doesn't consider runs of text renderers. We should always make whitespace
renderer if the previous renderer is a text renderer. The behavior should be the same as if those were a single
renderer with merged text. This situation can happen easily with display:contents.
This fixes the remaining flexbox failures in display:contents tests.
* style/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::textRendererIsNeeded):
We need a renderer if the previous rendere is RenderText.
LayoutTests:
* TestExpectations:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (224772 => 224773)
--- trunk/LayoutTests/ChangeLog 2017-11-13 21:06:23 UTC (rev 224772)
+++ trunk/LayoutTests/ChangeLog 2017-11-13 21:14:46 UTC (rev 224773)
@@ -1,3 +1,12 @@
+2017-11-13 Antti Koivisto <[email protected]>
+
+ Don't eliminate whitespace renderer if the previous sibling is a text renderer
+ https://bugs.webkit.org/show_bug.cgi?id=179620
+
+ Reviewed by Zalan Bujtas.
+
+ * TestExpectations:
+
2017-11-13 Chris Dumez <[email protected]>
Implement "Service Worker Has No Pending Events" / "Update Service Worker Extended Events Set" algorithms
Modified: trunk/LayoutTests/TestExpectations (224772 => 224773)
--- trunk/LayoutTests/TestExpectations 2017-11-13 21:06:23 UTC (rev 224772)
+++ trunk/LayoutTests/TestExpectations 2017-11-13 21:14:46 UTC (rev 224773)
@@ -1378,14 +1378,8 @@
########################################
### START OF display: contents failures
-webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-flex-003.html [ ImageOnlyFailure ]
webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-table-001-inline.html [ ImageOnlyFailure ]
-webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-flex-002-none.html [ ImageOnlyFailure ]
-webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-flex-002.html [ ImageOnlyFailure ]
webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-flow-root-001.html [ ImageOnlyFailure ]
-webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-flex-003-none.html [ ImageOnlyFailure ]
-webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-flex-002-inline.html [ ImageOnlyFailure ]
-webkit.org/b/157477 imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-flex-003-inline.html [ ImageOnlyFailure ]
### END OF display: contents failures
########################################
Modified: trunk/Source/WebCore/ChangeLog (224772 => 224773)
--- trunk/Source/WebCore/ChangeLog 2017-11-13 21:06:23 UTC (rev 224772)
+++ trunk/Source/WebCore/ChangeLog 2017-11-13 21:14:46 UTC (rev 224773)
@@ -1,3 +1,21 @@
+2017-11-13 Antti Koivisto <[email protected]>
+
+ Don't eliminate whitespace renderer if the previous sibling is a text renderer
+ https://bugs.webkit.org/show_bug.cgi?id=179620
+
+ Reviewed by Zalan Bujtas.
+
+ Currently whitespace elimination code doesn't consider runs of text renderers. We should always make whitespace
+ renderer if the previous renderer is a text renderer. The behavior should be the same as if those were a single
+ renderer with merged text. This situation can happen easily with display:contents.
+
+ This fixes the remaining flexbox failures in display:contents tests.
+
+ * style/RenderTreeUpdater.cpp:
+ (WebCore::RenderTreeUpdater::textRendererIsNeeded):
+
+ We need a renderer if the previous rendere is RenderText.
+
2017-11-13 Chris Dumez <[email protected]>
Implement "Service Worker Has No Pending Events" / "Update Service Worker Extended Events Set" algorithms
Modified: trunk/Source/WebCore/style/RenderTreeUpdater.cpp (224772 => 224773)
--- trunk/Source/WebCore/style/RenderTreeUpdater.cpp 2017-11-13 21:06:23 UTC (rev 224772)
+++ trunk/Source/WebCore/style/RenderTreeUpdater.cpp 2017-11-13 21:14:46 UTC (rev 224773)
@@ -398,7 +398,8 @@
bool RenderTreeUpdater::textRendererIsNeeded(const Text& textNode)
{
- const RenderElement& parentRenderer = renderTreePosition().parent();
+ auto& renderingParent = this->renderingParent();
+ auto& parentRenderer = renderingParent.renderTreePosition->parent();
if (!parentRenderer.canHaveChildren())
return false;
if (parentRenderer.element() && !parentRenderer.element()->childShouldCreateRenderer(textNode))
@@ -409,13 +410,17 @@
return false;
if (!textNode.containsOnlyWhitespace())
return true;
+ if (is<RenderText>(renderingParent.previousChildRenderer))
+ return true;
// This text node has nothing but white space. We may still need a renderer in some cases.
- if (parentRenderer.isTable() || parentRenderer.isTableRow() || parentRenderer.isTableSection() || parentRenderer.isRenderTableCol() || parentRenderer.isFrameSet() || (parentRenderer.isFlexibleBox() && !parentRenderer.isRenderButton()))
+ if (parentRenderer.isTable() || parentRenderer.isTableRow() || parentRenderer.isTableSection() || parentRenderer.isRenderTableCol() || parentRenderer.isFrameSet())
return false;
+ if (parentRenderer.isFlexibleBox() && !parentRenderer.isRenderButton())
+ return false;
if (parentRenderer.style().preserveNewline()) // pre/pre-wrap/pre-line always make renderers.
return true;
- auto* previousRenderer = renderingParent().previousChildRenderer;
+ auto* previousRenderer = renderingParent.previousChildRenderer;
if (previousRenderer && previousRenderer->isBR()) // <span><br/> <br/></span>
return false;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes