| Index: LayoutTests/fast/css-grid-layout/resources/grid-shorthand-parsing-utils.js | 
| diff --git a/LayoutTests/fast/css-grid-layout/resources/grid-shorthand-parsing-utils.js b/LayoutTests/fast/css-grid-layout/resources/grid-shorthand-parsing-utils.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..3e945af5770bae8f8311e836a51c8a984cac5285 | 
| --- /dev/null | 
| +++ b/LayoutTests/fast/css-grid-layout/resources/grid-shorthand-parsing-utils.js | 
| @@ -0,0 +1,57 @@ | 
| +function testGridDefinitionsValues(element, columnsValue, rowsValue, areasValue, autoFlowValue, autoColumnsValue, autoRowsValue) | 
| +{ | 
| +    window.element = element; | 
| +    var elementID = element.id || "element"; | 
| +    shouldBeEqualToString("window.getComputedStyle(" + elementID + ", '').getPropertyValue('grid-template-columns')", columnsValue); | 
| +    shouldBeEqualToString("window.getComputedStyle(" + elementID + ", '').getPropertyValue('grid-template-rows')", rowsValue); | 
| +    shouldBeEqualToString("window.getComputedStyle(" + elementID + ", '').getPropertyValue('grid-template-areas')", areasValue); | 
| +    shouldBeEqualToString("window.getComputedStyle(" + elementID + ", '').getPropertyValue('grid-auto-flow')", autoFlowValue); | 
| +    shouldBeEqualToString("window.getComputedStyle(" + elementID + ", '').getPropertyValue('grid-auto-columns')", autoColumnsValue); | 
| +    shouldBeEqualToString("window.getComputedStyle(" + elementID + ", '').getPropertyValue('grid-auto-rows')", autoRowsValue); | 
| +} | 
| + | 
| +function testGridDefinitionsSetJSValues(shorthandValue, computedColumnsValue, computedRowsValue, computedAreasValue, computedAutoFlowValue, computedAutoColumnsValue, computedAutoRowsValue, jsColumnsValue, jsRowsValue, jsAreasValue, jsAutoFlowValue, jsAutoColumnsValue, jsAutoRowsValue) | 
| +{ | 
| +    checkGridDefinitionsSetJSValues(true, shorthandValue, computedColumnsValue, computedRowsValue, computedAreasValue, computedAutoFlowValue, computedAutoColumnsValue, computedAutoRowsValue, jsColumnsValue, jsRowsValue, jsAreasValue, jsAutoFlowValue, jsAutoColumnsValue, jsAutoRowsValue); | 
| +} | 
| + | 
| +function testNonGridDefinitionsSetJSValues(shorthandValue, computedColumnsValue, computedRowsValue, computedAreasValue, computedAutoFlowValue, computedAutoColumnsValue, computedAutoRowsValue, jsColumnsValue, jsRowsValue, jsAreasValue, jsAutoFlowValue, jsAutoColumnsValue, jsAutoRowValue) | 
| +{ | 
| +    checkGridDefinitionsSetJSValues(false, shorthandValue, computedColumnsValue, computedRowsValue, computedAreasValue, computedAutoFlowValue, computedAutoColumnsValue, computedAutoRowsValue, jsColumnsValue, jsRowsValue, jsAreasValue, jsAutoFlowValue, jsAutoColumnsValue, jsAutoRowValue); | 
| +} | 
| + | 
| +function checkGridDefinitionsSetJSValues(useGrid, shorthandValue, computedColumnsValue, computedRowsValue, computedAreasValue, computedAutoFlowValue, computedAutoColumnsValue, computedAutoRowsValue, jsColumnsValue, jsRowsValue, jsAreasValue, jsAutoFlowValue, jsAutoColumnsValue, jsAutoRowsValue) | 
| +{ | 
| +    window.element = document.createElement("div"); | 
| +    document.body.appendChild(element); | 
| +    if (useGrid) { | 
| +        element.style.display = "grid"; | 
| +        element.style.width = "800px"; | 
| +        element.style.height = "600px"; | 
| +    } | 
| +    element.style.font = "10px Ahem"; // Used to resolve em font consistently. | 
| +    element.style.grid = shorthandValue; | 
| +    shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-columns')", computedColumnsValue); | 
| +    shouldBeEqualToString("element.style.gridTemplateColumns", jsColumnsValue || computedColumnsValue); | 
| +    shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-rows')", computedRowsValue); | 
| +    shouldBeEqualToString("element.style.gridTemplateRows", jsRowsValue || computedRowsValue); | 
| +    shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-template-areas')", computedAreasValue); | 
| +    shouldBeEqualToString("element.style.gridTemplateAreas", jsAreasValue || computedAreasValue); | 
| +    shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-auto-flow')", computedAutoFlowValue); | 
| +    shouldBeEqualToString("element.style.gridAutoFlow", jsAutoFlowValue || computedAutoFlowValue); | 
| +    shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-auto-columns')", computedAutoColumnsValue); | 
| +    shouldBeEqualToString("element.style.gridAutoColumns", jsAutoColumnsValue || computedAutoColumnsValue); | 
| +    shouldBeEqualToString("getComputedStyle(element, '').getPropertyValue('grid-auto-rows')", computedAutoRowsValue); | 
| +    shouldBeEqualToString("element.style.gridAutoRows", jsAutoRowsValue || computedAutoRowsValue); | 
| +    document.body.removeChild(element); | 
| +} | 
| + | 
| +function testGridDefinitionsSetBadJSValues(shorthandValue) | 
| +{ | 
| +    window.element = document.createElement("div"); | 
| +    document.body.appendChild(element); | 
| +    element.style.gridTemplate = shorthandValue; | 
| +    // We can't use testSetJSValues as element.style.gridTemplateRows returns "". | 
| +    testGridDefinitionsValues(element, "none", "none", "none"); | 
| +    document.body.removeChild(element); | 
| +} | 
|  |