<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[205960] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/205960">205960</a></dd>
<dt>Author</dt> <dd>svillar@igalia.com</dd>
<dt>Date</dt> <dd>2016-09-15 01:42:10 -0700 (Thu, 15 Sep 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[css-grid] Fix intrinsic size computation with flexible sized tracks
https://bugs.webkit.org/show_bug.cgi?id=161903

Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

This is fixing a regression added in <a href="http://trac.webkit.org/projects/webkit/changeset/192154">r192154</a>. When computing the min content size of a grid
container (min preferred logical width) we should not take into account the fr tracks. As
stated in the early versions of the spec that size is the sum of the tracks' base sizes
before running the maximize tracks step.

That regression was causing sizing issues in grids with fr tracks both when under
min|max-content constrains and also when used as grid items (in nested grids).

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):

LayoutTests:

Added a couple of new test cases, grid with fr tracks inside a container with intrinsic
dimensions and and grid with fr tracks inside another grid with fr tracks.

* fast/css-grid-layout/flex-and-intrinsic-sizes-expected.txt:
* fast/css-grid-layout/flex-and-intrinsic-sizes.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutflexandintrinsicsizesexpectedtxt">trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgridlayoutflexandintrinsicsizeshtml">trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderGridcpp">trunk/Source/WebCore/rendering/RenderGrid.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (205959 => 205960)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-09-15 08:11:31 UTC (rev 205959)
+++ trunk/LayoutTests/ChangeLog        2016-09-15 08:42:10 UTC (rev 205960)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-09-15  Sergio Villar Senin  &lt;svillar@igalia.com&gt;
+
+        [css-grid] Fix intrinsic size computation with flexible sized tracks
+        https://bugs.webkit.org/show_bug.cgi?id=161903
+
+        Reviewed by Manuel Rego Casasnovas.
+
+        Added a couple of new test cases, grid with fr tracks inside a container with intrinsic
+        dimensions and and grid with fr tracks inside another grid with fr tracks.
+
+        * fast/css-grid-layout/flex-and-intrinsic-sizes-expected.txt:
+        * fast/css-grid-layout/flex-and-intrinsic-sizes.html:
+
</ins><span class="cx"> 2016-09-13  Sergio Villar Senin  &lt;svillar@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [css-grid] Too many gaps with trailing collapsing tracks
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutflexandintrinsicsizesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes-expected.txt (205959 => 205960)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes-expected.txt        2016-09-15 08:11:31 UTC (rev 205959)
+++ trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes-expected.txt        2016-09-15 08:42:10 UTC (rev 205960)
</span><span class="lines">@@ -3,14 +3,7 @@
</span><span class="cx"> XXX XXX
</span><span class="cx"> PASS
</span><span class="cx"> XXX XXX
</span><del>-FAIL:
-Expected 30 for width, but got 70. 
-
-&lt;div class=&quot;container&quot;&gt;
-  &lt;div class=&quot;grid min-content&quot; data-expected-width=&quot;30&quot; data-expected-height=&quot;10&quot;&gt;
-    &lt;div&gt;XXX XXX&lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
</del><ins>+PASS
</ins><span class="cx"> XXX XXX
</span><span class="cx"> PASS
</span><span class="cx"> XXX XXX
</span><span class="lines">@@ -17,3 +10,12 @@
</span><span class="cx"> PASS
</span><span class="cx"> XXX XXX
</span><span class="cx"> PASS
</span><ins>+XXX XXXX XX X XX XXX
+PASS
+XXX XXXX XX X XX XXX
+PASS
+XXXX
+XXXX XX XX
+XXX XX X
+XXXX XXX XXXX XXX XXXX
+PASS
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcssgridlayoutflexandintrinsicsizeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes.html (205959 => 205960)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes.html        2016-09-15 08:11:31 UTC (rev 205959)
+++ trunk/LayoutTests/fast/css-grid-layout/flex-and-intrinsic-sizes.html        2016-09-15 08:42:10 UTC (rev 205960)
</span><span class="lines">@@ -16,7 +16,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> div { font: 10px/1 Ahem; }
</span><del>-
</del><span class="cx"> &lt;/style&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;script src=&quot;../../resources/check-layout.js&quot;&gt;&lt;/script&gt;
</span><span class="lines">@@ -31,9 +30,8 @@
</span><span class="cx">   &lt;/div&gt;
</span><span class="cx"> &lt;/div&gt;
</span><span class="cx"> 
</span><del>-&lt;!-- This fails due to https://bugs.webkit.org/show_bug.cgi?id=150674 --&gt;
</del><span class="cx"> &lt;div class=&quot;container&quot;&gt;
</span><del>-  &lt;div class=&quot;grid min-content&quot; data-expected-width=&quot;30&quot; data-expected-height=&quot;10&quot;&gt;
</del><ins>+  &lt;div class=&quot;grid min-content&quot; data-expected-width=&quot;30&quot; data-expected-height=&quot;20&quot;&gt;
</ins><span class="cx">     &lt;div&gt;XXX XXX&lt;/div&gt;
</span><span class="cx">   &lt;/div&gt;
</span><span class="cx"> &lt;/div&gt;
</span><span class="lines">@@ -56,4 +54,28 @@
</span><span class="cx">   &lt;/div&gt;
</span><span class="cx"> &lt;/div&gt;
</span><span class="cx"> 
</span><ins>+&lt;div class=&quot;min-content&quot;&gt;
+    &lt;div class=&quot;grid&quot; data-expected-width=&quot;40&quot; data-expected-height=&quot;50&quot;&gt;
+        &lt;div&gt;XXX XXXX XX X XX XXX&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid container&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;100&quot;&gt;
+    &lt;div style=&quot;display: grid; grid-template-columns: 3fr; grid-template-rows: 2fr;&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;100&quot;&gt;
+        &lt;div&gt;XXX XXXX XX X XX XXX&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;grid&quot; style=&quot;grid; grid: 1fr 2fr / 2fr 1fr; width: 300px; height: 300px;&quot; data-expected-width=&quot;300&quot; data-expected-height=&quot;300&quot;&gt;
+    &lt;div class=&quot;firstRowFirstColumn&quot; style=&quot;display: grid; grid: 1fr 3fr / 3fr 1fr;&quot; data-expected-width=&quot;200&quot; data-expected-height=&quot;100&quot;&gt;
+        &lt;div style=&quot;border: 2px solid magenta;&quot; data-expected-width=&quot;150&quot; data-expected-height=&quot;25&quot;&gt;XXXX&lt;/div&gt;
+        &lt;div class=&quot;secondRowSecondColumn&quot; style=&quot;border: 2px solid cyan;&quot; data-expected-width=&quot;50&quot; data-expected-height=&quot;75&quot;&gt;XXXX XX XX&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div class=&quot;secondRowSecondColumn&quot; style=&quot;display: grid; grid: 3fr 4fr / 4fr 3fr;&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;200&quot;&gt;
+        &lt;div style=&quot;border: 2px solid lime;&quot; data-expected-width=&quot;56&quot; data-expected-height=&quot;86&quot;&gt;XXX XX X&lt;/div&gt;
+        &lt;div class=&quot;secondRowSecondColumn&quot; style=&quot;border: 2px solid navy;&quot; data-expected-width=&quot;44&quot; data-expected-height=&quot;114&quot;&gt;XXXX XXX XXXX XXX XXXX&lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+
+
</ins><span class="cx"> &lt;/body&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (205959 => 205960)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-09-15 08:11:31 UTC (rev 205959)
+++ trunk/Source/WebCore/ChangeLog        2016-09-15 08:42:10 UTC (rev 205960)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2016-09-15  Sergio Villar Senin  &lt;svillar@igalia.com&gt;
+
+        [css-grid] Fix intrinsic size computation with flexible sized tracks
+        https://bugs.webkit.org/show_bug.cgi?id=161903
+
+        Reviewed by Manuel Rego Casasnovas.
+
+        This is fixing a regression added in r192154. When computing the min content size of a grid
+        container (min preferred logical width) we should not take into account the fr tracks. As
+        stated in the early versions of the spec that size is the sum of the tracks' base sizes
+        before running the maximize tracks step.
+
+        That regression was causing sizing issues in grids with fr tracks both when under
+        min|max-content constrains and also when used as grid items (in nested grids).
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
+
</ins><span class="cx"> 2016-09-13  Sergio Villar Senin  &lt;svillar@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [css-grid] Too many gaps with trailing collapsing tracks
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderGridcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (205959 => 205960)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderGrid.cpp        2016-09-15 08:11:31 UTC (rev 205959)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp        2016-09-15 08:42:10 UTC (rev 205960)
</span><span class="lines">@@ -762,8 +762,6 @@
</span><span class="cx">         if (LayoutUnit increment = baseSize - oldBaseSize) {
</span><span class="cx">             track.setBaseSize(baseSize);
</span><span class="cx">             freeSpace -= increment;
</span><del>-
-            baseSizesWithoutMaximization += increment;
</del><span class="cx">             growthLimitsWithoutMaximization += increment;
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre>
</div>
</div>

</body>
</html>