Changeset 238488 in webkit
- Timestamp:
- Nov 26, 2018, 12:06:52 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows-expected.txt (modified) (18 diffs)
-
LayoutTests/fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows.html (modified) (4 diffs)
-
LayoutTests/fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html (modified) (22 diffs)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/w3c-import.log (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderGrid.cpp (modified) (4 diffs)
-
Source/WebCore/rendering/RenderGrid.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r238487 r238488 1 2018-11-26 Manuel Rego Casasnovas <rego@igalia.com> 2 3 [css-grid] Fix grid container sizing under min-content height 4 https://bugs.webkit.org/show_bug.cgi?id=191889 5 6 Reviewed by Javier Fernandez. 7 8 Update tests results to the new behavior. 9 Also modified a little bit the test to keep them in sync with Blink versions. 10 11 * fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows-expected.txt: 12 * fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows.html: 13 * fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html: 14 1 15 2018-11-25 Ryan Haddad <ryanhaddad@apple.com> 2 16 -
trunk/LayoutTests/fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows-expected.txt
r203501 r238488 1 2 PASS .grid 1 3 PASS .grid 2 4 PASS .grid 3 5 PASS .grid 4 6 PASS .grid 5 7 PASS .grid 6 8 PASS .grid 7 9 PASS .grid 8 10 PASS .grid 9 11 PASS .grid 10 12 PASS .grid 11 13 PASS .grid 12 14 PASS .grid 13 15 PASS .grid 14 16 PASS .grid 15 17 PASS .grid 16 18 PASS .grid 17 1 19 This test checks that grid tracks are sizing correctly with orthogonal flows, so grid container's intrinsic size is computed accordingly. 2 20 … … 8 26 X XXX XX XXXXX XX XXX X XXXX X XX 9 27 XXXX XX X XX XXX 10 PASS11 28 Grid width under min-content constrain and fixed height. 12 29 All grid items sized with min-{width, height} auto. … … 16 33 X XXX XX XXXXX XX XXX X XXXX X XX 17 34 XXXX XX X XX XXX 18 PASS19 35 Grid width under max-content constrain and fixed height. 20 36 All grid items sized with min-{width, height} auto. … … 24 40 X XXX XX XXXXX XX XXX X XXXX X XX 25 41 XXXX XX X XX XXX 26 PASS27 42 Grid width under fit-content constrain and fixed height. 28 43 All grid items sized with min-{width, height} auto. … … 32 47 X XXX XX XXXXX XX XXX X XXXX X XX 33 48 XXXX XX X XX XXX 34 PASS35 49 Grid with fixed width and height under min-content constrain. 36 50 All grid items sized with min-{width, height} auto. … … 40 54 X XXX XX XXXXX XX XXX X XXXX X XX 41 55 XXXX XX X XX XXX 42 PASS43 56 Grid with fixed width and height under min-content constrain. 44 57 All grid items sized with min-{width, height} auto. … … 48 61 X XXX XX XXXXX XX XXX X XXXX X XX 49 62 XXXX XX X XX XXX 50 PASS51 63 Grid with fixed width and height under min-content constrain. 52 64 All grid items sized with min-{width, height} auto. … … 56 68 X XXX XX XXXXX XX XXX X XXXX X XX 57 69 XXXX XX X XX XXX 58 PASS59 70 Grid using fixed width and height. 60 71 All grid items sized with min-width: 0px, min-height: auto. … … 64 75 X XXX XX XXXXX XX XXX X XXXX X XX 65 76 XXXX XX X XX XXX 66 PASS67 77 Grid width under min-content constrain and fixed height. 68 78 All grid items sized with min-width: 0px, min-height: auto. … … 72 82 X XXX XX XXXXX XX XXX X XXXX X XX 73 83 XXXX XX X XX XXX 74 PASS75 84 Grid width under max-content constrain and fixed height. 76 85 All grid items sized with min-width: 0px, min-height: auto. … … 80 89 X XXX XX XXXXX XX XXX X XXXX X XX 81 90 XXXX XX X XX XXX 82 PASS83 91 Grid with fixed width and height under min-content constrain. 84 92 All grid items sized with min-width: auto, min-height: 0px. … … 88 96 X XXX XX XXXXX XX XXX X XXXX X XX 89 97 XXXX XX X XX XXX 90 PASS91 98 Grid with fixed width and height under max-content constrain. 92 99 All grid items sized with min-width: auto, min-height: 0px. … … 96 103 X XXX XX XXXXX XX XXX X XXXX X XX 97 104 XXXX XX X XX XXX 98 PASS99 105 Grid using fixed width and height. 100 106 All grid items sized with min-width: 50px, min-height: auto. … … 104 110 X XXX XX XXXXX XX XXX X XXXX X XX 105 111 XXXX XX X XX XXX 106 PASS107 112 Grid width under min-content constrain and fixed height. 108 113 All grid items sized with min-width: 50px, min-height: auto. … … 112 117 X XXX XX XXXXX XX XXX X XXXX X XX 113 118 XXXX XX X XX XXX 114 PASS115 119 Grid width under max-content constrain and fixed height. 116 120 All grid items sized with min-width: 50px, min-height: auto. … … 120 124 X XXX XX XXXXX XX XXX X XXXX X XX 121 125 XXXX XX X XX XXX 122 PASS123 126 Grid with fixed width and height under min-content constrain. 124 127 All grid items sized with min-width: auto, min-height: 50px. … … 128 131 X XXX XX XXXXX XX XXX X XXXX X XX 129 132 XXXX XX X XX XXX 130 PASS131 133 Grid with fixed width and height under max-content constrain. 132 134 All grid items sized with min-width: auto, min-height: 50px. … … 136 138 X XXX XX XXXXX XX XXX X XXXX X XX 137 139 XXXX XX X XX XXX 138 PASS -
trunk/LayoutTests/fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows.html
r216574 r238488 32 32 } 33 33 </style> 34 <script src="../../resources/check-layout.js"></script> 34 <script src="../../resources/testharness.js"></script> 35 <script src="../../resources/testharnessreport.js"></script> 36 <script src="../../resources/check-layout-th.js"></script> 35 37 <body onload="checkLayout('.grid')"> 38 <div id="log"></div> 36 39 <p>This test checks that grid tracks are sizing correctly with orthogonal flows, so grid container's intrinsic size is computed accordingly.</p> 37 40 … … 74 77 <div class="container"> 75 78 <p>Grid with <b>fixed</b> width and height under <b>min-content</b> constrain.<br >All grid items sized with <b>min-{width, height} auto</b>.<br> Since there is enough space in the inline-axis, the orthogonal green row sets the min-content size, which is 50px because of the 5 chars line.</p> 76 <div class="grid itemsStart contentStart min-content width300" data-expected-width="300" data-expected-height=" 90">79 <div class="grid itemsStart contentStart min-content width300" data-expected-width="300" data-expected-height="490"> 77 80 <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="150" data-expected-height="10">XX XXX X XXX XX</div> 78 <div class="verticalLR firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width=" 70" data-expected-height="50">X XXX XX XXXXX XX XXX X XXXX X XX</div>79 <div class="verticalLR secondRowFirstColumn" data-offset-x="0" data-offset-y=" 50" data-expected-width="40" data-expected-height="40">XXXX XX X XX XXX</div>81 <div class="verticalLR firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width="10" data-expected-height="330">X XXX XX XXXXX XX XXX X XXXX X XX</div> 82 <div class="verticalLR secondRowFirstColumn" data-offset-x="0" data-offset-y="330" data-expected-width="10" data-expected-height="160">XXXX XX X XX XXX</div> 80 83 </div> 81 84 </div> … … 130 133 <div class="container"> 131 134 <p>Grid with <b>fixed</b> width and height under <b>min-content</b> constrain.<br> All grid items sized with <b>min-width: auto, min-height: 0px</b>.<br> Both parallel and orthogonal column tracks are 0px because of item's min-width and container's min-content constrain.</p> 132 <div class="grid itemsStart contentStart min-content width300 " data-expected-width="300" data-expected-height=" 0">135 <div class="grid itemsStart contentStart min-content width300 " data-expected-width="300" data-expected-height="490"> 133 136 <div class="minHeightZero firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="150" data-expected-height="10">XX XXX X XXX XX</div> 134 <div class="minHeightZero verticalLR firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width=" 70" data-expected-height="50">X XXX XX XXXXX XX XXX X XXXX X XX</div>135 <div class="minHeightZero verticalLR secondRowFirstColumn" data-offset-x="0" data-offset-y=" 0" data-expected-width="40" data-expected-height="40">XXXX XX X XX XXX</div>137 <div class="minHeightZero verticalLR firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width="10" data-expected-height="330">X XXX XX XXXXX XX XXX X XXXX X XX</div> 138 <div class="minHeightZero verticalLR secondRowFirstColumn" data-offset-x="0" data-offset-y="330" data-expected-width="10" data-expected-height="160">XXXX XX X XX XXX</div> 136 139 </div> 137 140 </div> … … 175 178 <div class="container"> 176 179 <p>Grid with <b>fixed</b> width and height under <b>min-content</b> constrain.<br> All grid items sized with <b>min-width: auto, min-height: 50px</b>.<br> Parallel blue row track must grow to fulfill min-height restriction, while orthogonal shrink to satisfy container's min-content constrain.</p> 177 <div class="grid itemsStart contentStart min-content width300" data-expected-width="300" data-expected-height=" 100">180 <div class="grid itemsStart contentStart min-content width300" data-expected-width="300" data-expected-height="490"> 178 181 <div class="minHeightFixed firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="150" data-expected-height="50">XX XXX X XXX XX</div> 179 <div class="minHeightFixed verticalLR firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width=" 70" data-expected-height="50">X XXX XX XXXXX XX XXX X XXXX X XX</div>180 <div class="minHeightFixed verticalLR secondRowFirstColumn" data-offset-x="0" data-offset-y=" 50" data-expected-width="40" data-expected-height="50">XXXX XX X XX XXX</div>182 <div class="minHeightFixed verticalLR firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width="10" data-expected-height="330">X XXX XX XXXXX XX XXX X XXXX X XX</div> 183 <div class="minHeightFixed verticalLR secondRowFirstColumn" data-offset-x="0" data-offset-y="330" data-expected-width="10" data-expected-height="160">XXXX XX X XX XXX</div> 181 184 </div> 182 185 </div> -
trunk/LayoutTests/fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html
r206253 r238488 2 2 3 3 <link href="resources/grid.css" rel="stylesheet"> 4 <link href="resources/grid-alignment.css" rel="stylesheet"> 4 5 <link href="../css-intrinsic-dimensions/resources/height-keyword-classes.css" rel="stylesheet"> 5 6 … … 8 9 grid-template-rows: minmax(0px, 100px); 9 10 width: 40px; 10 11 align-items: start;12 justify-items: start;13 11 } 14 12 … … 25 23 <h2>Check the behavior of grids under max-content constraints.</h2> 26 24 <div class="max-content max-height-35"> 27 <div class="grid " data-expected-width="40" data-expected-height="100">25 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 28 26 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX XX XXX</div> 29 27 </div> … … 31 29 32 30 <div class="max-content max-height-min-content"> 33 <div class="grid " data-expected-width="40" data-expected-height="100">31 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 34 32 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX X</div> 35 33 </div> … … 37 35 38 36 <div class="max-height-min-content"> 39 <div class="grid " data-expected-width="40" data-expected-height="100">37 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 40 38 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX</div> 41 39 </div> … … 43 41 44 42 <div class="max-content max-height-fill-available"> 45 <div class="grid " data-expected-width="40" data-expected-height="100">43 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 46 44 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XXX X XXX</div> 47 45 </div> … … 49 47 50 48 <div class="max-content"> 51 <div class="grid " data-expected-width="40" data-expected-height="100">49 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 52 50 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX XXX XX</div> 53 51 </div> … … 58 56 </div> 59 57 60 <div class="grid max-content max-height-min-content" data-expected-width="40" data-expected-height=" 0">58 <div class="grid max-content max-height-min-content" data-expected-width="40" data-expected-height="100"> 61 59 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX X</div> 62 60 </div> 63 61 64 <div class="grid max-height-min-content" data-expected-width="40" data-expected-height=" 0">62 <div class="grid max-height-min-content" data-expected-width="40" data-expected-height="100"> 65 63 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX</div> 66 64 </div> … … 77 75 <h2>Check the behavior of grids under min-content contstraints.</h2> 78 76 <div class="min-content"> 79 <div class="grid " data-expected-width="40" data-expected-height="100">77 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 80 78 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XX XX</div> 81 79 </div> … … 83 81 84 82 <div class="min-content min-height-50"> 85 <div class="grid " data-expected-width="40" data-expected-height="100">83 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 86 84 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div> 87 85 </div> … … 89 87 90 88 <div class="min-content min-height-fit-content"> 91 <div class="grid " data-expected-width="40" data-expected-height="100">89 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 92 90 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX XXXX</div> 93 91 </div> … … 96 94 <div style="height: 200px;"> 97 95 <div class="min-content min-height-fill-available"> 98 <div class="grid " data-expected-width="40" data-expected-height="100">96 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 99 97 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXXX XXXX XXX</div> 100 98 </div> … … 103 101 104 102 <div class="min-content min-height-min-content"> 105 <div class="grid " data-expected-width="40" data-expected-height="100">103 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 106 104 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX</div> 107 105 </div> … … 109 107 110 108 <div class="min-content min-height-35"> 111 <div class="grid " data-expected-width="40" data-expected-height="100">109 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 112 110 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XX</div> 113 111 </div> … … 115 113 116 114 <div class="min-content min-height-max-content"> 117 <div class="grid " data-expected-width="40" data-expected-height="100">115 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 118 116 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">X XXX X</div> 119 117 </div> … … 121 119 122 120 <div class="min-content min-height-50"> 123 <div class="grid " data-expected-width="40" data-expected-height="100">121 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 124 122 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XXXX XXXX XXXX XXXX</div> 125 123 </div> … … 127 125 128 126 <div class="min-content max-height-50"> 129 <div class="grid " data-expected-width="40" data-expected-height="100">127 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 130 128 <div class="sizedToGridArea min-height-fill-available" data-expected-width="40" data-expected-height="100">XXXX X X XXXX</div> 131 129 </div> 132 130 </div> 133 131 134 <div class="grid min-content" data-expected-width="40" data-expected-height="0">132 <div class="grid itemsStart min-content" data-expected-width="40" data-expected-height="100"> 135 133 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XX XX</div> 136 134 </div> 137 135 138 <div class="grid min-content min-height-50" data-expected-width="40" data-expected-height="50">139 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div> 140 </div> 141 142 <div class="grid min-content min-height-fit-content" data-expected-width="40" data-expected-height="100">136 <div class="grid itemsStart min-content min-height-50" data-expected-width="40" data-expected-height="100"> 137 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div> 138 </div> 139 140 <div class="grid itemsStart min-content min-height-fit-content" data-expected-width="40" data-expected-height="100"> 143 141 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX XXXX</div> 144 142 </div> 145 143 146 144 <div style="height: 200px;"> 147 <div class="grid min-content min-height-fill-available" data-expected-width="40" data-expected-height="200">145 <div class="grid itemsStart min-content min-height-fill-available" data-expected-width="40" data-expected-height="200"> 148 146 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXXX XXXX XXX</div> 149 147 </div> 150 148 </div> 151 149 152 <div class="grid min-content min-height-min-content" data-expected-width="40" data-expected-height="0">150 <div class="grid itemsStart min-content min-height-min-content" data-expected-width="40" data-expected-height="100"> 153 151 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX</div> 154 152 </div> 155 153 156 <div class="grid min-content min-height-35" data-expected-width="40" data-expected-height="35">154 <div class="grid itemsStart min-content min-height-35" data-expected-width="40" data-expected-height="100"> 157 155 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XX</div> 158 156 </div> 159 157 160 <div class="grid min-content min-height-max-content" data-expected-width="40" data-expected-height="100">158 <div class="grid itemsStart min-content min-height-max-content" data-expected-width="40" data-expected-height="100"> 161 159 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">X XXX X</div> 162 160 </div> 163 161 164 <div class="grid min-content min-height-50" data-expected-width="40" data-expected-height="50">162 <div class="grid itemsStart min-content min-height-50" data-expected-width="40" data-expected-height="100"> 165 163 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XXXX XXXX XXXX XXXX</div> 166 164 </div> 167 165 168 <div class="grid min-content max-height-50" data-expected-width="40" data-expected-height="0">166 <div class="grid itemsStart min-content max-height-50" data-expected-width="40" data-expected-height="50"> 169 167 <div class="sizedToGridArea min-height-fill-available" data-expected-width="40" data-expected-height="100">XXXX X X XXXX</div> 170 168 </div> … … 172 170 <br> 173 171 <h2>Check the behavior of grids with definite available space.</h2> 174 <div class="grid " style="height: 100px;" data-expected-width="40" data-expected-height="100">172 <div class="grid itemsStart" style="height: 100px;" data-expected-width="40" data-expected-height="100"> 175 173 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX X</div> 176 174 </div> 177 175 178 <div class="grid max-height-35" style="height: 100px;" data-expected-width="40" data-expected-height="35">176 <div class="grid itemsStart max-height-35" style="height: 100px;" data-expected-width="40" data-expected-height="35"> 179 177 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="35">XX XX</div> 180 178 </div> 181 179 182 <div class="grid min-height-50" style="height: 10px;" data-expected-width="40" data-expected-height="50">180 <div class="grid itemsStart min-height-50" style="height: 10px;" data-expected-width="40" data-expected-height="50"> 183 181 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="50">XX XXXX</div> 184 182 </div> 185 183 186 <div class="grid min-height-50" style="height: 20px;data-expected-width="40" data-expected-height="50">184 <div class="grid itemsStart min-height-50" style="height: 20px;" data-expected-width="40" data-expected-height="50"> 187 185 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="50">XX XXX XX XXX XX XXX</div> 188 186 </div> 189 187 190 188 <div style="height: 100px;"> 191 <div class="grid " style="height: 37%;" data-expected-width="40" data-expected-height="37">189 <div class="grid itemsStart" style="height: 37%;" data-expected-width="40" data-expected-height="37"> 192 190 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="37">X X X X</div> 193 191 </div> 194 <div class="grid min-height-50" style="height: 37%;" data-expected-width="40" data-expected-height="50">192 <div class="grid itemsStart min-height-50" style="height: 37%;" data-expected-width="40" data-expected-height="50"> 195 193 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="50">XX XX XX</div> 196 194 </div> 197 <div class="grid min-height-35" style="height: 37%;" data-expected-width="40" data-expected-height="37">195 <div class="grid itemsStart min-height-35" style="height: 37%;" data-expected-width="40" data-expected-height="37"> 198 196 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="37">XXXX</div> 199 197 </div> … … 203 201 <h2>Check the behavior of grids with indefinite available space.</h2> 204 202 <div class="fit-content"> 205 <div class="grid " data-expected-width="40" data-expected-height="100">203 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 206 204 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX</div> 207 205 </div> 208 <div class="grid min-height-35" data-expected-width="40" data-expected-height="100">206 <div class="grid itemsStart min-height-35" data-expected-width="40" data-expected-height="100"> 209 207 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">X XXXX X</div> 210 208 </div> 211 <div class="grid max-height-min-content" data-expected-width="40" data-expected-height="0">209 <div class="grid itemsStart max-height-min-content" data-expected-width="40" data-expected-height="100"> 212 210 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XX XX</div> 213 211 </div> 214 <div class="grid fit-content" data-expected-width="40" data-expected-height="100">212 <div class="grid itemsStart fit-content" data-expected-width="40" data-expected-height="100"> 215 213 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">X XX X</div> 216 214 </div> … … 218 216 219 217 <div class="fit-content" style="height: 125px;"> 220 <div class="grid fill-available" data-expected-width="40" data-expected-height="125">218 <div class="grid itemsStart fill-available" data-expected-width="40" data-expected-height="125"> 221 219 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">X XX X</div> 222 220 </div> … … 224 222 225 223 <div class="fit-content min-height-50"> 226 <div class="grid " data-expected-width="40" data-expected-height="100">224 <div class="grid itemsStart" data-expected-width="40" data-expected-height="100"> 227 225 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XXXX XX X XXX</div> 228 226 </div> 229 <div class="grid min-height-35" data-expected-width="40" data-expected-height="100">227 <div class="grid itemsStart min-height-35" data-expected-width="40" data-expected-height="100"> 230 228 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XXXX X X</div> 231 229 </div> 232 <div class="grid max-height-min-content" data-expected-width="40" data-expected-height="0">230 <div class="grid itemsStart max-height-min-content" data-expected-width="40" data-expected-height="100"> 233 231 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">X XXX XX</div> 234 232 </div> 235 <div class="grid fit-content" data-expected-width="40" data-expected-height="100">233 <div class="grid itemsStart fit-content" data-expected-width="40" data-expected-height="100"> 236 234 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX XXX XX X</div> 237 235 </div> … … 239 237 240 238 <div class="fit-content min-height-50" style="height: 75px;"> 241 <div class="gridfill-available" data-expected-width="40" data-expected-height="75">242 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div>243 </div>239 <div class="grid itemsStart fill-available" data-expected-width="40" data-expected-height="75"> 240 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="75">XX X</div> 241 </div> 244 242 </div> 245 243 246 244 <div style="height: 25px;"> 247 <div class="grid fit-content" data-expected-width="40" data-expected-height="25">248 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div>249 </div>250 <div class="gridfill-available" data-expected-width="40" data-expected-height="25">251 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div>252 </div>253 <div class="grid fit-content min-height-35" data-expected-width="40" data-expected-height="35">254 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div>255 </div>256 <div class="grid fit-content max-height-min-content" data-expected-width="40" data-expected-height="0">257 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div>258 </div>245 <div class="grid itemsStart fit-content" data-expected-width="40" data-expected-height="100"> 246 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div> 247 </div> 248 <div class="grid itemsStart fill-available" data-expected-width="40" data-expected-height="25"> 249 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="25">XX X</div> 250 </div> 251 <div class="grid itemsStart fit-content min-height-35" data-expected-width="40" data-expected-height="100"> 252 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div> 253 </div> 254 <div class="grid itemsStart fit-content max-height-min-content" data-expected-width="40" data-expected-height="100"> 255 <div class="sizedToGridArea" data-expected-width="40" data-expected-height="100">XX X</div> 256 </div> 259 257 </div> 260 258 -
trunk/LayoutTests/imported/w3c/ChangeLog
r238457 r238488 1 2018-11-26 Manuel Rego Casasnovas <rego@igalia.com> 2 3 [css-grid] Fix grid container sizing under min-content height 4 https://bugs.webkit.org/show_bug.cgi?id=191889 5 6 Reviewed by Javier Fernandez. 7 8 Imported tests from WPT. 9 10 * web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001-expected.txt: Added. 11 * web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001.html: Added. 12 * web-platform-tests/css/css-grid/grid-model/w3c-import.log: 13 1 14 2018-11-23 Javier Fernandez <jfernandez@igalia.com> 2 15 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/w3c-import.log
r238395 r238488 31 31 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-expected.html 32 32 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html 33 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001.html 33 34 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-display-grid-001-expected.xht 34 35 /LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-display-grid-001.html -
trunk/Source/WebCore/ChangeLog
r238482 r238488 1 2018-11-26 Manuel Rego Casasnovas <rego@igalia.com> 2 3 [css-grid] Fix grid container sizing under min-content height 4 https://bugs.webkit.org/show_bug.cgi?id=191889 5 6 Reviewed by Javier Fernandez. 7 8 The spec is quite clear 9 (https://drafts.csswg.org/css-sizing/#valdef-width-min-content): 10 "min-content 11 If specified for the inline axis, use the min-content inline size; 12 otherwise behaves as the property’s initial value." 13 14 So if a grid container has "height: min-content" it should behave 15 the same than with "height: auto". 16 17 The patch removes computeIntrinsicLogicalContentHeightUsing() in 18 RenderGrid as we don't need a custom one anymore. 19 We can also get rid of m_minContentHeight and m_maxContentHeight 20 attributes that were only used for this logic. 21 22 Test: fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows.html 23 fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html 24 imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-container-sizing-constraints-001.html 25 26 * rendering/RenderGrid.cpp: 27 (WebCore::RenderGrid::layoutBlock): 28 (WebCore::RenderGrid::computeIntrinsicLogicalWidths const): 29 (WebCore::RenderGrid::computeTrackSizesForIndefiniteSize const): 30 * rendering/RenderGrid.h: 31 1 32 2018-11-25 Zalan Bujtas <zalan@apple.com> 2 33 -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r238463 r238488 246 246 // 2- Next, the track sizing algorithm resolves the sizes of the grid rows, 247 247 // using the grid column sizes calculated in the previous step. 248 if (!hasDefiniteLogicalHeight) { 249 m_minContentHeight = 0_lu; 250 m_maxContentHeight = 0_lu; 251 computeTrackSizesForIndefiniteSize(m_trackSizingAlgorithm, ForRows, *m_minContentHeight, *m_maxContentHeight); 252 // FIXME: This should be really added to the intrinsic height in RenderBox::computeContentAndScrollbarLogicalHeightUsing(). 253 // Remove this when that is fixed. 254 ASSERT(m_minContentHeight); 255 ASSERT(m_maxContentHeight); 256 LayoutUnit scrollbarHeight = scrollbarLogicalHeight(); 257 *m_minContentHeight += scrollbarHeight; 258 *m_maxContentHeight += scrollbarHeight; 259 } else 248 if (!hasDefiniteLogicalHeight) 249 computeTrackSizesForIndefiniteSize(m_trackSizingAlgorithm, ForRows); 250 else 260 251 computeTrackSizesForDefiniteSize(ForRows, availableLogicalHeight(ExcludeMarginBorderPadding)); 261 252 LayoutUnit trackBasedLogicalHeight = m_trackSizingAlgorithm.computeTrackBasedSize() + borderAndPaddingLogicalHeight() + scrollbarLogicalHeight(); … … 417 408 } 418 409 419 computeTrackSizesForIndefiniteSize(algorithm, ForColumns, minLogicalWidth,maxLogicalWidth);410 computeTrackSizesForIndefiniteSize(algorithm, ForColumns, &minLogicalWidth, &maxLogicalWidth); 420 411 421 412 if (hadExcludedChildren) { … … 429 420 } 430 421 431 void RenderGrid::computeTrackSizesForIndefiniteSize(GridTrackSizingAlgorithm& algorithm, GridTrackSizingDirection direction, LayoutUnit & minIntrinsicSize, LayoutUnit&maxIntrinsicSize) const422 void RenderGrid::computeTrackSizesForIndefiniteSize(GridTrackSizingAlgorithm& algorithm, GridTrackSizingDirection direction, LayoutUnit* minIntrinsicSize, LayoutUnit* maxIntrinsicSize) const 432 423 { 433 424 const Grid& grid = algorithm.grid(); … … 438 429 LayoutUnit totalGuttersSize = guttersSize(grid, direction, 0, numberOfTracks, std::nullopt); 439 430 440 minIntrinsicSize = algorithm.minContentSize() + totalGuttersSize; 441 maxIntrinsicSize = algorithm.maxContentSize() + totalGuttersSize; 431 if (minIntrinsicSize) 432 *minIntrinsicSize = algorithm.minContentSize() + totalGuttersSize; 433 if (maxIntrinsicSize) 434 *maxIntrinsicSize = algorithm.maxContentSize() + totalGuttersSize; 442 435 443 436 ASSERT(algorithm.tracksAreWiderThanMinTrackBreadth()); 444 }445 446 std::optional<LayoutUnit> RenderGrid::computeIntrinsicLogicalContentHeightUsing(Length logicalHeightLength, std::optional<LayoutUnit> intrinsicLogicalHeight, LayoutUnit borderAndPadding) const447 {448 if (!intrinsicLogicalHeight)449 return std::nullopt;450 451 if (logicalHeightLength.isMinContent())452 return m_minContentHeight;453 454 if (logicalHeightLength.isMaxContent())455 return m_maxContentHeight;456 457 if (logicalHeightLength.isFitContent()) {458 LayoutUnit fillAvailableExtent = containingBlock()->availableLogicalHeight(ExcludeMarginBorderPadding);459 return std::min(m_maxContentHeight.value_or(0), std::max(m_minContentHeight.value_or(0), fillAvailableExtent));460 }461 462 if (logicalHeightLength.isFillAvailable())463 return containingBlock()->availableLogicalHeight(ExcludeMarginBorderPadding) - borderAndPadding;464 ASSERT_NOT_REACHED();465 return std::nullopt;466 437 } 467 438 -
trunk/Source/WebCore/rendering/RenderGrid.h
r238463 r238488 102 102 bool namedGridLinesDefinitionDidChange(const RenderStyle&) const; 103 103 104 std::optional<LayoutUnit> computeIntrinsicLogicalContentHeightUsing(Length logicalHeightLength, std::optional<LayoutUnit> intrinsicContentHeight, LayoutUnit borderAndPadding) const override;105 106 104 unsigned computeAutoRepeatTracksCount(GridTrackSizingDirection, std::optional<LayoutUnit> availableSize) const; 107 105 … … 128 126 129 127 void computeTrackSizesForDefiniteSize(GridTrackSizingDirection, LayoutUnit availableSpace); 130 void computeTrackSizesForIndefiniteSize(GridTrackSizingAlgorithm&, GridTrackSizingDirection, LayoutUnit & minIntrinsicSize, LayoutUnit& maxIntrinsicSize) const;128 void computeTrackSizesForIndefiniteSize(GridTrackSizingAlgorithm&, GridTrackSizingDirection, LayoutUnit* minIntrinsicSize = nullptr, LayoutUnit* maxIntrinsicSize = nullptr) const; 131 129 LayoutUnit computeTrackBasedLogicalHeight() const; 132 130 … … 201 199 OutOfFlowPositionsMap m_outOfFlowItemRow; 202 200 203 std::optional<LayoutUnit> m_minContentHeight;204 std::optional<LayoutUnit> m_maxContentHeight;205 206 201 bool m_hasAnyOrthogonalItem {false}; 207 202 bool m_baselineItemsCached {false};
Note:
See TracChangeset
for help on using the changeset viewer.