| OLD | NEW |
| 1 <!DOCTYPE HTML> | 1 <!DOCTYPE HTML> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <link href="resources/grid.css" rel="stylesheet"> | 4 <link href="resources/grid.css" rel="stylesheet"> |
| 5 <style> | 5 <style> |
| 6 .grid { | 6 .grid { |
| 7 /* Give an explicit size to the grid so that percentage grid tracks have a c
onsistent resolution */ | 7 /* Give an explicit size to the grid so that percentage grid tracks have a c
onsistent resolution */ |
| 8 width: 800px; | 8 width: 800px; |
| 9 height: 600px; | 9 height: 600px; |
| 10 } | 10 } |
| 11 .gridItem { | 11 .gridItem { |
| 12 grid-column: 1; | 12 grid-column: 1; |
| 13 grid-row: 1; | 13 grid-row: 1; |
| 14 height: 22px; | 14 height: 22px; |
| 15 width: 77px; | 15 width: 77px; |
| 16 } | 16 } |
| 17 .gridWithFixed { | 17 .gridWithFixed { |
| 18 grid-template-columns: (first) 10px; | 18 grid-template-columns: [first] 10px; |
| 19 grid-template-rows: (first) 15px; | 19 grid-template-rows: [first] 15px; |
| 20 } | 20 } |
| 21 .gridWithPercent { | 21 .gridWithPercent { |
| 22 grid-template-columns: 53% (last); | 22 grid-template-columns: 53% [last]; |
| 23 grid-template-rows: 27% (last); | 23 grid-template-rows: 27% [last]; |
| 24 } | 24 } |
| 25 .gridWithAuto { | 25 .gridWithAuto { |
| 26 grid-template-columns: (first) auto; | 26 grid-template-columns: [first] auto; |
| 27 grid-template-rows: auto (last); | 27 grid-template-rows: auto [last]; |
| 28 } | 28 } |
| 29 .gridWithMinMax { | 29 .gridWithMinMax { |
| 30 grid-template-columns: (first) minmax(10%, 15px); | 30 grid-template-columns: [first] minmax(10%, 15px); |
| 31 grid-template-rows: minmax(20px, 50%) (last); | 31 grid-template-rows: minmax(20px, 50%) [last]; |
| 32 } | 32 } |
| 33 .gridWithFixedMultiple { | 33 .gridWithFixedMultiple { |
| 34 grid-template-columns: (first nav) 10px (last); | 34 grid-template-columns: [first nav] 10px [last]; |
| 35 grid-template-rows: (first nav) 15px (last); | 35 grid-template-rows: [first nav] 15px [last]; |
| 36 } | 36 } |
| 37 .gridWithPercentageSameStringMultipleTimes { | 37 .gridWithPercentageSameStringMultipleTimes { |
| 38 grid-template-columns: (first nav) 10% (nav) 15% (last); | 38 grid-template-columns: [first nav] 10% [nav] 15% [last]; |
| 39 grid-template-rows: (first nav2) 25% (nav2) 75% (last); | 39 grid-template-rows: [first nav2] 25% [nav2] 75% [last]; |
| 40 } | 40 } |
| 41 .gridWithRepeat { | 41 .gridWithRepeat { |
| 42 grid-template-columns: (first) 10px repeat(2, (nav nav2) 50%); | 42 grid-template-columns: [first] 10px repeat(2, [nav nav2] 50%); |
| 43 grid-template-rows: 100px repeat(2, (nav nav2) 25%) (last); | 43 grid-template-rows: 100px repeat(2, [nav nav2] 25%) [last]; |
| 44 } | 44 } |
| 45 .gridWithEmptyParentheses { | 45 .gridWithEmptyBrackets { |
| 46 grid-template-columns: () 10px; | 46 grid-template-columns: [] 10px; |
| 47 grid-template-rows: 20px ( ) 50px (); | 47 grid-template-rows: 20px [ ] 50px []; |
| 48 } | 48 } |
| 49 .gridWithoutParentheses { | 49 .gridWithoutBrackets { |
| 50 grid-template-columns: first nav 10px; | 50 grid-template-columns: first nav 10px; |
| 51 grid-template-rows: first 50% last; | 51 grid-template-rows: first 50% last; |
| 52 } | 52 } |
| 53 .gridWithInvalidNestedParentheses { | 53 .gridWithInvalidNestedBrackets { |
| 54 grid-template-columns: (first (nav)) 10px (last); | 54 grid-template-columns: [first [nav]] 10px [last]; |
| 55 grid-template-rows: (first) 50% (last (nav) nav2); | 55 grid-template-rows: [first] 50% [last [nav] nav2]; |
| 56 } | 56 } |
| 57 .gridWithUnbalancedParentheses { | 57 .gridWithUnbalancedBrackets { |
| 58 grid-template-columns: (first nav 10px; | 58 grid-template-columns: [first nav 10px; |
| 59 grid-template-rows: (first) 50% last); | 59 grid-template-rows: [first] 50% last]; |
| 60 } | 60 } |
| 61 .gridWithMisplacedParentheses { | 61 .gridWithMisplacedBrackets { |
| 62 grid-template-columns: (first 10px) 50%; | 62 grid-template-columns: [first 10px] 50%; |
| 63 grid-template-rows: (first) (nav 50%); | 63 grid-template-rows: [first] [nav 50%]; |
| 64 } | 64 } |
| 65 .gridWithContiguousParentheses { | 65 .gridWithContiguousBrackets { |
| 66 grid-template-columns: (first) (nav) 10px; | 66 grid-template-columns: [first] [nav] 10px; |
| 67 grid-template-rows: 50px (nav nav2) (middle) 10px; | 67 grid-template-rows: 50px [nav nav2] [middle] 10px; |
| 68 } |
| 69 .gridWithInvalidCustomIdents { |
| 70 grid-template-columns: [first span] 10px; |
| 71 grid-template-rows: 50px [inherit] 10px; |
| 68 } | 72 } |
| 69 </style> | 73 </style> |
| 70 <script src="../../resources/js-test.js"></script> | 74 <script src="../../resources/js-test.js"></script> |
| 71 </head> | 75 </head> |
| 72 <body> | 76 <body> |
| 73 <div class="grid gridWithFixed" id="gridWithFixedElement"></div> | 77 <div class="grid gridWithFixed" id="gridWithFixedElement"></div> |
| 74 <div class="grid gridWithPercent" id="gridWithPercentElement"></div> | 78 <div class="grid gridWithPercent" id="gridWithPercentElement"></div> |
| 75 <div class="indefiniteSizeGrid gridWithPercent" id="gridWithPercentWithoutSize">
</div> | 79 <div class="indefiniteSizeGrid gridWithPercent" id="gridWithPercentWithoutSize">
</div> |
| 76 <div class="indefiniteSizeGrid gridWithPercent" id="gridWithPercentWithoutSizeWi
thChildren"> | 80 <div class="indefiniteSizeGrid gridWithPercent" id="gridWithPercentWithoutSizeWi
thChildren"> |
| 77 <div class="gridItem"></div> | 81 <div class="gridItem"></div> |
| 78 </div> | 82 </div> |
| 79 <div class="grid gridWithAuto" id="gridWithAutoElement"></div> | 83 <div class="grid gridWithAuto" id="gridWithAutoElement"></div> |
| 80 <div class="grid gridWithAuto" id="gridWithAutoWithChildrenElement"> | 84 <div class="grid gridWithAuto" id="gridWithAutoWithChildrenElement"> |
| 81 <div class="gridItem"></div> | 85 <div class="gridItem"></div> |
| 82 </div> | 86 </div> |
| 83 <div class="grid gridWithMinMax" id="gridWithMinMax"></div> | 87 <div class="grid gridWithMinMax" id="gridWithMinMax"></div> |
| 84 <div class="grid gridWithFixedMultiple" id="gridWithFixedMultiple"></div> | 88 <div class="grid gridWithFixedMultiple" id="gridWithFixedMultiple"></div> |
| 85 <div class="grid gridWithPercentageSameStringMultipleTimes" id="gridWithPercenta
geSameStringMultipleTimes"></div> | 89 <div class="grid gridWithPercentageSameStringMultipleTimes" id="gridWithPercenta
geSameStringMultipleTimes"></div> |
| 86 <div class="grid gridWithRepeat" id="gridWithRepeatElement"></div> | 90 <div class="grid gridWithRepeat" id="gridWithRepeatElement"></div> |
| 87 <div class="grid gridWithEmptyParentheses" id="gridWithEmptyParentheses"></div> | 91 <div class="grid gridWithEmptyBrackets" id="gridWithEmptyBrackets"></div> |
| 88 <div class="grid gridWithoutParentheses" id="gridWithoutParentheses"></div> | 92 <div class="grid gridWithoutBrackets" id="gridWithoutBrackets"></div> |
| 89 <div class="grid gridWithInvalidNestedParentheses" id="gridWithInvalidNestedPare
ntheses"></div> | 93 <div class="grid gridWithInvalidNestedBrackets" id="gridWithInvalidNestedBracket
s"></div> |
| 90 <div class="grid gridWithUnbalancedParentheses" id="gridWithUnbalancedParenthese
s"></div> | 94 <div class="grid gridWithUnbalancedBrackets" id="gridWithUnbalancedBrackets"></d
iv> |
| 91 <div class="grid gridWithMisplacedParentheses" id="gridWithMisplacedParentheses"
></div> | 95 <div class="grid gridWithMisplacedBrackets" id="gridWithMisplacedBrackets"></div
> |
| 92 <div class="grid gridWithContiguousParentheses" id="gridWithContiguousParenthese
s"></div> | 96 <div class="grid gridWithContiguousBrackets" id="gridWithContiguousBrackets"></d
iv> |
| 97 <div class="grid gridWithInvalidCustomIdents" id="gridWithInvalidCustomIdents"><
/div> |
| 93 | 98 |
| 94 <script src="resources/grid-definitions-parsing-utils.js"></script> | 99 <script src="resources/grid-definitions-parsing-utils.js"></script> |
| 95 <script> | 100 <script> |
| 96 description('Test that setting and getting grid-template-columns and grid-te
mplate-rows works as expected'); | 101 description('Test that setting and getting grid-template-columns and grid-te
mplate-rows works as expected'); |
| 97 | 102 |
| 98 debug("Test getting grid-template-columns and grid-template-rows set through
CSS"); | 103 debug("Test getting grid-template-columns and grid-template-rows set through
CSS"); |
| 99 testGridDefinitionsValues(document.getElementById("gridWithFixedElement"), "
(first) 10px", "(first) 15px"); | 104 testGridDefinitionsValues(document.getElementById("gridWithFixedElement"), "
[first] 10px", "[first] 15px"); |
| 100 testGridDefinitionsValues(document.getElementById("gridWithPercentElement"),
"424px (last)", "162px (last)"); | 105 testGridDefinitionsValues(document.getElementById("gridWithPercentElement"),
"424px [last]", "162px [last]"); |
| 101 testGridDefinitionsValues(document.getElementById("gridWithPercentWithoutSiz
e"), "0px (last)", "0px (last)"); | 106 testGridDefinitionsValues(document.getElementById("gridWithPercentWithoutSiz
e"), "0px [last]", "0px [last]"); |
| 102 testGridDefinitionsValues(document.getElementById("gridWithPercentWithoutSiz
eWithChildren"), "77px (last)", "22px (last)"); | 107 testGridDefinitionsValues(document.getElementById("gridWithPercentWithoutSiz
eWithChildren"), "77px [last]", "22px [last]"); |
| 103 testGridDefinitionsValues(document.getElementById("gridWithAutoElement"), "(
first) 0px", "0px (last)"); | 108 testGridDefinitionsValues(document.getElementById("gridWithAutoElement"), "[
first] 0px", "0px [last]"); |
| 104 testGridDefinitionsValues(document.getElementById("gridWithAutoWithChildrenE
lement"), "(first) 77px", "22px (last)"); | 109 testGridDefinitionsValues(document.getElementById("gridWithAutoWithChildrenE
lement"), "[first] 77px", "22px [last]"); |
| 105 testGridDefinitionsValues(document.getElementById("gridWithMinMax"), "(first
) 80px", "300px (last)"); | 110 testGridDefinitionsValues(document.getElementById("gridWithMinMax"), "[first
] 80px", "300px [last]"); |
| 106 testGridDefinitionsValues(document.getElementById("gridWithFixedMultiple"),
"(first nav) 10px (last)", "(first nav) 15px (last)"); | 111 testGridDefinitionsValues(document.getElementById("gridWithFixedMultiple"),
"[first nav] 10px [last]", "[first nav] 15px [last]"); |
| 107 testGridDefinitionsValues(document.getElementById("gridWithPercentageSameStr
ingMultipleTimes"), "(first nav) 80px (nav) 120px (last)", "(first nav2) 150px (
nav2) 450px (last)"); | 112 testGridDefinitionsValues(document.getElementById("gridWithPercentageSameStr
ingMultipleTimes"), "[first nav] 80px [nav] 120px [last]", "[first nav2] 150px [
nav2] 450px [last]"); |
| 108 testGridDefinitionsValues(document.getElementById("gridWithRepeatElement"),
"(first) 10px (nav nav2) 400px (nav nav2) 400px", "100px (nav nav2) 150px (nav n
av2) 150px (last)"); | 113 testGridDefinitionsValues(document.getElementById("gridWithRepeatElement"),
"[first] 10px [nav nav2] 400px [nav nav2] 400px", "100px [nav nav2] 150px [nav n
av2] 150px [last]"); |
| 109 testGridDefinitionsValues(document.getElementById("gridWithEmptyParentheses"
), "10px", "20px 50px"); | 114 testGridDefinitionsValues(document.getElementById("gridWithEmptyBrackets"),
"10px", "20px 50px"); |
| 110 | 115 |
| 111 debug(""); | 116 debug(""); |
| 112 debug("Test getting and setting grid-template-columns and grid-template-rows
through JS"); | 117 debug("Test getting and setting grid-template-columns and grid-template-rows
through JS"); |
| 113 testGridDefinitionsSetJSValues("(first) 18px", "66px (last)", "(first) 18px"
, "66px (last)", "(first) 18px", "66px (last)"); | 118 testGridDefinitionsSetJSValues("[first] 18px", "66px [last]", "[first] 18px"
, "66px [last]", "[first] 18px", "66px [last]"); |
| 114 testGridDefinitionsSetJSValues("(first) 55%", "40% (last)", "(first) 440px",
"240px (last)", "(first) 55%", "40% (last)"); | 119 testGridDefinitionsSetJSValues("[first] 55%", "40% [last]", "[first] 440px",
"240px [last]", "[first] 55%", "40% [last]"); |
| 115 testGridDefinitionsSetJSValues("(first) auto", "auto (last)", "(first) 0px",
"0px (last)", "(first) auto", "auto (last)"); | 120 testGridDefinitionsSetJSValues("[first] auto", "auto [last]", "[first] 0px",
"0px [last]", "[first] auto", "auto [last]"); |
| 116 testGridDefinitionsSetJSValues("(first) min-content", "min-content (last)",
"(first) 0px", "0px (last)", "(first) min-content", "min-content (last)"); | 121 testGridDefinitionsSetJSValues("[first] min-content", "min-content [last]",
"[first] 0px", "0px [last]", "[first] min-content", "min-content [last]"); |
| 117 testGridDefinitionsSetJSValues("(first) max-content", "max-content (last)",
"(first) 0px", "0px (last)", "(first) max-content", "max-content (last)"); | 122 testGridDefinitionsSetJSValues("[first] max-content", "max-content [last]",
"[first] 0px", "0px [last]", "[first] max-content", "max-content [last]"); |
| 118 testGridDefinitionsSetJSValues("(first) minmax(55%, 45px)", "minmax(30px, 40
%) (last)", "(first) 440px", "240px (last)", "(first) minmax(55%, 45px)", "minma
x(30px, 40%) (last)"); | 123 testGridDefinitionsSetJSValues("[first] minmax(55%, 45px)", "minmax(30px, 40
%) [last]", "[first] 440px", "240px [last]", "[first] minmax(55%, 45px)", "minma
x(30px, 40%) [last]"); |
| 119 testGridDefinitionsSetJSValues("(first) minmax(22em, max-content)", "minmax(
max-content, 5em) (last)", "(first) 220px", "50px (last)", "(first) minmax(22em,
max-content)", "minmax(max-content, 5em) (last)"); | 124 testGridDefinitionsSetJSValues("[first] minmax(22em, max-content)", "minmax(
max-content, 5em) [last]", "[first] 220px", "50px [last]", "[first] minmax(22em,
max-content)", "minmax(max-content, 5em) [last]"); |
| 120 testGridDefinitionsSetJSValues("(first) minmax(22em, min-content)", "minmax(
min-content, 5em) (last)", "(first) 220px", "50px (last)", "(first) minmax(22em,
min-content)", "minmax(min-content, 5em) (last)"); | 125 testGridDefinitionsSetJSValues("[first] minmax(22em, min-content)", "minmax(
min-content, 5em) [last]", "[first] 220px", "50px [last]", "[first] minmax(22em,
min-content)", "minmax(min-content, 5em) [last]"); |
| 121 testGridDefinitionsSetJSValues("(first) minmax(min-content, max-content)", "
minmax(max-content, min-content) (last)", "(first) 0px", "0px (last)", "(first)
minmax(min-content, max-content)", "minmax(max-content, min-content) (last)"); | 126 testGridDefinitionsSetJSValues("[first] minmax(min-content, max-content)", "
minmax(max-content, min-content) [last]", "[first] 0px", "0px [last]", "[first]
minmax(min-content, max-content)", "minmax(max-content, min-content) [last]"); |
| 122 testGridDefinitionsSetJSValues("(first nav) minmax(min-content, max-content)
(last)", "(first nav) minmax(max-content, min-content) (last)", "(first nav) 0p
x (last)", "(first nav) 0px (last)", "(first nav) minmax(min-content, max-conten
t) (last)", "(first nav) minmax(max-content, min-content) (last)"); | 127 testGridDefinitionsSetJSValues("[first nav] minmax(min-content, max-content)
[last]", "[first nav] minmax(max-content, min-content) [last]", "[first nav] 0p
x [last]", "[first nav] 0px [last]", "[first nav] minmax(min-content, max-conten
t) [last]", "[first nav] minmax(max-content, min-content) [last]"); |
| 123 testGridDefinitionsSetJSValues("(first nav) minmax(min-content, max-content)
(nav) auto (last)", "(first nav2) minmax(max-content, min-content) (nav2) minma
x(10px, 15px) (last)", "(first nav) 0px (nav) 0px (last)", "(first nav2) 0px (na
v2) 15px (last)", "(first nav) minmax(min-content, max-content) (nav) auto (last
)", "(first nav2) minmax(max-content, min-content) (nav2) minmax(10px, 15px) (la
st)"); | 128 testGridDefinitionsSetJSValues("[first nav] minmax(min-content, max-content)
[nav] auto [last]", "[first nav2] minmax(max-content, min-content) [nav2] minma
x(10px, 15px) [last]", "[first nav] 0px [nav] 0px [last]", "[first nav2] 0px [na
v2] 15px [last]", "[first nav] minmax(min-content, max-content) [nav] auto [last
]", "[first nav2] minmax(max-content, min-content) [nav2] minmax(10px, 15px) [la
st]"); |
| 124 testGridDefinitionsSetJSValues("(foo bar) auto (foo) auto (bar)", "(foo bar)
auto (foo) auto (bar)", "(foo bar) 0px (foo) 0px (bar)", "(foo bar) 0px (foo) 0
px (bar)", "(foo bar) auto (foo) auto (bar)", "(foo bar) auto (foo) auto (bar)")
; | 129 testGridDefinitionsSetJSValues("[foo bar] auto [foo] auto [bar]", "[foo bar]
auto [foo] auto [bar]", "[foo bar] 0px [foo] 0px [bar]", "[foo bar] 0px [foo] 0
px [bar]", "[foo bar] auto [foo] auto [bar]", "[foo bar] auto [foo] auto [bar]")
; |
| 125 testGridDefinitionsSetJSValues("(first) auto repeat(2, (foo bar) 20px)", "22
0px (foo) repeat(1, 50% (baz)", "(first) 0px (foo bar) 20px (foo bar) 20px", "22
0px (foo) 300px (baz)", "(first) auto (foo bar) 20px (foo bar) 20px", "220px (fo
o) 50% (baz)"); | 130 testGridDefinitionsSetJSValues("[first] auto repeat(2, [foo bar] 20px)", "22
0px [foo] repeat(1, 50% [baz]", "[first] 0px [foo bar] 20px [foo bar] 20px", "22
0px [foo] 300px [baz]", "[first] auto [foo bar] 20px [foo bar] 20px", "220px [fo
o] 50% [baz]"); |
| 126 | 131 |
| 127 debug(""); | 132 debug(""); |
| 128 debug("Test getting invalid grid-template-columns and grid-template-rows set
through CSS"); | 133 debug("Test getting invalid grid-template-columns and grid-template-rows set
through CSS"); |
| 129 testGridDefinitionsValues(document.getElementById("gridWithoutParentheses"),
"none", "none"); | 134 testGridDefinitionsValues(document.getElementById("gridWithoutBrackets"), "n
one", "none"); |
| 130 testGridDefinitionsValues(document.getElementById("gridWithInvalidNestedPare
ntheses"), "none", "none"); | 135 testGridDefinitionsValues(document.getElementById("gridWithInvalidNestedBrac
kets"), "none", "none"); |
| 131 testGridDefinitionsValues(document.getElementById("gridWithUnbalancedParenth
eses"), "none", "none"); | 136 testGridDefinitionsValues(document.getElementById("gridWithUnbalancedBracket
s"), "none", "none"); |
| 132 testGridDefinitionsValues(document.getElementById("gridWithMisplacedParenthe
ses"), "none", "none"); | 137 testGridDefinitionsValues(document.getElementById("gridWithMisplacedBrackets
"), "none", "none"); |
| 133 testGridDefinitionsValues(document.getElementById("gridWithContiguousParenth
eses"), "none", "none"); | 138 testGridDefinitionsValues(document.getElementById("gridWithContiguousBracket
s"), "none", "none"); |
| 139 testGridDefinitionsValues(document.getElementById("gridWithInvalidCustomIden
ts"), "none", "none"); |
| 134 | 140 |
| 135 debug(""); | 141 debug(""); |
| 136 debug("Test getting and setting invalid grid-template-columns and grid-templ
ate-rows through JS"); | 142 debug("Test getting and setting invalid grid-template-columns and grid-templ
ate-rows through JS"); |
| 137 testGridDefinitionsSetBadJSValues("(foo)", "(bar"); | 143 testGridDefinitionsSetBadJSValues("[foo]", "[bar"); |
| 138 testGridDefinitionsSetBadJSValues("(foo bar)", "(bar foo)"); | 144 testGridDefinitionsSetBadJSValues("[foo bar]", "[bar foo]"); |
| 139 testGridDefinitionsSetBadJSValues("foo bar 10px", "50% baz bar foo 2em"); | 145 testGridDefinitionsSetBadJSValues("foo bar 10px", "50% baz bar foo 2em"); |
| 140 testGridDefinitionsSetBadJSValues("(foo (bar)) 10px", "50% ((baz bar) foo) 2
em"); | 146 testGridDefinitionsSetBadJSValues("[foo [bar]] 10px", "50% [[baz bar] foo] 2
em"); |
| 141 testGridDefinitionsSetBadJSValues("(foo bar 10px", "50% (baz bar) foo) 2em")
; | 147 testGridDefinitionsSetBadJSValues("[foo bar 10px", "50% [baz bar] foo] 2em")
; |
| 142 testGridDefinitionsSetBadJSValues("(foo 10px) 2em", "(50% bar) (foo)"); | 148 testGridDefinitionsSetBadJSValues("[foo 10px] 2em", "[50% bar] [foo]"); |
| 149 testGridDefinitionsSetBadJSValues("[auto] 2em", "50% [bar initial]"); |
| 143 </script> | 150 </script> |
| 144 </body> | 151 </body> |
| 145 </html> | 152 </html> |
| OLD | NEW |