Title: [207343] trunk
Revision
207343
Author
r...@igalia.com
Date
2016-10-14 09:23:18 -0700 (Fri, 14 Oct 2016)

Log Message

[css-grid] Changing the argument on fit-content() doesn't cause the grid to be relayout
https://bugs.webkit.org/show_bug.cgi?id=163434

Reviewed by Sergio Villar Senin.

Source/WebCore:

When fit-content() was implemented a new attribute
m_fitContentTrackBreadth was added to GridTrackSize.
However we forgot to include it in the == operator implementation,
so we were missing the changes on that value.

Now if you change the argument of a fit-content() track,
the track size is properly recomputed.

Test: fast/css-grid-layout/grid-change-fit-content-argument.html

* rendering/style/GridTrackSize.h:
(WebCore::GridTrackSize::operator==): Check m_fitContentTrackBreadth.

LayoutTests:

* fast/css-grid-layout/grid-change-fit-content-argument-expected.txt: Added.
* fast/css-grid-layout/grid-change-fit-content-argument.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (207342 => 207343)


--- trunk/LayoutTests/ChangeLog	2016-10-14 16:17:47 UTC (rev 207342)
+++ trunk/LayoutTests/ChangeLog	2016-10-14 16:23:18 UTC (rev 207343)
@@ -1,3 +1,13 @@
+2016-10-14  Manuel Rego Casasnovas  <r...@igalia.com>
+
+        [css-grid] Changing the argument on fit-content() doesn't cause the grid to be relayout
+        https://bugs.webkit.org/show_bug.cgi?id=163434
+
+        Reviewed by Sergio Villar Senin.
+
+        * fast/css-grid-layout/grid-change-fit-content-argument-expected.txt: Added.
+        * fast/css-grid-layout/grid-change-fit-content-argument.html: Added.
+
 2016-10-14  Joseph Pecoraro  <pecor...@apple.com>
 
         test262: Failure with RegExp.prototype.compile when pattern is undefined

Added: trunk/LayoutTests/fast/css-grid-layout/grid-change-fit-content-argument-expected.txt (0 => 207343)


--- trunk/LayoutTests/fast/css-grid-layout/grid-change-fit-content-argument-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-change-fit-content-argument-expected.txt	2016-10-14 16:23:18 UTC (rev 207343)
@@ -0,0 +1,11 @@
+This test checks that grid-template-{rows|columns} with fit-content() tracks recomputes the tracks when the fit-content() argument is modified.
+XXXX XXX XX X X
+PASS
+PASS
+PASS
+PASS
+XXXX XXX XX X X
+PASS
+PASS
+PASS
+PASS

Added: trunk/LayoutTests/fast/css-grid-layout/grid-change-fit-content-argument.html (0 => 207343)


--- trunk/LayoutTests/fast/css-grid-layout/grid-change-fit-content-argument.html	                        (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-change-fit-content-argument.html	2016-10-14 16:23:18 UTC (rev 207343)
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<link href="" rel="stylesheet">
+<link href="" rel="stylesheet">
+<style>
+.grid {
+    position: relative;
+    justify-content: start;
+    align-content: start;
+    font: 25px/1 Ahem;
+}
+</style>
+<script src=""
+<script>
+function setGridTemplate(id, gridTemplateRows, gridTemplateColumns)
+{
+     var gridElement = document.getElementById(id);
+     gridElement.style.gridTemplateRows = gridTemplateRows;
+     gridElement.style.gridTemplateColumns = gridTemplateColumns;
+}
+
+function testGridItemDefinitions(gridItemData)
+{
+    var item = document.getElementById(gridItemData.id);
+    item.setAttribute("data-expected-width", gridItemData.width);
+    item.setAttribute("data-expected-height", gridItemData.height);
+    item.setAttribute("data-offset-x", gridItemData.x);
+    item.setAttribute("data-offset-y", gridItemData.y);
+
+    checkLayout(".grid");
+}
+
+function testChangingGridDefinitions()
+{
+     // Test changing the argument of fit-content() tracks.
+     setGridTemplate("grid1", "none", "fit-content(100px)");
+     testGridItemDefinitions({"id": "item1", "width": "100", "height": "100", "x": "0", "y": "0" });
+
+     setGridTemplate("grid1", "none", "fit-content(150px)");
+     testGridItemDefinitions({"id": "item1", "width": "150", "height": "75", "x": "0", "y": "0" });
+
+     setGridTemplate("grid2", "fit-content(100px)", "none");
+     testGridItemDefinitions({"id": "item2", "width": "100", "height": "100", "x": "0", "y": "0" });
+
+     setGridTemplate("grid2", "fit-content(150px)", "none");
+     testGridItemDefinitions({"id": "item2", "width": "75", "height": "150", "x": "0", "y": "0" });
+}
+
+window.addEventListener("load", testChangingGridDefinitions, false);
+</script>
+
+<div>This test checks that grid-template-{rows|columns} with fit-content() tracks recomputes the tracks when the fit-content() argument is modified.</div>
+
+<div id="grid1" class="grid fit-content">
+    <div id="item1" class="autoRowAutoColumn">XXXX XXX XX X X</div>
+</div>
+
+<div id="grid2" class="grid fit-content">
+    <div id="item2" class="autoRowAutoColumn verticalLR">XXXX XXX XX X X</div>
+</div>

Modified: trunk/Source/WebCore/ChangeLog (207342 => 207343)


--- trunk/Source/WebCore/ChangeLog	2016-10-14 16:17:47 UTC (rev 207342)
+++ trunk/Source/WebCore/ChangeLog	2016-10-14 16:23:18 UTC (rev 207343)
@@ -1,3 +1,23 @@
+2016-10-14  Manuel Rego Casasnovas  <r...@igalia.com>
+
+        [css-grid] Changing the argument on fit-content() doesn't cause the grid to be relayout
+        https://bugs.webkit.org/show_bug.cgi?id=163434
+
+        Reviewed by Sergio Villar Senin.
+
+        When fit-content() was implemented a new attribute
+        m_fitContentTrackBreadth was added to GridTrackSize.
+        However we forgot to include it in the == operator implementation,
+        so we were missing the changes on that value.
+
+        Now if you change the argument of a fit-content() track,
+        the track size is properly recomputed.
+
+        Test: fast/css-grid-layout/grid-change-fit-content-argument.html
+
+        * rendering/style/GridTrackSize.h:
+        (WebCore::GridTrackSize::operator==): Check m_fitContentTrackBreadth.
+
 2016-10-14  Commit Queue  <commit-qu...@webkit.org>
 
         Unreviewed, rolling out r207317.

Modified: trunk/Source/WebCore/rendering/style/GridTrackSize.h (207342 => 207343)


--- trunk/Source/WebCore/rendering/style/GridTrackSize.h	2016-10-14 16:17:47 UTC (rev 207342)
+++ trunk/Source/WebCore/rendering/style/GridTrackSize.h	2016-10-14 16:23:18 UTC (rev 207343)
@@ -93,7 +93,8 @@
 
     bool operator==(const GridTrackSize& other) const
     {
-        return m_type == other.m_type && m_minTrackBreadth == other.m_minTrackBreadth && m_maxTrackBreadth == other.m_maxTrackBreadth;
+        return m_type == other.m_type && m_minTrackBreadth == other.m_minTrackBreadth && m_maxTrackBreadth == other.m_maxTrackBreadth
+            && m_fitContentTrackBreadth == other.m_fitContentTrackBreadth;
     }
 
     void cacheMinMaxTrackBreadthTypes()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to