Changeset 158744 in webkit
- Timestamp:
- Nov 6, 2013 7:54:08 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r158743 r158744 1 2013-10-24 Sergio Villar Senin <svillar@igalia.com> 2 3 [CSS Grid Layout] Add support for named grid areas 4 https://bugs.webkit.org/show_bug.cgi?id=120045 5 6 Reviewed by Andreas Kling. 7 8 From Blink r155555, r155850 and r155889 by <jchaffraix@chromium.org> 9 10 Added a couple of new tests to check that both known and unknown 11 named grid areas are properly handled. 12 13 Also extended some of the existing tests to use named grid areas 14 as any other possible grid position. 15 16 * fast/css-grid-layout/grid-item-area-get-set-expected.txt: 17 * fast/css-grid-layout/grid-item-area-get-set.html: 18 * fast/css-grid-layout/grid-item-bad-named-area-auto-placement-expected.txt: Added. 19 * fast/css-grid-layout/grid-item-bad-named-area-auto-placement.html: Added. 20 * fast/css-grid-layout/grid-item-column-row-get-set-expected.txt: 21 * fast/css-grid-layout/grid-item-column-row-get-set.html: 22 * fast/css-grid-layout/grid-item-end-after-get-set-expected.txt: 23 * fast/css-grid-layout/grid-item-end-after-get-set.html: 24 * fast/css-grid-layout/grid-item-named-grid-area-resolution-expected.txt: Added. 25 * fast/css-grid-layout/grid-item-named-grid-area-resolution.html: Added. 26 * fast/css-grid-layout/grid-item-start-before-get-set-expected.txt: 27 * fast/css-grid-layout/grid-item-start-before-get-set.html: 28 * fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js: 29 1 30 2013-11-06 Chris Fleizach <cfleizach@apple.com> 2 31 -
trunk/LayoutTests/fast/css-grid-layout/grid-item-area-get-set-expected.txt
r156638 r158744 4 4 5 5 6 Test getting -webkit-grid-area set through CSS6 Test getting grid-area set through CSS 7 7 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "1" 8 8 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" 9 9 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 10 10 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 11 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "thirdArea" 12 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "thirdArea" 13 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "thirdArea" 14 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "thirdArea" 11 15 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "-1" 12 16 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "span 1" 13 17 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 14 18 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 19 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "firstArea" 20 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "secondArea" 21 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "firstArea" 22 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "secondArea" 15 23 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 1" 16 24 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "10" … … 21 29 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "span 8" 22 30 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "9" 31 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "firstArea" 32 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "span 1" 33 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 34 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "1 foobar" 23 35 24 Test getting and setting -webkit-grid-area set through JS36 Test getting and setting grid-area set through JS 25 37 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "-1" 26 38 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" -
trunk/LayoutTests/fast/css-grid-layout/grid-item-area-get-set.html
r157389 r158744 8 8 <link href="resources/grid.css" rel="stylesheet"> 9 9 <style> 10 .grid { 11 -webkit-grid-template: "firstArea secondArea" 12 "thirdArea thirdArea"; 13 } 14 10 15 #oneValueGridArea { 11 16 -webkit-grid-area: 1; 12 17 } 13 18 19 #oneValueIdentGridArea { 20 -webkit-grid-area: thirdArea; 21 } 22 14 23 #twoValueGridArea { 15 24 -webkit-grid-area: -1 / span 1; 25 } 26 27 #twoValueIdentGridArea { 28 -webkit-grid-area: firstArea / secondArea; 16 29 } 17 30 … … 23 36 -webkit-grid-area: -5 / 5 span / span 8 / 9; 24 37 } 38 39 #fourValueMixedGridArea { 40 -webkit-grid-area: firstArea / span / nonExistent / "foobar"; 41 } 25 42 </style> 26 43 <script src="../../resources/js-test-pre.js"></script> … … 29 46 <div class="grid"> 30 47 <div id="oneValueGridArea"></div> 48 <div id="oneValueIdentGridArea"></div> 31 49 <div id="twoValueGridArea"></div> 50 <div id="twoValueIdentGridArea"></div> 32 51 <div id="threeValueGridArea"></div> 33 52 <div id="fourValueGridArea"></div> 53 <div id="fourValueMixedGridArea"></div> 34 54 </div> 35 55 <script> … … 80 100 } 81 101 82 debug("Test getting -webkit-grid-area set through CSS");102 debug("Test getting grid-area set through CSS"); 83 103 testGridAreaCSSParsing("oneValueGridArea", "1"); 104 testGridAreaCSSParsing("oneValueIdentGridArea", "thirdArea", "thirdArea", "thirdArea", "thirdArea"); 84 105 testGridAreaCSSParsing("twoValueGridArea", "-1", "span 1"); 106 testGridAreaCSSParsing("twoValueIdentGridArea", "firstArea", "secondArea", "firstArea", "secondArea"); 85 107 testGridAreaCSSParsing("threeValueGridArea", "span 1", "10", "-1"); 86 108 testGridAreaCSSParsing("fourValueGridArea", "-5", "span 5", "span 8", "9"); 109 testGridAreaCSSParsing("fourValueMixedGridArea", "firstArea", "span 1", "auto", "1 foobar"); 87 110 88 111 debug(""); 89 debug("Test getting and setting -webkit-grid-area set through JS");112 debug("Test getting and setting grid-area set through JS"); 90 113 testGridAreaJSParsing("-1"); 91 114 testGridAreaJSParsing("-1 / span 5"); -
trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt
r154996 r158744 5 5 6 6 Test getting -webkit-grid-column and -webkit-grid-row set through CSS 7 PASS getComputedStyle(grid Element, '').getPropertyValue('-webkit-grid-column') is "auto / auto"8 PASS getComputedStyle(grid Element, '').getPropertyValue('-webkit-grid-column-start') is "auto"9 PASS getComputedStyle(grid Element, '').getPropertyValue('-webkit-grid-column-end') is "auto"10 PASS getComputedStyle(grid Element, '').getPropertyValue('-webkit-grid-row') is "auto / auto"11 PASS getComputedStyle(grid Element, '').getPropertyValue('-webkit-grid-row-start') is "auto"12 PASS getComputedStyle(grid Element, '').getPropertyValue('-webkit-grid-row-end') is "auto"7 PASS getComputedStyle(gridItemWithNoCSSRule, '').getPropertyValue('-webkit-grid-column') is "auto / auto" 8 PASS getComputedStyle(gridItemWithNoCSSRule, '').getPropertyValue('-webkit-grid-column-start') is "auto" 9 PASS getComputedStyle(gridItemWithNoCSSRule, '').getPropertyValue('-webkit-grid-column-end') is "auto" 10 PASS getComputedStyle(gridItemWithNoCSSRule, '').getPropertyValue('-webkit-grid-row') is "auto / auto" 11 PASS getComputedStyle(gridItemWithNoCSSRule, '').getPropertyValue('-webkit-grid-row-start') is "auto" 12 PASS getComputedStyle(gridItemWithNoCSSRule, '').getPropertyValue('-webkit-grid-row-end') is "auto" 13 13 PASS getComputedStyle(gridItemWithPositiveInteger, '').getPropertyValue('-webkit-grid-column') is "10 / auto" 14 14 PASS getComputedStyle(gridItemWithPositiveInteger, '').getPropertyValue('-webkit-grid-column-start') is "10" … … 95 95 PASS getComputedStyle(gridItemWithSpanNumberString, '').getPropertyValue('-webkit-grid-row-start') is "-1" 96 96 PASS getComputedStyle(gridItemWithSpanNumberString, '').getPropertyValue('-webkit-grid-row-end') is "span 2 last" 97 PASS getComputedStyle(gridItemWithSingleNamedGridArea, '').getPropertyValue('-webkit-grid-column') is "thirdArea / thirdArea" 98 PASS getComputedStyle(gridItemWithSingleNamedGridArea, '').getPropertyValue('-webkit-grid-column-start') is "thirdArea" 99 PASS getComputedStyle(gridItemWithSingleNamedGridArea, '').getPropertyValue('-webkit-grid-column-end') is "thirdArea" 100 PASS getComputedStyle(gridItemWithSingleNamedGridArea, '').getPropertyValue('-webkit-grid-row') is "firstArea / firstArea" 101 PASS getComputedStyle(gridItemWithSingleNamedGridArea, '').getPropertyValue('-webkit-grid-row-start') is "firstArea" 102 PASS getComputedStyle(gridItemWithSingleNamedGridArea, '').getPropertyValue('-webkit-grid-row-end') is "firstArea" 103 PASS getComputedStyle(gridItemWithNamedGridAreaAndSpan, '').getPropertyValue('-webkit-grid-column') is "thirdArea / span 1" 104 PASS getComputedStyle(gridItemWithNamedGridAreaAndSpan, '').getPropertyValue('-webkit-grid-column-start') is "thirdArea" 105 PASS getComputedStyle(gridItemWithNamedGridAreaAndSpan, '').getPropertyValue('-webkit-grid-column-end') is "span 1" 106 PASS getComputedStyle(gridItemWithNamedGridAreaAndSpan, '').getPropertyValue('-webkit-grid-row') is "firstArea / span 2" 107 PASS getComputedStyle(gridItemWithNamedGridAreaAndSpan, '').getPropertyValue('-webkit-grid-row-start') is "firstArea" 108 PASS getComputedStyle(gridItemWithNamedGridAreaAndSpan, '').getPropertyValue('-webkit-grid-row-end') is "span 2" 97 109 98 110 Test the initial value … … 183 195 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 2 last" 184 196 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "-1 nav" 197 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "5 / auto" 198 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "5" 199 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 200 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "8 / auto" 201 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "8" 202 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 203 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto" 204 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" 205 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 206 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / auto" 207 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 208 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 209 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "span 3 first / auto" 210 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "span 3 first" 211 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 212 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 1 last / auto" 213 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 1 last" 214 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 185 215 186 216 Test setting grid-column and grid-row back to 'auto' through JS … … 397 427 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 398 428 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 399 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto"400 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"401 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"402 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / auto"403 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"404 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"405 429 PASS successfullyParsed is true 406 430 -
trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html
-
Property
svn:executable
set to
*
r155263 r158744 8 8 </script> 9 9 <style> 10 .grid { 11 -webkit-grid-template: "firstArea secondArea" 12 "thirdArea thirdArea"; 13 } 14 10 15 .gridItemWithPositiveInteger { 11 16 -webkit-grid-column: 10; … … 63 68 -webkit-grid-column: 1 /span 3 "first"; 64 69 -webkit-grid-row: -1 / "last" 2 span ; 70 } 71 .gridItemWithSingleNamedGridArea { 72 -webkit-grid-column: thirdArea; 73 -webkit-grid-row: firstArea; 74 } 75 .gridItemWithNamedGridAreaAndSpan { 76 -webkit-grid-column: thirdArea / span; 77 -webkit-grid-row: firstArea / span 2; 65 78 } 66 79 </style> … … 68 81 </head> 69 82 <body> 70 <!-- The first has no properties set on it. --> 71 <div id="gridElement"></div> 72 <div class="gridItemWithPositiveInteger" id="gridItemWithPositiveInteger"></div> 73 <div class="gridItemWithNegativeInteger" id="gridItemWithNegativeInteger"></div> 74 <div class="gridItemWithAuto" id="gridItemWithAutoElement"></div> 75 <div class="gridItemWith2Integer" id="gridItemWith2IntegerElement"></div> 76 <div class="gridItemWithNegativePositiveInteger" id="gridItemWithNegativePositiveIntegerElement"></div> 77 <div class="gridItemWith2Auto" id="gridItemWith2AutoElement"></div> 78 <div class="gridItemWithBeforeSpan" id="gridItemWithBeforeSpanElement"></div> 79 <div class="gridItemWithAfterSpan" id="gridItemWithAfterSpanElement"></div> 80 <div class="gridItemWith2OnlySpan" id="gridItemWith2OnlySpanElement"></div> 81 <div class="gridItemWithNegativePositiveInteger gridItemWithBothLongHand" id="gridItemWithBothShortLongHandElement"></div> 82 <div class="gridItemWithNoSpace" id="gridItemWithNoSpaceElement"></div> 83 <div class="gridItemWithString" id="gridItemWithString"></div> 84 <div class="gridItemWithSpanString" id="gridItemWithSpanString"></div> 85 <div class="gridItemWithSpanNumberString" id="gridItemWithSpanNumberString"></div> 83 <div class="grid"> 84 <!-- The first has no properties set on it. --> 85 <div id="gridItemWithNoCSSRule"></div> 86 <div class="gridItemWithPositiveInteger" id="gridItemWithPositiveInteger"></div> 87 <div class="gridItemWithNegativeInteger" id="gridItemWithNegativeInteger"></div> 88 <div class="gridItemWithAuto" id="gridItemWithAutoElement"></div> 89 <div class="gridItemWith2Integer" id="gridItemWith2IntegerElement"></div> 90 <div class="gridItemWithNegativePositiveInteger" id="gridItemWithNegativePositiveIntegerElement"></div> 91 <div class="gridItemWith2Auto" id="gridItemWith2AutoElement"></div> 92 <div class="gridItemWithBeforeSpan" id="gridItemWithBeforeSpanElement"></div> 93 <div class="gridItemWithAfterSpan" id="gridItemWithAfterSpanElement"></div> 94 <div class="gridItemWith2OnlySpan" id="gridItemWith2OnlySpanElement"></div> 95 <div class="gridItemWithNegativePositiveInteger gridItemWithBothLongHand" id="gridItemWithBothShortLongHandElement"></div> 96 <div class="gridItemWithNoSpace" id="gridItemWithNoSpaceElement"></div> 97 <div class="gridItemWithString" id="gridItemWithString"></div> 98 <div class="gridItemWithSpanString" id="gridItemWithSpanString"></div> 99 <div class="gridItemWithSpanNumberString" id="gridItemWithSpanNumberString"></div> 100 <div class="gridItemWithSingleNamedGridArea" id="gridItemWithSingleNamedGridArea"></div> 101 <div class="gridItemWithNamedGridAreaAndSpan" id="gridItemWithNamedGridAreaAndSpan"></div> 102 </div> 86 103 <script> 87 104 description('Test that setting and getting grid-column and grid-row works as expected'); 88 105 89 106 debug("Test getting -webkit-grid-column and -webkit-grid-row set through CSS"); 90 testColumnRowCSSParsing("grid Element", "auto / auto", "auto / auto");107 testColumnRowCSSParsing("gridItemWithNoCSSRule", "auto / auto", "auto / auto"); 91 108 testColumnRowCSSParsing("gridItemWithPositiveInteger", "10 / auto", "15 / auto"); 92 109 testColumnRowCSSParsing("gridItemWithNegativeInteger", "-10 / auto", "-15 / auto"); … … 103 120 testColumnRowCSSParsing("gridItemWithSpanString", "1 / span 1 first", "-1 / span 1 last"); 104 121 testColumnRowCSSParsing("gridItemWithSpanNumberString", "1 / span 3 first", "-1 / span 2 last"); 122 testColumnRowCSSParsing("gridItemWithSingleNamedGridArea", "thirdArea / thirdArea", "firstArea / firstArea"); 123 testColumnRowCSSParsing("gridItemWithNamedGridAreaAndSpan", "thirdArea / span 1", "firstArea / span 2"); 105 124 106 125 debug(""); … … 130 149 testColumnRowJSParsing("3 'first' / 2 'last'", "5 'nav' / 'last' 7 span", "3 first / 2 last", "5 nav / span 7 last"); 131 150 testColumnRowJSParsing("3 'first' span / -3 'last'", "'last' 2 span / -1 'nav'", "span 3 first / -3 last", "span 2 last / -1 nav"); 151 testColumnRowJSParsing("5 / none", "8 / foobar", "5 / auto", "8 / auto"); 152 testColumnRowJSParsing("nonExistent / none", "nonExistent / foobar", "auto / auto", "auto / auto"); 153 testColumnRowJSParsing("span 'first' 3 / none", "'last' span / foobar", "span 3 first / auto", "span 1 last / auto"); 132 154 133 155 debug(""); … … 155 177 testColumnRowInvalidJSParsing("4 5", "5 8"); 156 178 testColumnRowInvalidJSParsing("4 /", "5 /"); 157 testColumnRowInvalidJSParsing("5 / none", "8 / foobar");158 179 testColumnRowInvalidJSParsing("5 5", "8 auto"); 159 180 testColumnRowInvalidJSParsing("5 / /", "8 / /"); -
Property
svn:executable
set to
-
trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt
r154438 r158744 47 47 PASS getComputedStyle(gridItemWithAutoElement, '').getPropertyValue('-webkit-grid-row-start') is "auto" 48 48 PASS getComputedStyle(gridItemWithAutoElement, '').getPropertyValue('-webkit-grid-row-end') is "auto" 49 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-column') is "auto / firstArea" 50 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-column-start') is "auto" 51 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-column-end') is "firstArea" 52 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-row') is "auto / thirdArea" 53 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-row-start') is "auto" 54 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-row-end') is "thirdArea" 49 55 50 56 Test the initial value … … 79 85 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 80 86 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 87 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / thirdArea" 88 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" 89 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "thirdArea" 90 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / secondArea" 91 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 92 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "secondArea" 93 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto" 94 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" 95 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 96 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / secondArea" 97 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 98 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "secondArea" 99 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / secondArea" 100 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" 101 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "secondArea" 102 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / auto" 103 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 104 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 81 105 82 106 Test setting grid-column-end and grid-row-end back to 'auto' through JS -
trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html
r157389 r158744 8 8 <link href="resources/grid.css" rel="stylesheet"> 9 9 <style> 10 .grid { 11 -webkit-grid-template: "firstArea secondArea" 12 "thirdArea thirdArea"; 13 } 14 10 15 .gridItemWithPositiveInteger { 11 16 -webkit-grid-column-end: 10; … … 32 37 -webkit-grid-row-end: auto; 33 38 } 39 .gridItemWithArea { 40 -webkit-grid-column-end: firstArea; 41 -webkit-grid-row-end: thirdArea; 42 } 34 43 </style> 35 44 <script src="resources/grid-item-column-row-parsing-utils.js"></script> … … 37 46 </head> 38 47 <body> 39 <!-- The first has no properties set on it. -->40 48 <div class="grid"> 49 <!-- The first has no properties set on it. --> 41 50 <div id="gridElement"></div> 42 51 <div class="gridItemWithPositiveInteger" id="gridItemWithPositiveInteger"></div> … … 46 55 <div class="gridItemWithOnlySpan" id="gridItemWithOnlySpan"></div> 47 56 <div class="gridItemWithAuto" id="gridItemWithAutoElement"></div> 57 <div class="gridItemWithArea" id="gridItemWithArea"></div> 48 58 </div> 49 59 <script> … … 58 68 testColumnRowCSSParsing("gridItemWithOnlySpan", "auto / span 1", "auto / span 1"); 59 69 testColumnRowCSSParsing("gridItemWithAutoElement", "auto / auto", "auto / auto"); 70 testColumnRowCSSParsing("gridItemWithArea", "auto / firstArea", "auto / thirdArea"); 60 71 61 72 debug(""); … … 74 85 testColumnEndRowEndJSParsing("span 7", "span 2"); 75 86 testColumnEndRowEndJSParsing("auto", "auto"); 87 testColumnEndRowEndJSParsing("thirdArea", "secondArea"); 88 testColumnEndRowEndJSParsing("nonExistentArea", "secondArea", "auto", "secondArea"); 89 testColumnEndRowEndJSParsing("secondArea", "nonExistentArea", "secondArea", "auto"); 76 90 77 91 debug(""); -
trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt
r154438 r158744 4 4 5 5 6 Test getting -webkit-grid-column-start and -webkit-grid-row-start set through CSS6 Test getting grid-column-start and grid-row-start set through CSS 7 7 PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-column-start') is 'auto' 8 8 PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-column') is 'auto / auto' … … 45 45 PASS getComputedStyle(gridItemWithAutoElement, '').getPropertyValue('-webkit-grid-row-start') is "auto" 46 46 PASS getComputedStyle(gridItemWithAutoElement, '').getPropertyValue('-webkit-grid-row-end') is "auto" 47 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-column') is "firstArea / auto" 48 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-column-start') is "firstArea" 49 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-column-end') is "auto" 50 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-row') is "thirdArea / auto" 51 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-row-start') is "thirdArea" 52 PASS getComputedStyle(gridItemWithArea, '').getPropertyValue('-webkit-grid-row-end') is "auto" 47 53 48 54 Test the initial value … … 77 83 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 78 84 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 85 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "thirdArea / auto" 86 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "thirdArea" 87 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 88 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "secondArea / auto" 89 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "secondArea" 90 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 91 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto" 92 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto" 93 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 94 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "secondArea / auto" 95 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "secondArea" 96 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 97 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "secondArea / auto" 98 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "secondArea" 99 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto" 100 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / auto" 101 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto" 102 PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto" 79 103 80 104 Test setting grid-column-start and grid-row-start back to 'auto' through JS -
trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html
r157389 r158744 8 8 <link href="resources/grid.css" rel="stylesheet"> 9 9 <style> 10 .grid { 11 -webkit-grid-template: "firstArea secondArea" 12 "thirdArea thirdArea"; 13 } 14 10 15 .gridItemWithPositiveInteger { 11 16 -webkit-grid-column-start: 10; … … 32 37 -webkit-grid-row-start: auto; 33 38 } 39 .gridItemWithArea { 40 -webkit-grid-column-start: firstArea; 41 -webkit-grid-row-start: thirdArea; 42 } 34 43 </style> 35 44 <script src="resources/grid-item-column-row-parsing-utils.js"></script> … … 46 55 <div class="gridItemWithOnlySpan" id="gridItemWithOnlySpan"></div> 47 56 <div class="gridItemWithAuto" id="gridItemWithAutoElement"></div> 57 <div class="gridItemWithArea" id="gridItemWithArea"></div> 48 58 </div> 49 59 <script> 50 60 description('Test that setting and getting grid-column-start and grid-row-start works as expected'); 51 61 52 debug("Test getting -webkit-grid-column-start and -webkit-grid-row-start set through CSS");62 debug("Test getting grid-column-start and grid-row-start set through CSS"); 53 63 var gridElement = document.getElementById("gridElement"); 54 64 shouldBe("getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-column-start')", "'auto'"); … … 63 73 testColumnRowCSSParsing("gridItemWithOnlySpan", "span 1 / auto", "span 1 / auto"); 64 74 testColumnRowCSSParsing("gridItemWithAutoElement", "auto / auto", "auto / auto"); 75 testColumnRowCSSParsing("gridItemWithArea", "firstArea / auto", "thirdArea / auto"); 65 76 66 77 debug(""); … … 79 90 testColumnStartRowStartJSParsing("span 3", "span 20"); 80 91 testColumnStartRowStartJSParsing("auto", "auto"); 92 testColumnStartRowStartJSParsing("thirdArea", "secondArea"); 93 testColumnStartRowStartJSParsing("nonExistentArea", "secondArea", "auto", "secondArea"); 94 testColumnStartRowStartJSParsing("secondArea", "nonExistentArea", "secondArea", "auto"); 81 95 82 96 debug(""); -
trunk/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js
r154438 r158744 31 31 { 32 32 var gridItem = document.createElement("div"); 33 document.body.appendChild(gridItem); 33 var gridElement = document.getElementsByClassName("grid")[0]; 34 gridElement.appendChild(gridItem); 34 35 gridItem.style.webkitGridColumn = columnValue; 35 36 gridItem.style.webkitGridRow = rowValue; … … 37 38 checkColumnRowValues(gridItem, expectedColumnValue ? expectedColumnValue : columnValue, expectedRowValue ? expectedRowValue : rowValue); 38 39 39 document.body.removeChild(gridItem);40 gridElement.removeChild(gridItem); 40 41 } 41 42 … … 52 53 } 53 54 54 window.testColumnStartRowStartJSParsing = function(columnStartValue, rowStartValue )55 window.testColumnStartRowStartJSParsing = function(columnStartValue, rowStartValue, expectedColumnStartValue, expectedRowStartValue) 55 56 { 56 57 var gridItem = document.createElement("div"); 57 document.body.appendChild(gridItem); 58 var gridElement = document.getElementsByClassName("grid")[0]; 59 gridElement.appendChild(gridItem); 58 60 gridItem.style.webkitGridColumnStart = columnStartValue; 59 61 gridItem.style.webkitGridRowStart = rowStartValue; 60 62 61 checkColumnRowValues(gridItem, columnStartValue + " / auto", rowStartValue + " / auto"); 63 if (expectedColumnStartValue === undefined) 64 expectedColumnStartValue = columnStartValue; 65 if (expectedRowStartValue === undefined) 66 expectedRowStartValue = rowStartValue; 62 67 63 document.body.removeChild(gridItem); 68 checkColumnRowValues(gridItem, expectedColumnStartValue + " / auto", expectedRowStartValue + " / auto"); 69 70 gridElement.removeChild(gridItem); 64 71 } 65 72 66 window.testColumnEndRowEndJSParsing = function(columnEndValue, rowEndValue )73 window.testColumnEndRowEndJSParsing = function(columnEndValue, rowEndValue, expectedColumnEndValue, expectedRowEndValue) 67 74 { 68 75 var gridItem = document.createElement("div"); 69 document.body.appendChild(gridItem); 76 var gridElement = document.getElementsByClassName("grid")[0]; 77 gridElement.appendChild(gridItem); 70 78 gridItem.style.webkitGridColumnEnd = columnEndValue; 71 79 gridItem.style.webkitGridRowEnd = rowEndValue; 72 80 73 checkColumnRowValues(gridItem, "auto / " + columnEndValue, "auto / " + rowEndValue); 81 if (expectedColumnEndValue === undefined) 82 expectedColumnEndValue = columnEndValue; 83 if (expectedRowEndValue === undefined) 84 expectedRowEndValue = rowEndValue; 74 85 75 document.body.removeChild(gridItem); 86 checkColumnRowValues(gridItem, "auto / " + expectedColumnEndValue, "auto / " + expectedRowEndValue); 87 88 gridElement.removeChild(gridItem); 76 89 } 77 90 -
trunk/Source/WebCore/ChangeLog
r158743 r158744 1 2013-10-24 Sergio Villar Senin <svillar@igalia.com> 2 3 [CSS Grid Layout] Add support for named grid areas 4 https://bugs.webkit.org/show_bug.cgi?id=120045 5 6 Reviewed by Andreas Kling. 7 8 From Blink r155555, r155850 and r155889 by <jchaffraix@chromium.org> 9 10 Added support for named grid areas. Basically a named grid area is 11 now a valid grid position. The shorthand parsing of grid-area was 12 split from the grid-{row|column} as the rules for expanding are 13 slightly different. 14 15 Unknown grid area names are treated as 'auto' as per the 16 specification. This means that for those cases we need to trigger 17 the auto-placement algorithm. 18 19 Tests: fast/css-grid-layout/grid-item-bad-named-area-auto-placement.html 20 fast/css-grid-layout/grid-item-named-grid-area-resolution.html 21 22 * css/CSSComputedStyleDeclaration.cpp: 23 (WebCore::valueForGridPosition): 24 * css/CSSParser.cpp: 25 (WebCore::CSSParser::parseValue): 26 (WebCore::CSSParser::parseGridPosition): 27 (WebCore::gridMissingGridPositionValue): 28 (WebCore::CSSParser::parseGridItemPositionShorthand): 29 (WebCore::CSSParser::parseGridAreaShorthand): 30 (WebCore::CSSParser::parseSingleGridAreaLonghand): 31 * css/CSSParser.h: 32 * css/StyleResolver.cpp: 33 (WebCore::StyleResolver::adjustRenderStyle): 34 (WebCore::StyleResolver::adjustGridItemPosition): 35 (WebCore::createGridPosition): 36 * css/StyleResolver.h: 37 * rendering/RenderGrid.cpp: 38 (WebCore::RenderGrid::resolveGridPositionFromStyle): 39 * rendering/style/GridPosition.h: 40 (WebCore::GridPosition::isNamedGridArea): 41 (WebCore::GridPosition::setNamedGridArea): 42 (WebCore::GridPosition::namedGridLine): 43 1 44 2013-11-06 Chris Fleizach <cfleizach@apple.com> 2 45 -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r158721 r158744 1168 1168 if (position.isAuto()) 1169 1169 return cssValuePool().createIdentifierValue(CSSValueAuto); 1170 1171 if (position.isNamedGridArea()) 1172 return cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_STRING); 1170 1173 1171 1174 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); -
trunk/Source/WebCore/css/CSSParser.cpp
r158515 r158744 2714 2714 break; 2715 2715 2716 case CSSPropertyWebkitGridArea:2717 2716 case CSSPropertyWebkitGridColumn: 2718 2717 case CSSPropertyWebkitGridRow: { … … 2722 2721 return parseGridItemPositionShorthand(propId, important); 2723 2722 } 2723 2724 case CSSPropertyWebkitGridArea: 2725 if (!cssGridLayoutEnabled()) 2726 return false; 2727 return parseGridAreaShorthand(important); 2724 2728 2725 2729 case CSSPropertyWebkitGridTemplate: … … 4872 4876 } 4873 4877 4878 if (value->id != CSSValueSpan && value->unit == CSSPrimitiveValue::CSS_IDENT) { 4879 m_valueList->next(); 4880 return cssValuePool().createValue(value->string, CSSPrimitiveValue::CSS_STRING); 4881 } 4882 4874 4883 RefPtr<CSSPrimitiveValue> numericValue; 4875 4884 RefPtr<CSSPrimitiveValue> gridLineName; … … 4912 4921 } 4913 4922 4923 static PassRefPtr<CSSValue> gridMissingGridPositionValue(CSSValue* value) 4924 { 4925 if (value->isPrimitiveValue() && toCSSPrimitiveValue(value)->isString()) 4926 return value; 4927 4928 return cssValuePool().createIdentifierValue(CSSValueAuto); 4929 } 4930 4914 4931 bool CSSParser::parseGridItemPositionShorthand(CSSPropertyID shorthandId, bool important) 4915 4932 { 4916 4933 ShorthandScope scope(this, shorthandId); 4917 4934 const StylePropertyShorthand& shorthand = shorthandForProperty(shorthandId); 4918 if (!parseValue(shorthand.properties()[0], important))4919 return false; 4920 4921 size_t index = 1;4922 for (; index < shorthand.length(); ++index) {4923 if (!m_valueList->current()) 4924 break;4925 4935 ASSERT(shorthand.length() == 2); 4936 4937 RefPtr<CSSValue> startValue = parseGridPosition(); 4938 if (!startValue) 4939 return false; 4940 4941 RefPtr<CSSValue> endValue; 4942 if (m_valueList->current()) { 4926 4943 if (!isForwardSlashOperator(m_valueList->current())) 4927 4944 return false; … … 4930 4947 return false; 4931 4948 4932 if (!parseValue(shorthand.properties()[index], important)) 4933 return false; 4934 } 4935 4936 // Only some values out of the {2|4} positions were specified, the other values should be set to 'auto'. 4937 // FIXME: If the first property was <ident>, the opposite value should be the same <ident>. 4938 for (; index < shorthand.length(); ++index) 4939 addProperty(shorthand.properties()[index], cssValuePool().createIdentifierValue(CSSValueAuto), important); 4940 4949 endValue = parseGridPosition(); 4950 if (!endValue || m_valueList->current()) 4951 return false; 4952 } else 4953 endValue = gridMissingGridPositionValue(startValue.get()); 4954 4955 addProperty(shorthand.properties()[0], startValue, important); 4956 addProperty(shorthand.properties()[1], endValue, important); 4957 return true; 4958 } 4959 4960 bool CSSParser::parseGridAreaShorthand(bool important) 4961 { 4962 ASSERT(cssGridLayoutEnabled()); 4963 4964 ShorthandScope scope(this, CSSPropertyWebkitGridArea); 4965 ASSERT(shorthandForProperty(CSSPropertyWebkitGridArea).length() == 4); 4966 4967 RefPtr<CSSValue> rowStartValue = parseGridPosition(); 4968 if (!rowStartValue) 4969 return false; 4970 4971 RefPtr<CSSValue> columnStartValue; 4972 if (!parseSingleGridAreaLonghand(columnStartValue)) 4973 return false; 4974 4975 RefPtr<CSSValue> rowEndValue; 4976 if (!parseSingleGridAreaLonghand(rowEndValue)) 4977 return false; 4978 4979 RefPtr<CSSValue> columnEndValue; 4980 if (!parseSingleGridAreaLonghand(columnEndValue)) 4981 return false; 4982 4983 if (!columnStartValue) 4984 columnStartValue = gridMissingGridPositionValue(rowStartValue.get()); 4985 4986 if (!rowEndValue) 4987 rowEndValue = gridMissingGridPositionValue(rowStartValue.get()); 4988 4989 if (!columnEndValue) 4990 columnEndValue = gridMissingGridPositionValue(columnStartValue.get()); 4991 4992 addProperty(CSSPropertyWebkitGridRowStart, rowStartValue, important); 4993 addProperty(CSSPropertyWebkitGridColumnStart, columnStartValue, important); 4994 addProperty(CSSPropertyWebkitGridRowEnd, rowEndValue, important); 4995 addProperty(CSSPropertyWebkitGridColumnEnd, columnEndValue, important); 4996 return true; 4997 } 4998 4999 bool CSSParser::parseSingleGridAreaLonghand(RefPtr<CSSValue>& property) 5000 { 5001 if (!m_valueList->current()) 5002 return true; 5003 5004 if (!isForwardSlashOperator(m_valueList->current())) 5005 return false; 5006 5007 if (!m_valueList->next()) 5008 return false; 5009 5010 property = parseGridPosition(); 4941 5011 return true; 4942 5012 } -
trunk/Source/WebCore/css/CSSParser.h
r158389 r158744 167 167 PassRefPtr<CSSValue> parseGridPosition(); 168 168 bool parseGridItemPositionShorthand(CSSPropertyID, bool important); 169 bool parseGridAreaShorthand(bool important); 170 bool parseSingleGridAreaLonghand(RefPtr<CSSValue>&); 169 171 bool parseGridTrackList(CSSPropertyID, bool important); 170 172 PassRefPtr<CSSPrimitiveValue> parseGridTrackSize(); -
trunk/Source/WebCore/css/StyleResolver.cpp
r158599 r158744 1364 1364 style->setDisplay(INLINE_BLOCK); 1365 1365 1366 adjustGridItemPosition(style );1366 adjustGridItemPosition(style, parentStyle); 1367 1367 1368 1368 #if ENABLE(SVG) … … 1391 1391 } 1392 1392 1393 void StyleResolver::adjustGridItemPosition(RenderStyle* style) const 1394 { 1393 void StyleResolver::adjustGridItemPosition(RenderStyle* style, RenderStyle* parentStyle) const 1394 { 1395 const GridPosition& columnStartPosition = style->gridItemColumnStart(); 1396 const GridPosition& columnEndPosition = style->gridItemColumnEnd(); 1397 const GridPosition& rowStartPosition = style->gridItemRowStart(); 1398 const GridPosition& rowEndPosition = style->gridItemRowEnd(); 1399 1395 1400 // If opposing grid-placement properties both specify a grid span, they both compute to ‘auto’. 1396 if ( style->gridItemColumnStart().isSpan() && style->gridItemColumnEnd().isSpan()) {1401 if (columnStartPosition.isSpan() && columnEndPosition.isSpan()) { 1397 1402 style->setGridItemColumnStart(GridPosition()); 1398 1403 style->setGridItemColumnEnd(GridPosition()); 1399 1404 } 1400 1405 1401 if ( style->gridItemRowStart().isSpan() && style->gridItemRowEnd().isSpan()) {1406 if (rowStartPosition.isSpan() && rowEndPosition.isSpan()) { 1402 1407 style->setGridItemRowStart(GridPosition()); 1403 1408 style->setGridItemRowEnd(GridPosition()); 1404 1409 } 1410 1411 // Unknown named grid area compute to 'auto'. 1412 const NamedGridAreaMap& map = parentStyle->namedGridArea(); 1413 1414 #define CLEAR_UNKNOWN_NAMED_AREA(prop, Prop) \ 1415 if (prop.isNamedGridArea() && !map.contains(prop.namedGridLine())) \ 1416 style->setGridItem##Prop(GridPosition()); 1417 1418 CLEAR_UNKNOWN_NAMED_AREA(columnStartPosition, ColumnStart); 1419 CLEAR_UNKNOWN_NAMED_AREA(columnEndPosition, ColumnEnd); 1420 CLEAR_UNKNOWN_NAMED_AREA(rowStartPosition, RowStart); 1421 CLEAR_UNKNOWN_NAMED_AREA(rowEndPosition, RowEnd); 1405 1422 } 1406 1423 … … 1985 2002 static bool createGridPosition(CSSValue* value, GridPosition& position) 1986 2003 { 1987 // For now, we only accept: 'auto' | [ <integer> || <string> ] | span && <integer>? 2004 // We accept the specification's grammar: 2005 // 'auto' | [ <integer> || <string> ] | [ span && [ <integer> || string ] ] | <ident> 1988 2006 if (value->isPrimitiveValue()) { 1989 #if !ASSERT_DISABLED1990 2007 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 2008 // We translate <ident> to <string> during parsing as it makes handling it simpler. 2009 if (primitiveValue->isString()) { 2010 position.setNamedGridArea(primitiveValue->getStringValue()); 2011 return true; 2012 } 2013 1991 2014 ASSERT(primitiveValue->getValueID() == CSSValueAuto); 1992 #endif1993 2015 return true; 1994 2016 } -
trunk/Source/WebCore/css/StyleResolver.h
r157672 r158744 347 347 348 348 void adjustRenderStyle(RenderStyle* styleToAdjust, RenderStyle* parentStyle, Element*); 349 void adjustGridItemPosition(RenderStyle* styleToAdjust ) const;349 void adjustGridItemPosition(RenderStyle* styleToAdjust, RenderStyle* parentStyle) const; 350 350 351 351 bool fastRejectSelector(const RuleData&) const; -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r158163 r158744 895 895 size_t RenderGrid::resolveGridPositionFromStyle(const GridPosition& position, GridPositionSide side) const 896 896 { 897 // FIXME: Handle other values for grid-{row,column} like ranges or line names.898 897 switch (position.type()) { 899 898 case ExplicitPosition: { … … 916 915 return adjustGridPositionForSide(endOfTrack - resolvedPosition, side); 917 916 } 918 case AutoPosition: 919 // 'auto' depends on the opposite position for resolution (e.g. grid-row: auto / 1). 917 case NamedGridAreaPosition: 918 { 919 NamedGridAreaMap::const_iterator it = style().namedGridArea().find(position.namedGridLine()); 920 // Unknown grid area should have been computed to 'auto' by now. 921 ASSERT(it != style()->namedGridArea().end()); 922 const GridCoordinate& gridAreaCoordinate = it->value; 923 switch (side) { 924 case ColumnStartSide: 925 return gridAreaCoordinate.columns.initialPositionIndex; 926 case ColumnEndSide: 927 return gridAreaCoordinate.columns.finalPositionIndex; 928 case RowStartSide: 929 return gridAreaCoordinate.rows.initialPositionIndex; 930 case RowEndSide: 931 return gridAreaCoordinate.rows.finalPositionIndex; 932 } 920 933 ASSERT_NOT_REACHED(); 921 934 return 0; 935 } 936 case AutoPosition: 922 937 case SpanPosition: 923 // FIXME: Handle span positions.938 // 'auto' and span depend on the opposite position for resolution (e.g. grid-row: auto / 1 or grid-column: span 3 / "myHeader"). 924 939 ASSERT_NOT_REACHED(); 925 940 return 0; -
trunk/Source/WebCore/rendering/style/GridPosition.h
r154996 r158744 39 39 AutoPosition, 40 40 ExplicitPosition, // [ <integer> || <string> ] 41 SpanPosition 41 SpanPosition, // span && [ <integer> || <string> ] 42 NamedGridAreaPosition // <ident> 42 43 }; 43 44 … … 55 56 bool isAuto() const { return m_type == AutoPosition; } 56 57 bool isSpan() const { return m_type == SpanPosition; } 58 bool isNamedGridArea() const { return m_type == NamedGridAreaPosition; } 57 59 58 60 void setExplicitPosition(int position, const String& namedGridLine) … … 73 75 } 74 76 77 void setNamedGridArea(const String& namedGridArea) 78 { 79 m_type = NamedGridAreaPosition; 80 m_namedGridLine = namedGridArea; 81 } 82 75 83 int integerPosition() const 76 84 { … … 81 89 String namedGridLine() const 82 90 { 83 ASSERT(type() == ExplicitPosition || type() == SpanPosition );91 ASSERT(type() == ExplicitPosition || type() == SpanPosition || type() == NamedGridAreaPosition); 84 92 return m_namedGridLine; 85 93 }
Note: See TracChangeset
for help on using the changeset viewer.