| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <link href="resources/grid.css" rel="stylesheet"> |
| <style> |
| .gridItem { |
| grid-column: 1; |
| grid-row: 1; |
| height: 22px; |
| width: 77px; |
| } |
| .gridWithFixed { |
| grid-template-columns: [first] 10px; |
| grid-template-rows: [first] 15px; |
| } |
| .gridWithPercent { |
| grid-template-columns: 53% [last]; |
| grid-template-rows: 27% [last]; |
| } |
| .gridWithAuto { |
| grid-template-columns: [first] auto; |
| grid-template-rows: auto [last]; |
| } |
| .gridWithMinMax { |
| grid-template-columns: [first] minmax(10%, 15px); |
| grid-template-rows: minmax(20px, 50%) [last]; |
| } |
| .gridWithFixedMultiple { |
| grid-template-columns: [first nav] 10px [last]; |
| grid-template-rows: [first nav] 15px [last]; |
| } |
| .gridWithPercentageSameStringMultipleTimes { |
| grid-template-columns: [first nav] 10% [nav] 15% [last]; |
| grid-template-rows: [first nav2] 25% [nav2] 75% [last]; |
| } |
| </style> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <div class="gridWithFixed" id="gridWithFixedElement"></div> |
| <div class="gridWithPercent" id="gridWithPercentElement"></div> |
| <div class="gridWithAuto" id="gridWithAutoElement"></div> |
| <div class="gridWithAuto" id="gridWithAutoWithChildrenElement"> |
| <div class="gridItem"></div> |
| </div> |
| <div class="gridWithMinMax" id="gridWithMinMax"></div> |
| <div class="gridWithFixedMultiple" id="gridWithFixedMultiple"></div> |
| <div class="gridWithPercentageSameStringMultipleTimes" id="gridWithPercentageSameStringMultipleTimes"></div> |
| |
| <script src="resources/grid-definitions-parsing-utils.js"></script> |
| <script> |
| description('Test that setting and getting grid-template-columns and grid-template-rows works as expected'); |
| |
| debug("Test getting grid-template-columns and grid-template-rows set through CSS"); |
| testGridTemplatesValues(document.getElementById("gridWithFixedElement"), "[first] 10px", "[first] 15px"); |
| testGridTemplatesValues(document.getElementById("gridWithPercentElement"), "53% [last]", "27% [last]"); |
| testGridTemplatesValues(document.getElementById("gridWithAutoElement"), "[first] auto", "auto [last]"); |
| testGridTemplatesValues(document.getElementById("gridWithMinMax"), "[first] minmax(10%, 15px)", "minmax(20px, 50%) [last]"); |
| testGridTemplatesValues(document.getElementById("gridWithFixedMultiple"), "[first nav] 10px [last]", "[first nav] 15px [last]"); |
| testGridTemplatesValues(document.getElementById("gridWithPercentageSameStringMultipleTimes"), "[first nav] 10% [nav] 15% [last]", "[first nav2] 25% [nav2] 75% [last]"); |
| |
| debug(""); |
| debug("Test getting and setting grid-template-columns and grid-template-rows through JS"); |
| testNonGridTemplatesSetJSValues("[first] 18px", "66px [last]", "[first] 18px", "66px [last]", "[first] 18px", "66px [last]"); |
| testNonGridTemplatesSetJSValues("[first] 55%", "40% [last]", "[first] 55%", "40% [last]", "[first] 55%", "40% [last]"); |
| testNonGridTemplatesSetJSValues("[first] auto", "auto [last]", "[first] auto", "auto [last]", "[first] auto", "auto [last]"); |
| testNonGridTemplatesSetJSValues("[first] min-content", "min-content [last]", "[first] min-content", "min-content [last]", "[first] min-content", "min-content [last]"); |
| testNonGridTemplatesSetJSValues("[first] max-content", "max-content [last]", "[first] max-content", "max-content [last]", "[first] max-content", "max-content [last]"); |
| testNonGridTemplatesSetJSValues("[first] minmax(55%, 45px)", "minmax(30px, 40%) [last]", "[first] minmax(55%, 45px)", "minmax(30px, 40%) [last]", "[first] minmax(55%, 45px)", "minmax(30px, 40%) [last]"); |
| testNonGridTemplatesSetJSValues("[first] minmax(22em, max-content)", "minmax(max-content, 5em) [last]", "[first] minmax(220px, max-content)", "minmax(max-content, 50px) [last]", "[first] minmax(22em, max-content)", "minmax(max-content, 5em) [last]", "[first] minmax(220px, max-content)", "minmax(max-content, 50px) [last]", "minmax(max-content, 50px) [last]"); |
| testNonGridTemplatesSetJSValues("[first] minmax(22em, min-content)", "minmax(min-content, 5em) [last]", "[first] minmax(220px, min-content)", "minmax(min-content, 50px) [last]", "[first] minmax(22em, min-content)", "minmax(min-content, 5em) [last]", "[first] minmax(220px, min-content)", "minmax(min-content, 50px) [last]", "minmax(min-content, 50px) [last]"); |
| testNonGridTemplatesSetJSValues("[first] minmax(min-content, max-content)", "minmax(max-content, min-content) [last]", "[first] minmax(min-content, max-content)", "minmax(max-content, min-content) [last]", "[first] minmax(min-content, max-content)", "minmax(max-content, min-content) [last]"); |
| testNonGridTemplatesSetJSValues("[first nav] minmax(min-content, max-content) [last]", "[first nav] minmax(max-content, min-content) [last]", "[first nav] minmax(min-content, max-content) [last]", "[first nav] minmax(max-content, min-content) [last]", "[first nav] minmax(min-content, max-content) [last]", "[first nav] minmax(max-content, min-content) [last]"); |
| testNonGridTemplatesSetJSValues("[first nav] minmax(min-content, max-content) [nav] auto [last]", "[first nav2] minmax(max-content, min-content) [nav2] minmax(10px, 15px) [last]", "[first nav] minmax(min-content, max-content) [nav] auto [last]", "[first nav2] minmax(max-content, min-content) [nav2] minmax(10px, 15px) [last]", "[first nav] minmax(min-content, max-content) [nav] auto [last]", "[first nav2] minmax(max-content, min-content) [nav2] minmax(10px, 15px) [last]");; |
| testNonGridTemplatesSetJSValues("[foo bar] auto [foo] auto [bar]", "[foo bar] auto [foo] auto [bar]", "[foo bar] auto [foo] auto [bar]", "[foo bar] auto [foo] auto [bar]", "[foo bar] auto [foo] auto [bar]", "[foo bar] auto [foo] auto [bar]"); |
| |
| debug(""); |
| debug("Test getting and setting invalid grid-template-columns and grid-template-rows through JS"); |
| element = document.createElement("div"); |
| document.body.appendChild(element); |
| element.style.gridTemplateColumns = "[foo]"; |
| element.style.gridTemplateRows = "[bar]"; |
| shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-columns')", "none"); |
| shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-rows')", "none"); |
| |
| element = document.createElement("div"); |
| document.body.appendChild(element); |
| element.style.gridTemplateColumns = "[foo bar]"; |
| element.style.gridTemplateRows = "(bar foo)"; |
| shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-columns')", "none"); |
| shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-rows')", "none"); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |