OLD | NEW |
1 <!DOCTYPE HTML> | 1 <!DOCTYPE HTML> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script> | 4 <script> |
5 if (window.testRunner) | 5 if (window.testRunner) |
6 testRunner.overridePreference("WebKitCSSGridLayoutEnabled", 1); | 6 testRunner.overridePreference("WebKitCSSGridLayoutEnabled", 1); |
7 </script> | 7 </script> |
8 <link href="resources/grid.css" rel="stylesheet"> | 8 <link href="resources/grid.css" rel="stylesheet"> |
9 <style> | 9 <style> |
10 .gridWithFixed { | 10 .gridWithFixed { |
11 grid-definition-columns: "first" 10px; | 11 grid-definition-columns: (first) 10px; |
12 grid-definition-rows: "first" 15px; | 12 grid-definition-rows: (first) 15px; |
13 } | 13 } |
14 .gridWithPercent { | 14 .gridWithPercent { |
15 grid-definition-columns: 53% "last"; | 15 grid-definition-columns: 53% (last); |
16 grid-definition-rows: 27% "last"; | 16 grid-definition-rows: 27% (last); |
17 } | 17 } |
18 .gridWithAuto { | 18 .gridWithAuto { |
19 grid-definition-columns: "first" auto; | 19 grid-definition-columns: (first) auto; |
20 grid-definition-rows: auto "last"; | 20 grid-definition-rows: auto (last); |
21 } | 21 } |
22 .gridWithMinMax { | 22 .gridWithMinMax { |
23 grid-definition-columns: "first" minmax(10%, 15px); | 23 grid-definition-columns: (first) minmax(10%, 15px); |
24 grid-definition-rows: minmax(20px, 50%) "last"; | 24 grid-definition-rows: minmax(20px, 50%) (last); |
25 } | 25 } |
26 .gridWithFixedMultiple { | 26 .gridWithFixedMultiple { |
27 grid-definition-columns: "first" "nav" 10px "last"; | 27 grid-definition-columns: (first nav) 10px (last); |
28 grid-definition-rows: "first" "nav" 15px "last"; | 28 grid-definition-rows: (first nav) 15px (last); |
29 } | 29 } |
30 .gridWithPercentageSameStringMultipleTimes { | 30 .gridWithPercentageSameStringMultipleTimes { |
31 grid-definition-columns: "first" "nav" 10% "nav" 15% "last"; | 31 grid-definition-columns: (first nav) 10% (nav) 15% (last); |
32 grid-definition-rows: "first" "nav2" 25% "nav2" 75% "last"; | 32 grid-definition-rows: (first nav2) 25% (nav2) 75% (last); |
| 33 } |
| 34 .gridWithRepeat { |
| 35 grid-definition-columns: (first) 10px repeat(2, (nav nav2) 50%); |
| 36 grid-definition-rows: 100px repeat(2, (nav nav2) 25%) (last); |
| 37 } |
| 38 .gridWithoutParentheses { |
| 39 grid-definition-columns: first nav 10px; |
| 40 grid-definition-rows: first 50% last; |
| 41 } |
| 42 .gridWithInvalidNestedParentheses { |
| 43 grid-definition-columns: (first (nav)) 10px (last); |
| 44 grid-definition-rows: (first) 50% (last (nav) nav2); |
| 45 } |
| 46 .gridWithUnbalancedParentheses { |
| 47 grid-definition-columns: (first nav 10px; |
| 48 grid-definition-rows: (first) 50% last); |
| 49 } |
| 50 .gridWithMisplacedParentheses { |
| 51 grid-definition-columns: (first 10px) 50%; |
| 52 grid-definition-rows: (first) (nav 50%); |
33 } | 53 } |
34 </style> | 54 </style> |
35 <script src="../js/resources/js-test-pre.js"></script> | 55 <script src="../js/resources/js-test-pre.js"></script> |
36 </head> | 56 </head> |
37 <body> | 57 <body> |
38 <div class="grid gridWithFixed" id="gridWithFixedElement"></div> | 58 <div class="grid gridWithFixed" id="gridWithFixedElement"></div> |
39 <div class="grid gridWithPercent" id="gridWithPercentElement"></div> | 59 <div class="grid gridWithPercent" id="gridWithPercentElement"></div> |
40 <div class="grid gridWithAuto" id="gridWithAutoElement"></div> | 60 <div class="grid gridWithAuto" id="gridWithAutoElement"></div> |
41 <div class="grid gridWithMinMax" id="gridWithMinMax"></div> | 61 <div class="grid gridWithMinMax" id="gridWithMinMax"></div> |
42 <div class="grid gridWithFixedMultiple" id="gridWithFixedMultiple"></div> | 62 <div class="grid gridWithFixedMultiple" id="gridWithFixedMultiple"></div> |
43 <div class="grid gridWithPercentageSameStringMultipleTimes" id="gridWithPercenta
geSameStringMultipleTimes"></div> | 63 <div class="grid gridWithPercentageSameStringMultipleTimes" id="gridWithPercenta
geSameStringMultipleTimes"></div> |
| 64 <div class="grid gridWithRepeat" id="gridWithRepeatElement"></div> |
| 65 <div class="grid gridWithoutParentheses" id="gridWithoutParenthesesElement"></di
v> |
| 66 <div class="grid gridWithInvalidNestedParentheses" id="gridWithInvalidNestedPare
nthesesElement"></div> |
| 67 <div class="grid gridWithUnbalancedParentheses" id="gridWithUnbalancedParenthese
sElement"></div> |
| 68 <div class="grid gridWithMisplacedParentheses" id="gridWithMisplacedParenthesesE
lement"></div> |
44 <script> | 69 <script> |
45 description('Test that setting and getting grid-definition-columns and grid-
definition-rows works as expected'); | 70 description('Test that setting and getting grid-definition-columns and grid-
definition-rows works as expected'); |
46 | 71 |
47 function testValue(gridElement, namedGridDefinitionColumns, namedGridDefinit
ionRows) | 72 function testValue(gridElement, namedGridDefinitionColumns, namedGridDefinit
ionRows) |
48 { | 73 { |
49 this.gridElement = gridElement; | 74 this.gridElement = gridElement; |
50 shouldBeEqualToString("getComputedStyle(gridElement, '').getPropertyValu
e('grid-definition-columns')", namedGridDefinitionColumns); | 75 shouldBeEqualToString("getComputedStyle(gridElement, '').getPropertyValu
e('grid-definition-columns')", namedGridDefinitionColumns); |
51 shouldBeEqualToString("getComputedStyle(gridElement, '').getPropertyValu
e('grid-definition-rows')", namedGridDefinitionRows); | 76 shouldBeEqualToString("getComputedStyle(gridElement, '').getPropertyValu
e('grid-definition-rows')", namedGridDefinitionRows); |
52 } | 77 } |
53 | 78 |
54 function testCSSValue(gridElementId, namedGridDefinitionColumns, namedGridDe
finitionRows) | 79 function testCSSValue(gridElementId, namedGridDefinitionColumns, namedGridDe
finitionRows) |
55 { | 80 { |
56 testValue(document.getElementById(gridElementId), namedGridDefinitionCol
umns, namedGridDefinitionRows); | 81 testValue(document.getElementById(gridElementId), namedGridDefinitionCol
umns, namedGridDefinitionRows); |
57 } | 82 } |
58 | 83 |
59 debug("Test getting grid-definition-columns and grid-definition-rows set thr
ough CSS"); | 84 debug("Test getting grid-definition-columns and grid-definition-rows set thr
ough CSS"); |
60 testCSSValue("gridWithFixedElement", "first 10px", "first 15px"); | 85 testCSSValue("gridWithFixedElement", "first 10px", "first 15px"); |
61 testCSSValue("gridWithPercentElement", "53% last", "27% last"); | 86 testCSSValue("gridWithPercentElement", "53% last", "27% last"); |
62 testCSSValue("gridWithAutoElement", "first auto", "auto last"); | 87 testCSSValue("gridWithAutoElement", "first auto", "auto last"); |
63 testCSSValue("gridWithMinMax", "first minmax(10%, 15px)", "minmax(20px, 50%)
last"); | 88 testCSSValue("gridWithMinMax", "first minmax(10%, 15px)", "minmax(20px, 50%)
last"); |
64 testCSSValue("gridWithFixedMultiple", "first nav 10px last", "first nav 15px
last"); | 89 testCSSValue("gridWithFixedMultiple", "first nav 10px last", "first nav 15px
last"); |
65 testCSSValue("gridWithPercentageSameStringMultipleTimes", "first nav 10% nav
15% last", "first nav2 25% nav2 75% last"); | 90 testCSSValue("gridWithPercentageSameStringMultipleTimes", "first nav 10% nav
15% last", "first nav2 25% nav2 75% last"); |
| 91 testCSSValue("gridWithRepeatElement", "first 10px nav nav2 50% nav nav2 50%"
, "100px nav nav2 25% nav nav2 25% last"); |
| 92 |
| 93 debug(""); |
| 94 debug("Test getting invalid grid-definition-columns and grid-definition-rows
set through CSS"); |
| 95 testCSSValue("gridWithoutParenthesesElement", "none", "none"); |
| 96 testCSSValue("gridWithInvalidNestedParenthesesElement", "none", "none"); |
| 97 testCSSValue("gridWithUnbalancedParenthesesElement", "none", "none"); |
| 98 testCSSValue("gridWithMisplacedParenthesesElement", "none", "none"); |
66 | 99 |
67 debug(""); | 100 debug(""); |
68 debug("Test getting and setting grid-definition-columns and grid-definition-
rows through JS"); | 101 debug("Test getting and setting grid-definition-columns and grid-definition-
rows through JS"); |
69 var element = document.createElement("div"); | 102 var element = document.createElement("div"); |
70 document.body.appendChild(element); | 103 document.body.appendChild(element); |
71 element.style.gridDefinitionColumns = "'first' 18px"; | 104 element.style.gridDefinitionColumns = "(first) 18px"; |
72 element.style.gridDefinitionRows = "66px 'last'"; | 105 element.style.gridDefinitionRows = "66px (last)"; |
73 testValue(element, "first 18px", "66px last"); | 106 testValue(element, "first 18px", "66px last"); |
74 | 107 |
75 element = document.createElement("div"); | 108 element = document.createElement("div"); |
76 document.body.appendChild(element); | 109 document.body.appendChild(element); |
77 element.style.gridDefinitionColumns = "'first' 55%"; | 110 element.style.gridDefinitionColumns = "(first) 55%"; |
78 element.style.gridDefinitionRows = "40% 'last'"; | 111 element.style.gridDefinitionRows = "40% (last)"; |
79 testValue(element, "first 55%", "40% last"); | 112 testValue(element, "first 55%", "40% last"); |
80 | 113 |
81 element = document.createElement("div"); | 114 element = document.createElement("div"); |
82 document.body.appendChild(element); | 115 document.body.appendChild(element); |
83 element.style.gridDefinitionColumns = "'first' auto"; | 116 element.style.gridDefinitionColumns = "(first) auto"; |
84 element.style.gridDefinitionRows = "auto 'last'"; | 117 element.style.gridDefinitionRows = "auto (last)"; |
85 testValue(element, "first auto", "auto last"); | 118 testValue(element, "first auto", "auto last"); |
86 | 119 |
87 element = document.createElement("div"); | 120 element = document.createElement("div"); |
88 document.body.appendChild(element); | 121 document.body.appendChild(element); |
89 element.style.gridDefinitionColumns = "'first' min-content"; | 122 element.style.gridDefinitionColumns = "(first) min-content"; |
90 element.style.gridDefinitionRows = "min-content 'last'"; | 123 element.style.gridDefinitionRows = "min-content (last)"; |
91 testValue(element, "first min-content", "min-content last"); | 124 testValue(element, "first min-content", "min-content last"); |
92 | 125 |
93 element = document.createElement("div"); | 126 element = document.createElement("div"); |
94 document.body.appendChild(element); | 127 document.body.appendChild(element); |
95 element.style.gridDefinitionColumns = "'first' max-content"; | 128 element.style.gridDefinitionColumns = "(first) max-content"; |
96 element.style.gridDefinitionRows = "max-content 'last'"; | 129 element.style.gridDefinitionRows = "max-content (last)"; |
97 testValue(element, "first max-content", "max-content last"); | 130 testValue(element, "first max-content", "max-content last"); |
98 | 131 |
99 element = document.createElement("div"); | 132 element = document.createElement("div"); |
100 document.body.appendChild(element); | 133 document.body.appendChild(element); |
101 element.style.gridDefinitionColumns = "'first' minmax(55%, 45px)"; | 134 element.style.gridDefinitionColumns = "(first) minmax(55%, 45px)"; |
102 element.style.gridDefinitionRows = "minmax(30px, 40%) 'last'"; | 135 element.style.gridDefinitionRows = "minmax(30px, 40%) (last)"; |
103 testValue(element, "first minmax(55%, 45px)", "minmax(30px, 40%) last"); | 136 testValue(element, "first minmax(55%, 45px)", "minmax(30px, 40%) last"); |
104 | 137 |
105 element = document.createElement("div"); | 138 element = document.createElement("div"); |
106 document.body.appendChild(element); | 139 document.body.appendChild(element); |
107 element.style.font = "10px Ahem"; | 140 element.style.font = "10px Ahem"; |
108 element.style.gridDefinitionColumns = "'first' minmax(22em, max-content)"; | 141 element.style.gridDefinitionColumns = "(first) minmax(22em, max-content)"; |
109 element.style.gridDefinitionRows = "minmax(max-content, 5em) 'last'"; | 142 element.style.gridDefinitionRows = "minmax(max-content, 5em) (last)"; |
110 testValue(element, "first minmax(220px, max-content)", "minmax(max-content,
50px) last"); | 143 testValue(element, "first minmax(220px, max-content)", "minmax(max-content,
50px) last"); |
111 | 144 |
112 element = document.createElement("div"); | 145 element = document.createElement("div"); |
113 document.body.appendChild(element); | 146 document.body.appendChild(element); |
114 element.style.font = "10px Ahem"; | 147 element.style.font = "10px Ahem"; |
115 element.style.gridDefinitionColumns = "'first' minmax(22em, max-content)"; | 148 element.style.gridDefinitionColumns = "(first) minmax(22em, max-content)"; |
116 element.style.gridDefinitionRows = "minmax(max-content, 5em) 'last'"; | 149 element.style.gridDefinitionRows = "minmax(max-content, 5em) (last)"; |
117 testValue(element, "first minmax(220px, max-content)", "minmax(max-content,
50px) last"); | 150 testValue(element, "first minmax(220px, max-content)", "minmax(max-content,
50px) last"); |
118 | 151 |
119 element = document.createElement("div"); | 152 element = document.createElement("div"); |
120 document.body.appendChild(element); | 153 document.body.appendChild(element); |
121 element.style.gridDefinitionColumns = "'first' minmax(min-content, max-conte
nt)"; | 154 element.style.gridDefinitionColumns = "(first) minmax(min-content, max-conte
nt)"; |
122 element.style.gridDefinitionRows = "minmax(max-content, min-content) 'last'"
; | 155 element.style.gridDefinitionRows = "minmax(max-content, min-content) (last)"
; |
123 testValue(element, "first minmax(min-content, max-content)", "minmax(max-con
tent, min-content) last"); | 156 testValue(element, "first minmax(min-content, max-content)", "minmax(max-con
tent, min-content) last"); |
124 | 157 |
125 element = document.createElement("div"); | 158 element = document.createElement("div"); |
126 document.body.appendChild(element); | 159 document.body.appendChild(element); |
127 element.style.gridDefinitionColumns = "'first' 'nav' minmax(min-content, max
-content) 'last'"; | 160 element.style.gridDefinitionColumns = "(first nav) minmax(min-content, max-c
ontent) (last)"; |
128 element.style.gridDefinitionRows = "'first' 'nav' minmax(max-content, min-co
ntent) 'last'"; | 161 element.style.gridDefinitionRows = "(first nav) minmax(max-content, min-cont
ent) (last)"; |
129 testValue(element, "first nav minmax(min-content, max-content) last", "first
nav minmax(max-content, min-content) last"); | 162 testValue(element, "first nav minmax(min-content, max-content) last", "first
nav minmax(max-content, min-content) last"); |
130 | 163 |
131 element = document.createElement("div"); | 164 element = document.createElement("div"); |
132 document.body.appendChild(element); | 165 document.body.appendChild(element); |
133 element.style.gridDefinitionColumns = "'first' 'nav' minmax(min-content, max
-content) 'nav' auto 'last'"; | 166 element.style.gridDefinitionColumns = "(first nav) minmax(min-content, max-c
ontent) (nav) auto (last)"; |
134 element.style.gridDefinitionRows = "'first' 'nav2' minmax(max-content, min-c
ontent) 'nav2' minmax(10px, 15px) 'last'"; | 167 element.style.gridDefinitionRows = "(first nav2) minmax(max-content, min-con
tent) (nav2) minmax(10px, 15px) (last)"; |
135 testValue(element, "first nav minmax(min-content, max-content) nav auto last
", "first nav2 minmax(max-content, min-content) nav2 minmax(10px, 15px) last"); | 168 testValue(element, "first nav minmax(min-content, max-content) nav auto last
", "first nav2 minmax(max-content, min-content) nav2 minmax(10px, 15px) last"); |
136 | 169 |
137 element = document.createElement("div"); | 170 element = document.createElement("div"); |
138 document.body.appendChild(element); | 171 document.body.appendChild(element); |
139 element.style.gridDefinitionColumns = "'foo' 'bar' auto 'foo' auto 'bar'"; | 172 element.style.gridDefinitionColumns = "(foo bar) auto (foo) auto (bar)"; |
140 element.style.gridDefinitionRows = "'foo' 'bar' auto 'foo' auto 'bar'"; | 173 element.style.gridDefinitionRows = "(foo bar) auto (foo) auto (bar)"; |
141 testValue(element, "foo bar auto foo auto bar", "foo bar auto foo auto bar")
; | 174 testValue(element, "foo bar auto foo auto bar", "foo bar auto foo auto bar")
; |
142 | 175 |
| 176 element = document.createElement("div"); |
| 177 document.body.appendChild(element); |
| 178 element.style.gridDefinitionColumns = "(first) auto repeat(2, (foo bar) 20px
)"; |
| 179 element.style.gridDefinitionRows = "220px (foo) repeat(1, 50% (baz)"; |
| 180 testValue(element, "first auto foo bar 20px foo bar 20px", "220px foo 50% ba
z"); |
| 181 |
143 debug(""); | 182 debug(""); |
144 debug("Test getting and setting invalid grid-definition-columns and grid-def
inition-rows through JS"); | 183 debug("Test getting and setting invalid grid-definition-columns and grid-def
inition-rows through JS"); |
145 element = document.createElement("div"); | 184 element = document.createElement("div"); |
146 document.body.appendChild(element); | 185 document.body.appendChild(element); |
147 element.style.gridDefinitionColumns = "'foo'"; | 186 element.style.gridDefinitionColumns = "(foo)"; |
148 element.style.gridDefinitionRows = "'bar"; | 187 element.style.gridDefinitionRows = "(bar"; |
149 testValue(element, "none", "none"); | 188 testValue(element, "none", "none"); |
150 | 189 |
151 element = document.createElement("div"); | 190 element = document.createElement("div"); |
152 document.body.appendChild(element); | 191 document.body.appendChild(element); |
153 element.style.gridDefinitionColumns = "'foo' 'bar'"; | 192 element.style.gridDefinitionColumns = "(foo bar)"; |
154 element.style.gridDefinitionRows = "'bar' 'foo'"; | 193 element.style.gridDefinitionRows = "(bar foo)"; |
| 194 testValue(element, "none", "none"); |
| 195 |
| 196 element = document.createElement("div"); |
| 197 document.body.appendChild(element); |
| 198 element.style.gridDefinitionColumns = "foo bar 10px"; |
| 199 element.style.gridDefinitionRows = "50% baz bar foo 2em"; |
| 200 testValue(element, "none", "none"); |
| 201 |
| 202 element = document.createElement("div"); |
| 203 document.body.appendChild(element); |
| 204 element.style.gridDefinitionColumns = "(foo (bar)) 10px"; |
| 205 element.style.gridDefinitionRows = "50% ((baz bar) foo) 2em"; |
| 206 testValue(element, "none", "none"); |
| 207 |
| 208 element = document.createElement("div"); |
| 209 document.body.appendChild(element); |
| 210 element.style.gridDefinitionColumns = "(foo bar 10px"; |
| 211 element.style.gridDefinitionRows = "50% (baz bar) foo) 2em"; |
| 212 testValue(element, "none", "none"); |
| 213 |
| 214 element = document.createElement("div"); |
| 215 document.body.appendChild(element); |
| 216 element.style.gridDefinitionColumns = "(foo 10px) 2em"; |
| 217 element.style.gridDefinitionRows = "(50% bar) (foo)"; |
155 testValue(element, "none", "none"); | 218 testValue(element, "none", "none"); |
156 </script> | 219 </script> |
157 <script src="../js/resources/js-test-post.js"></script> | 220 <script src="../js/resources/js-test-post.js"></script> |
158 </body> | 221 </body> |
159 </html> | 222 </html> |
OLD | NEW |