Source/WebCore/ChangeLog

112015-01-19 Sergio Villar Senin <svillar@igalia.com>
22
 3 [CSS Grid Layout] Size tracks using a list of all items sorted by span
 4 https://bugs.webkit.org/show_bug.cgi?id=140615
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 In r173620 we fixed
 9 RenderGrid::resolveContentBasedTrackSizingFunctions() so that it
 10 now collects all items spanning content-sized tracks and process
 11 them one by one after sorting them by ascending span.
 12
 13 The problem is that it was incorrectly implemented, it has two
 14 important bugs. First one is that the hash table that collects
 15 items is regenerated after processing each track, so it's actually
 16 doing nothing. Secondly we're only sorting the items on each
 17 track, instead of all the items in the grid.
 18
 19 * rendering/RenderGrid.cpp:
 20 (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions):
 21
 222015-01-19 Sergio Villar Senin <svillar@igalia.com>
 23
324 [CSS Grid Layout] Tracks shrink sometimes with indefinite remaining space
425 https://bugs.webkit.org/show_bug.cgi?id=139059
526

Source/WebCore/rendering/RenderGrid.cpp

@@public:
183183 Vector<LayoutUnit> distributeTrackVector;
184184 Vector<GridTrack*> filteredTracks;
185185 Vector<unsigned> growAboveMaxBreadthTrackIndexes;
 186 Vector<GridItemWithSpan> itemsSortedByIncreasingSpan;
186187};
187188
188189RenderGrid::RenderGrid(Element& element, Ref<RenderStyle>&& style)

@@private:
559560void RenderGrid::resolveContentBasedTrackSizingFunctions(GridTrackSizingDirection direction, GridSizingData& sizingData)
560561{
561562 // FIXME: Split the grid tracks into groups that doesn't overlap a <flex> grid track.
562 
 563 sizingData.itemsSortedByIncreasingSpan.shrink(0);
 564 HashSet<RenderBox*> itemsSet;
563565 for (auto trackIndex : sizingData.contentSizedTracksIndex) {
564566 GridIterator iterator(m_grid, direction, trackIndex);
565  HashSet<RenderBox*> itemsSet;
566  Vector<GridItemWithSpan> itemsSortedByIncreasingSpan;
567567
568568 while (RenderBox* gridItem = iterator.nextGridItem()) {
569569 if (itemsSet.add(gridItem).isNewEntry)
570  itemsSortedByIncreasingSpan.append(GridItemWithSpan(*gridItem, cachedGridCoordinate(*gridItem), direction));
 570 sizingData.itemsSortedByIncreasingSpan.append(GridItemWithSpan(*gridItem, cachedGridCoordinate(*gridItem), direction));
571571 }
572  std::stable_sort(itemsSortedByIncreasingSpan.begin(), itemsSortedByIncreasingSpan.end());
 572 }
 573 std::sort(sizingData.itemsSortedByIncreasingSpan.begin(), sizingData.itemsSortedByIncreasingSpan.end());
573574
574  for (auto& itemWithSpan : itemsSortedByIncreasingSpan) {
575  resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMinOrMaxContentMinTrackBreadth, &RenderGrid::minContentForChild, &GridTrack::usedBreadth, &GridTrack::growUsedBreadth, &GridTrackSize::hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth);
576  resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMaxContentMinTrackBreadth, &RenderGrid::maxContentForChild, &GridTrack::usedBreadth, &GridTrack::growUsedBreadth, &GridTrackSize::hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth);
577  resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMinOrMaxContentMaxTrackBreadth, &RenderGrid::minContentForChild, &GridTrack::maxBreadthIfNotInfinite, &GridTrack::growMaxBreadth);
578  resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMaxContentMaxTrackBreadth, &RenderGrid::maxContentForChild, &GridTrack::maxBreadthIfNotInfinite, &GridTrack::growMaxBreadth);
579  }
 575 for (auto& itemWithSpan : sizingData.itemsSortedByIncreasingSpan) {
 576 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMinOrMaxContentMinTrackBreadth, &RenderGrid::minContentForChild, &GridTrack::usedBreadth, &GridTrack::growUsedBreadth, &GridTrackSize::hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth);
 577 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMaxContentMinTrackBreadth, &RenderGrid::maxContentForChild, &GridTrack::usedBreadth, &GridTrack::growUsedBreadth, &GridTrackSize::hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth);
 578 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMinOrMaxContentMaxTrackBreadth, &RenderGrid::minContentForChild, &GridTrack::maxBreadthIfNotInfinite, &GridTrack::growMaxBreadth);
 579 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, itemWithSpan, &GridTrackSize::hasMaxContentMaxTrackBreadth, &RenderGrid::maxContentForChild, &GridTrack::maxBreadthIfNotInfinite, &GridTrack::growMaxBreadth);
 580 }
580581
 582 for (auto trackIndex : sizingData.contentSizedTracksIndex) {
581583 GridTrack& track = (direction == ForColumns) ? sizingData.columnTracks[trackIndex] : sizingData.rowTracks[trackIndex];
582584 if (track.m_maxBreadth == infinity)
583585 track.m_maxBreadth = track.m_usedBreadth;

LayoutTests/ChangeLog

112015-01-19 Sergio Villar Senin <svillar@igalia.com>
22
 3 [CSS Grid Layout] Size tracks using a list of all items sorted by span
 4 https://bugs.webkit.org/show_bug.cgi?id=140615
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * fast/css-grid-layout/grid-content-sized-columns-resolution-expected.txt:
 9 Added tons of new test cases.
 10 * fast/css-grid-layout/grid-content-sized-columns-resolution.html: Ditto.
 11 * fast/css-grid-layout/grid-preferred-logical-widths.html:
 12 Adjusted results.
 13
 142015-01-19 Sergio Villar Senin <svillar@igalia.com>
 15
316 Unreviewed, when committing r178642 I forgot to add the
417 TestExpectations change.
518

LayoutTests/fast/css-grid-layout/grid-content-sized-columns-resolution-expected.txt

@@PASS window.getComputedStyle(gridAutoMinContent, '').getPropertyValue('-webkit-g
1010PASS window.getComputedStyle(gridAutoMaxContent, '').getPropertyValue('-webkit-grid-template-columns') is "20px 70px"
1111PASS window.getComputedStyle(gridMaxContentAndMinContentFixed, '').getPropertyValue('-webkit-grid-template-columns') is "70px 20px"
1212PASS window.getComputedStyle(gridMaxContentAndMaxContentFixed, '').getPropertyValue('-webkit-grid-template-columns') is "55px 35px"
 13
 14Check that items are processed by ascending span to compute track breadths forbidding extra space distribution.
 15PASS window.getComputedStyle(gridMinContentFixedAndAutoUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "0px 40px"
 16PASS window.getComputedStyle(gridAutoAndAutoUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "5px 35px"
 17PASS window.getComputedStyle(gridMinContentAndMinContentFixedUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "0px 40px"
 18PASS window.getComputedStyle(gridMaxContentAndMinContentUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "0px 70px"
 19PASS window.getComputedStyle(gridFixedMinContentAndMaxContentUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "10px 70px"
 20PASS window.getComputedStyle(gridFixedMaxContentAndMinContentUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "10px 40px"
 21PASS window.getComputedStyle(gridMinContentAndMaxContentFixedUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "0px 90px"
 22PASS window.getComputedStyle(gridMaxContentFixedAndAutoUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "10px 40px"
 23PASS window.getComputedStyle(gridAutoMinContentUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "0px 60px"
 24PASS window.getComputedStyle(gridAutoMaxContentUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "0px 90px"
 25PASS window.getComputedStyle(gridMaxContentAndMinContentFixedUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "50px 40px"
 26PASS window.getComputedStyle(gridMaxContentAndMaxContentFixedUnsortedConstrained, '').getPropertyValue('-webkit-grid-template-columns') is "40px 70px"
 27
 28Check that items are processed by ascending span to compute track breadths allowing extra space distribution.
 29PASS window.getComputedStyle(gridMinContentFixedAndAutoUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "15px 90px"
 30PASS window.getComputedStyle(gridAutoAndAutoUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "30px 60px"
 31PASS window.getComputedStyle(gridMinContentAndMinContentFixedUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "10px 40px"
 32PASS window.getComputedStyle(gridMaxContentAndMinContentUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "0px 70px"
 33PASS window.getComputedStyle(gridFixedMinContentAndMaxContentUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "10px 70px"
 34PASS window.getComputedStyle(gridFixedMaxContentAndMinContentUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "50px 40px"
 35PASS window.getComputedStyle(gridMinContentAndMaxContentFixedUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "10px 90px"
 36PASS window.getComputedStyle(gridMaxContentFixedAndAutoUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "15px 70px"
 37PASS window.getComputedStyle(gridAutoMinContentUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "50px 60px"
 38PASS window.getComputedStyle(gridAutoMaxContentUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "0px 90px"
 39PASS window.getComputedStyle(gridMaxContentAndMinContentFixedUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "55px 40px"
 40PASS window.getComputedStyle(gridMaxContentAndMaxContentFixedUnsorted, '').getPropertyValue('-webkit-grid-template-columns') is "75px 70px"
1341PASS window.getComputedStyle(gridMinContentFixedAndAutoAboveLimits, '').getPropertyValue('-webkit-grid-template-columns') is "15px 95px"
1442PASS window.getComputedStyle(gridMaxContentFixedAndAutoAboveLimits, '').getPropertyValue('-webkit-grid-template-columns') is "65px 85px"
1543PASS window.getComputedStyle(gridMinContentFixedAndFixedFixedAndAuto, '').getPropertyValue('-webkit-grid-template-columns') is "20px 20px 60px"

@@XXXX XXXX
3058XXXX XXXX
3159XXXX XXXX
3260XXXX XXXX
 61XXXX XXXX
 62XXXX XXXX
 63XXX
 64XXXX XXXX
 65XX XX XX
 66XXXX XXXX
 67XXX XXX
 68XXXXXXX
 69XXXXX XX
 70XXX
 71XXXXX
 72XXXX XXXX
 73X X
 74XXXX
 75XXXX XXXX
 76XXXX XXXX
 77XX XX
 78XXXX
 79XXX XXX
 80XX XX XX XX
 81XXXXXX XXXXXX
 82XXXX XXXX
 83XXX XXX
 84XXXXX
 85XXX XXX
 86XXXX XXXX
 87XXXX XXXX
 88XX
 89XXXX XXXX
 90XX XX XX XX
 91XXXXXXX
 92XXXX XXXX
 93XXXX XXXX
 94XXXX XXXX
 95XXX
 96XXXX XXXX
 97XX XX XX XX
 98XXXX XXXX
 99XXX XXX
 100XXXXXXX
 101XXXXX XX
 102XXX
 103XXXXX
 104XXXX XXXX
 105X X
 106XXXX
 107XXXX XXXX
 108XXXX XXXX
 109XX XX
 110XXXX
 111XXX XXX
 112XX XX XX XX
 113XXXXXX XXXXXX
 114XXXX XXXX
 115XXX XXX
 116XXXXX
 117XXX XXX
 118XXXX XXXX
 119XXXX XXXX
 120XX
 121XXXX XXXX
 122XX XX XX XX
 123XXXXXXX
 124XXXX XXXX
33125XXXXXXXXXXX
34126XXXX XXXX
35127XXXXXXXXXXXXXXX

LayoutTests/fast/css-grid-layout/grid-content-sized-columns-resolution.html

103103 <div class="firstRowBothColumn">XXXX XXXX</div>
104104</div>
105105
 106<!-- Check that items are processed by ascending span instead of going track by track forbidding extra space distribution. -->
 107<div class="constrainedContainer">
 108 <div class="grid gridMinContentFixedAndAuto" id="gridMinContentFixedAndAutoUnsortedConstrained">
 109 <div class="firstRowBothColumn">XXXX XXXX</div>
 110 <div class="firstRowSecondColumn">XXXX XXXX</div>
 111 </div>
 112</div>
 113
 114<div class="constrainedContainer">
 115 <div class="grid gridAutoAndAuto" id="gridAutoAndAutoUnsortedConstrained">
 116 <div class="firstRowBothColumn">XXXX XXXX</div>
 117 <div class="firstRowSecondColumn">XXX</div>
 118 </div>
 119</div>
 120
 121<div class="constrainedContainer">
 122 <div class="grid gridMinContentAndMinContentFixed" id="gridMinContentAndMinContentFixedUnsortedConstrained">
 123 <div class="firstRowBothColumn">XXXX XXXX</div>
 124 <div class="firstRowBothColumn">XX XX XX</div>
 125 <div class="firstRowSecondColumn">XXXX XXXX</div>
 126 </div>
 127</div>
 128
 129<div class="constrainedContainer">
 130 <div class="grid gridMaxContentAndMinContent" id="gridMaxContentAndMinContentUnsortedConstrained">
 131 <div class="firstRowBothColumn">XXX XXX</div>
 132 <div class="firstRowSecondColumn">XXXXXXX</div>
 133 </div>
 134</div>
 135
 136<div class="constrainedContainer">
 137 <div class="grid gridFixedMinContentAndMaxContent" id="gridFixedMinContentAndMaxContentUnsortedConstrained">
 138 <div class="firstRowBothColumn">XXXXX XX</div>
 139 <div class="firstRowSecondColumn">XXX</div>
 140 <div class="firstRowSecondColumn">XXXXX</div>
 141 </div>
 142</div>
 143
 144<div class="constrainedContainer">
 145 <div class="grid gridFixedMaxContentAndMinContent" id="gridFixedMaxContentAndMinContentUnsortedConstrained">
 146 <div class="firstRowBothColumn">XXXX XXXX</div>
 147 <div class="firstRowBothColumn">X X</div>
 148 <div class="firstRowSecondColumn">XXXX</div>
 149 </div>
 150</div>
 151
 152<div class="constrainedContainer">
 153 <div class="grid gridMinContentAndMaxContentFixed" id="gridMinContentAndMaxContentFixedUnsortedConstrained">
 154 <div class="firstRowBothColumn">XXXX XXXX</div>
 155 <div class="firstRowSecondColumn">XXXX XXXX</div>
 156 </div>
 157</div>
 158
 159<div class="constrainedContainer">
 160 <div class="grid gridMaxContentFixedAndAuto" id="gridMaxContentFixedAndAutoUnsortedConstrained">
 161 <div class="firstRowBothColumn">XX XX</div>
 162 <div class="firstRowSecondColumn">XXXX</div>
 163 <div class="firstRowSecondColumn">XXX XXX</div>
 164 </div>
 165</div>
 166
 167<div class="constrainedContainer">
 168 <div class="grid gridAutoMinContent" id="gridAutoMinContentUnsortedConstrained">
 169 <div class="firstRowBothColumn">XX XX XX XX</div>
 170 <div class="firstRowSecondColumn">XXXXXX XXXXXX</div>
 171 </div>
 172</div>
 173
 174<div class="constrainedContainer">
 175 <div class="grid gridAutoMaxContent" id="gridAutoMaxContentUnsortedConstrained">
 176 <div class="firstRowBothColumn">XXXX XXXX</div>
 177 <div class="firstRowBothColumn">XXX XXX</div>
 178 <div class="firstRowSecondColumn">XXXXX</div>
 179 </div>
 180</div>
 181
 182<div class="constrainedContainer">
 183 <div class="grid gridMaxContentAndMinContentFixed" id="gridMaxContentAndMinContentFixedUnsortedConstrained">
 184 <div class="firstRowBothColumn">XXX XXX</div>
 185 <div class="firstRowBothColumn">XXXX XXXX</div>
 186 <div class="firstRowSecondColumn">XXXX XXXX</div>
 187 <div class="firstRowSecondColumn">XX</div>
 188 </div>
 189</div>
 190
 191<div class="constrainedContainer">
 192 <div class="grid gridMaxContentAndMaxContentFixed" id="gridMaxContentAndMaxContentFixedUnsortedConstrained">
 193 <div class="firstRowBothColumn">XXXX XXXX</div>
 194 <div class="firstRowBothColumn">XX XX XX XX</div>
 195 <div class="firstRowSecondColumn">XXXXXXX</div>
 196 </div>
 197</div>
 198
 199<!-- Check that items are processed by ascending span instead of going track by track allowing extra space distribution. -->
 200<div class="grid gridMinContentFixedAndAuto" id="gridMinContentFixedAndAutoUnsorted">
 201 <div class="firstRowBothColumn">XXXX XXXX</div>
 202 <div class="firstRowSecondColumn">XXXX XXXX</div>
 203</div>
 204
 205<div class="grid gridAutoAndAuto" id="gridAutoAndAutoUnsorted">
 206 <div class="firstRowBothColumn">XXXX XXXX</div>
 207 <div class="firstRowSecondColumn">XXX</div>
 208</div>
 209
 210<div class="grid gridMinContentAndMinContentFixed" id="gridMinContentAndMinContentFixedUnsorted">
 211 <div class="firstRowBothColumn">XXXX XXXX</div>
 212 <div class="firstRowBothColumn">XX XX XX XX</div>
 213 <div class="firstRowSecondColumn">XXXX XXXX</div>
 214</div>
 215
 216<div class="grid gridMaxContentAndMinContent" id="gridMaxContentAndMinContentUnsorted">
 217 <div class="firstRowBothColumn">XXX XXX</div>
 218 <div class="firstRowSecondColumn">XXXXXXX</div>
 219</div>
 220
 221<div class="grid gridFixedMinContentAndMaxContent" id="gridFixedMinContentAndMaxContentUnsorted">
 222 <div class="firstRowBothColumn">XXXXX XX</div>
 223 <div class="firstRowSecondColumn">XXX</div>
 224 <div class="firstRowSecondColumn">XXXXX</div>
 225</div>
 226
 227<div class="grid gridFixedMaxContentAndMinContent" id="gridFixedMaxContentAndMinContentUnsorted">
 228 <div class="firstRowBothColumn">XXXX XXXX</div>
 229 <div class="firstRowBothColumn">X X</div>
 230 <div class="firstRowSecondColumn">XXXX</div>
 231</div>
 232
 233<div class="grid gridMinContentAndMaxContentFixed" id="gridMinContentAndMaxContentFixedUnsorted">
 234 <div class="firstRowBothColumn">XXXX XXXX</div>
 235 <div class="firstRowSecondColumn">XXXX XXXX</div>
 236</div>
 237
 238<div class="grid gridMaxContentFixedAndAuto" id="gridMaxContentFixedAndAutoUnsorted">
 239 <div class="firstRowBothColumn">XX XX</div>
 240 <div class="firstRowSecondColumn">XXXX</div>
 241 <div class="firstRowSecondColumn">XXX XXX</div>
 242</div>
 243
 244<div class="grid gridAutoMinContent" id="gridAutoMinContentUnsorted">
 245 <div class="firstRowBothColumn">XX XX XX XX</div>
 246 <div class="firstRowSecondColumn">XXXXXX XXXXXX</div>
 247</div>
 248
 249<div class="grid gridAutoMaxContent" id="gridAutoMaxContentUnsorted">
 250 <div class="firstRowBothColumn">XXXX XXXX</div>
 251 <div class="firstRowBothColumn">XXX XXX</div>
 252 <div class="firstRowSecondColumn">XXXXX</div>
 253</div>
 254
 255<div class="grid gridMaxContentAndMinContentFixed" id="gridMaxContentAndMinContentFixedUnsorted">
 256 <div class="firstRowBothColumn">XXX XXX</div>
 257 <div class="firstRowBothColumn">XXXX XXXX</div>
 258 <div class="firstRowSecondColumn">XXXX XXXX</div>
 259 <div class="firstRowSecondColumn">XX</div>
 260</div>
 261
 262<div class="grid gridMaxContentAndMaxContentFixed" id="gridMaxContentAndMaxContentFixedUnsorted">
 263 <div class="firstRowBothColumn">XXXX XXXX</div>
 264 <div class="firstRowBothColumn">XX XX XX XX</div>
 265 <div class="firstRowSecondColumn">XXXXXXX</div>
 266</div>
 267
106268<!-- The next four force the grid to grow only a particular subset of tracks above the limits -->
107269<div class="constrainedContainer">
108270 <div class="grid gridMinContentFixedAndAuto" id="gridMinContentFixedAndAutoAboveLimits">

@@testGridColumnsValues("gridAutoMaxContent", "20px 70px");
151313testGridColumnsValues("gridMaxContentAndMinContentFixed", "70px 20px");
152314testGridColumnsValues("gridMaxContentAndMaxContentFixed", "55px 35px");
153315
 316debug("");
 317debug("Check that items are processed by ascending span to compute track breadths forbidding extra space distribution.");
 318testGridColumnsValues("gridMinContentFixedAndAutoUnsortedConstrained", "0px 40px");
 319testGridColumnsValues("gridAutoAndAutoUnsortedConstrained", "5px 35px");
 320testGridColumnsValues("gridMinContentAndMinContentFixedUnsortedConstrained", "0px 40px");
 321testGridColumnsValues("gridMaxContentAndMinContentUnsortedConstrained", "0px 70px");
 322testGridColumnsValues("gridFixedMinContentAndMaxContentUnsortedConstrained", "10px 70px");
 323testGridColumnsValues("gridFixedMaxContentAndMinContentUnsortedConstrained", "10px 40px");
 324testGridColumnsValues("gridMinContentAndMaxContentFixedUnsortedConstrained", "0px 90px");
 325testGridColumnsValues("gridMaxContentFixedAndAutoUnsortedConstrained", "10px 40px");
 326testGridColumnsValues("gridAutoMinContentUnsortedConstrained", "0px 60px");
 327testGridColumnsValues("gridAutoMaxContentUnsortedConstrained", "0px 90px");
 328testGridColumnsValues("gridMaxContentAndMinContentFixedUnsortedConstrained", "50px 40px");
 329testGridColumnsValues("gridMaxContentAndMaxContentFixedUnsortedConstrained", "40px 70px");
 330
 331debug("");
 332debug("Check that items are processed by ascending span to compute track breadths allowing extra space distribution.");
 333testGridColumnsValues("gridMinContentFixedAndAutoUnsorted", "15px 90px");
 334testGridColumnsValues("gridAutoAndAutoUnsorted", "30px 60px");
 335testGridColumnsValues("gridMinContentAndMinContentFixedUnsorted", "10px 40px");
 336testGridColumnsValues("gridMaxContentAndMinContentUnsorted", "0px 70px");
 337testGridColumnsValues("gridFixedMinContentAndMaxContentUnsorted", "10px 70px");
 338testGridColumnsValues("gridFixedMaxContentAndMinContentUnsorted", "50px 40px");
 339testGridColumnsValues("gridMinContentAndMaxContentFixedUnsorted", "10px 90px");
 340testGridColumnsValues("gridMaxContentFixedAndAutoUnsorted", "15px 70px");
 341testGridColumnsValues("gridAutoMinContentUnsorted", "50px 60px");
 342testGridColumnsValues("gridAutoMaxContentUnsorted", "0px 90px");
 343testGridColumnsValues("gridMaxContentAndMinContentFixedUnsorted", "55px 40px");
 344testGridColumnsValues("gridMaxContentAndMaxContentFixedUnsorted", "75px 70px");
 345
154346testGridColumnsValues("gridMinContentFixedAndAutoAboveLimits", "15px 95px");
155347testGridColumnsValues("gridMaxContentFixedAndAutoAboveLimits", "65px 85px");
156348testGridColumnsValues("gridMinContentFixedAndFixedFixedAndAuto", "20px 20px 60px");

LayoutTests/fast/css-grid-layout/grid-preferred-logical-widths.html

127127 <div class="firstRowFirstColumn">XX XX XX</div>
128128 <div class="firstRowBothColumn">XX XX XX</div>
129129</div>
130 <div class="grid gridAutoContent max-content" data-expected-height="10" data-expected-width="120">
 130<div class="grid gridAutoContent max-content" data-expected-height="10" data-expected-width="80">
131131 <div class="firstRowBothColumn">XX XX XX</div>
132132 <div class="firstRowSecondColumn">XX XX XX</div>
133133</div>