Title: [262033] trunk
Revision
262033
Author
obru...@igalia.com
Date
2020-05-21 15:59:01 -0700 (Thu, 21 May 2020)

Log Message

[css-grid] Don't create renderers for whitespace nodes
https://bugs.webkit.org/show_bug.cgi?id=212220

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Import WPT test.

* web-platform-tests/css/css-grid/grid-items/w3c-import.log:
* web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001-expected.html: Added.
* web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html: Added.

Source/WebCore:

Even with 'white-space: pre' we shouldn't create RenderTexts
for whitespace-only nodes in grid layout, according to
https://drafts.csswg.org/css-grid/#grid-items

This patch is based on https://codereview.chromium.org/16888008

Tests: fast/text/simple-line-layout-with-zero-sized-font.html
       imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html

* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::textRendererIsNeeded):

LayoutTests:

Update test expectation.

* fast/text/simple-line-layout-with-zero-sized-font-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (262032 => 262033)


--- trunk/LayoutTests/ChangeLog	2020-05-21 22:30:01 UTC (rev 262032)
+++ trunk/LayoutTests/ChangeLog	2020-05-21 22:59:01 UTC (rev 262033)
@@ -1,3 +1,14 @@
+2020-05-21  Oriol Brufau  <obru...@igalia.com>
+
+        [css-grid] Don't create renderers for whitespace nodes
+        https://bugs.webkit.org/show_bug.cgi?id=212220
+
+        Reviewed by Manuel Rego Casasnovas.
+
+        Update test expectation.
+
+        * fast/text/simple-line-layout-with-zero-sized-font-expected.txt:
+
 2020-05-21  Diego Pino Garcia  <dp...@igalia.com>
 
         [GTK] Gardening, update expectations after r262016

Modified: trunk/LayoutTests/fast/text/simple-line-layout-with-zero-sized-font-expected.txt (262032 => 262033)


--- trunk/LayoutTests/fast/text/simple-line-layout-with-zero-sized-font-expected.txt	2020-05-21 22:30:01 UTC (rev 262032)
+++ trunk/LayoutTests/fast/text/simple-line-layout-with-zero-sized-font-expected.txt	2020-05-21 22:59:01 UTC (rev 262033)
@@ -1,2 +1,2 @@
 PASS if no assert in debug.
-	
+

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (262032 => 262033)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2020-05-21 22:30:01 UTC (rev 262032)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2020-05-21 22:59:01 UTC (rev 262033)
@@ -1,3 +1,16 @@
+2020-05-21  Oriol Brufau  <obru...@igalia.com>
+
+        [css-grid] Don't create renderers for whitespace nodes
+        https://bugs.webkit.org/show_bug.cgi?id=212220
+
+        Reviewed by Manuel Rego Casasnovas.
+
+        Import WPT test.
+
+        * web-platform-tests/css/css-grid/grid-items/w3c-import.log:
+        * web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001-expected.html: Added.
+        * web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html: Added.
+
 2020-05-20  Oriol Brufau  <obru...@igalia.com>
 
         Computed min-width/height for auto depends on box

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/w3c-import.log (262032 => 262033)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/w3c-import.log	2020-05-21 22:30:01 UTC (rev 262032)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/w3c-import.log	2020-05-21 22:59:01 UTC (rev 262033)
@@ -259,3 +259,5 @@
 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/ref-filled-green-100px-square-image.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/table-with-infinite-max-intrinsic-width-expected.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/table-with-infinite-max-intrinsic-width.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001-expected.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001-expected.html (0 => 262033)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001-expected.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001-expected.html	2020-05-21 22:59:01 UTC (rev 262033)
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<link href="" rel="stylesheet">
+<style>
+  .item {
+    height: 100%;
+    width: 30px;
+    background: salmon;
+  }
+</style>
+<body>
+  <p>This test passes if it has the same output than the reference. As spec states that child text runs containing only white space should not rendered (just as if its text nodes were display:none).</p>
+  <div class="grid">
+    <div class="item"></div>
+  </div>
+</body>
+</html>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html (0 => 262033)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html	2020-05-21 22:59:01 UTC (rev 262033)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<title>CSS Grid : Whitespace in grid item</title>
+<link rel="author" title="Christian Biesinger" href=""
+<link rel="help" href=""
+<link rel="match" href=""
+<link rel="help" href=""
+<meta name="assert" content="Grid items shouldn't be created for white spaces."/>
+<link href="" rel="stylesheet">
+<style>
+  .grid {
+    white-space: pre;
+  }
+  .item {
+    height: 100%;
+    width: 30px;
+    background: salmon;
+  }
+</style>
+<body>
+  <p>This test passes if it has the same output than the reference. As spec states that child text runs containing only white space should not rendered (just as if its text nodes were display:none).</p>
+  <div class="grid">
+
+    <div class="item"></div> &#9;
+  </div>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (262032 => 262033)


--- trunk/Source/WebCore/ChangeLog	2020-05-21 22:30:01 UTC (rev 262032)
+++ trunk/Source/WebCore/ChangeLog	2020-05-21 22:59:01 UTC (rev 262033)
@@ -1,3 +1,22 @@
+2020-05-21  Oriol Brufau  <obru...@igalia.com>
+
+        [css-grid] Don't create renderers for whitespace nodes
+        https://bugs.webkit.org/show_bug.cgi?id=212220
+
+        Reviewed by Manuel Rego Casasnovas.
+
+        Even with 'white-space: pre' we shouldn't create RenderTexts
+        for whitespace-only nodes in grid layout, according to
+        https://drafts.csswg.org/css-grid/#grid-items
+
+        This patch is based on https://codereview.chromium.org/16888008
+
+        Tests: fast/text/simple-line-layout-with-zero-sized-font.html
+               imported/w3c/web-platform-tests/css/css-grid/grid-items/whitespace-in-grid-item-001.html
+
+        * rendering/updating/RenderTreeUpdater.cpp:
+        (WebCore::RenderTreeUpdater::textRendererIsNeeded):
+
 2020-05-21  Simon Fraser  <simon.fra...@apple.com>
 
         Fix rare crash in TileGrid::platformCALayerShowRepaintCounter()

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeUpdater.cpp (262032 => 262033)


--- trunk/Source/WebCore/rendering/updating/RenderTreeUpdater.cpp	2020-05-21 22:30:01 UTC (rev 262032)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeUpdater.cpp	2020-05-21 22:59:01 UTC (rev 262033)
@@ -427,10 +427,8 @@
     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())
+    if (parentRenderer.isTable() || parentRenderer.isTableRow() || parentRenderer.isTableSection() || parentRenderer.isRenderTableCol() || parentRenderer.isFrameSet() || parentRenderer.isRenderGrid() || (parentRenderer.isFlexibleBox() && !parentRenderer.isRenderButton()))
         return false;
-    if (parentRenderer.isFlexibleBox() && !parentRenderer.isRenderButton())
-        return false;
     if (parentRenderer.style().preserveNewline()) // pre/pre-wrap/pre-line always make renderers.
         return true;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to