Diff
Modified: trunk/LayoutTests/ChangeLog (160321 => 160322)
--- trunk/LayoutTests/ChangeLog 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/ChangeLog 2013-12-09 19:45:21 UTC (rev 160322)
@@ -1,3 +1,24 @@
+2013-12-09 Peter Molnar <[email protected]>
+
+ Fix handling of 'inherit' and 'initial' for grid lines.
+ https://bugs.webkit.org/show_bug.cgi?id=125223
+
+ Reviewed by Darin Adler.
+
+ 'initial' and 'inherit' are always allowed values for CSS properties.
+ As the CSSParser handles them automatically, those 2 values were never
+ taken care of in StyleResolver, leading to crashes.
+
+ Patch backported from Blink: https://src.chromium.org/viewvc/blink?revision=149257&view=revision
+
+ * fast/css-grid-layout/grid-item-column-row-get-set-expected.txt:
+ * fast/css-grid-layout/grid-item-column-row-get-set.html:
+ * fast/css-grid-layout/grid-item-end-after-get-set-expected.txt:
+ * fast/css-grid-layout/grid-item-end-after-get-set.html:
+ * fast/css-grid-layout/grid-item-start-before-get-set-expected.txt:
+ * fast/css-grid-layout/grid-item-start-before-get-set.html:
+ * fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js:
+
2013-12-09 Ryosuke Niwa <[email protected]>
Add a test for style sharing if grandparents matches different rule chain and nth-last child
Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set-expected.txt 2013-12-09 19:45:21 UTC (rev 160322)
@@ -227,6 +227,46 @@
PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-row-start') is 'auto'
PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-row-end') is 'auto'
+Test getting and setting 'initial' grid-column and grid-row through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "1 / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+
+Test getting and setting 'inherit' grid-column and grid-row through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "1 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 1 / 7"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "7"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "6 / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "6"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "1 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "6 / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "6"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 1 / 7"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "7"
+
Test getting and setting invalid grid-column and grid-row through JS
PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / auto"
PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-column-row-get-set.html 2013-12-09 19:45:21 UTC (rev 160322)
@@ -173,6 +173,16 @@
shouldBe("getComputedStyle(element, '').getPropertyValue('-webkit-grid-row-end')", "'auto'");
debug("");
+ debug("Test getting and setting 'initial' grid-column and grid-row through JS");
+ testColumnRowInitialJSParsing();
+
+ debug("");
+ debug("Test getting and setting 'inherit' grid-column and grid-row through JS");
+ testColumnRowInheritJSParsing("1 / auto", "inherit");
+ testColumnRowInheritJSParsing("inherit", "1 / auto");
+ testColumnRowInheritJSParsing("inherit", "inherit");
+
+ debug("");
debug("Test getting and setting invalid grid-column and grid-row through JS");
testColumnRowInvalidJSParsing("4 5", "5 8");
testColumnRowInvalidJSParsing("4 /", "5 /");
Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set-expected.txt 2013-12-09 19:45:21 UTC (rev 160322)
@@ -103,6 +103,46 @@
PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+Test setting grid-start and grid-before to 'inherit' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / 18"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "18"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / 7"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "7"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / 7"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "7"
+
+Test setting grid-start and grid-before to 'initial' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "1 / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "1 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "1 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+
Test setting grid-column-end and grid-row-end back to 'auto' through JS
PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column-end') is '18'
PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column') is 'auto / 18'
Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-end-after-get-set.html 2013-12-09 19:45:21 UTC (rev 160322)
@@ -89,6 +89,16 @@
testColumnEndRowEndJSParsing("secondArea", "nonExistentArea", "secondArea", "auto");
debug("");
+ debug("Test setting grid-start and grid-before to 'inherit' through JS");
+ testEndAfterInheritJSParsing("inherit", "18");
+ testEndAfterInheritJSParsing("2", "inherit");
+ testEndAfterInheritJSParsing("inherit", "inherit");
+
+ debug("");
+ debug("Test setting grid-start and grid-before to 'initial' through JS");
+ testEndAfterInitialJSParsing();
+
+ debug("");
debug("Test setting grid-column-end and grid-row-end back to 'auto' through JS");
element.style.webkitGridColumnEnd = "18";
element.style.webkitGridRowEnd = "66";
Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set-expected.txt 2013-12-09 19:45:21 UTC (rev 160322)
@@ -101,6 +101,46 @@
PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+Test setting grid-start and grid-before to 'inherit' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "6 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "6"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "18 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "18"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "2 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 1 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "6 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "6"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 1 / auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "auto"
+
+Test setting grid-start and grid-before to 'initial' through JS
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "1 / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "1"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "span 3 / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "span 3"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column') is "auto / span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-column-end') is "span 2"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row') is "auto / 5"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-start') is "auto"
+PASS getComputedStyle(gridItem, '').getPropertyValue('-webkit-grid-row-end') is "5"
+
Test setting grid-column-start and grid-row-start back to 'auto' through JS
PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column-start') is '18'
PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-column') is '18 / auto'
Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-start-before-get-set.html 2013-12-09 19:45:21 UTC (rev 160322)
@@ -94,6 +94,16 @@
testColumnStartRowStartJSParsing("secondArea", "nonExistentArea", "secondArea", "auto");
debug("");
+ debug("Test setting grid-start and grid-before to 'inherit' through JS");
+ testStartBeforeInheritJSParsing("inherit", "18");
+ testStartBeforeInheritJSParsing("2", "inherit");
+ testStartBeforeInheritJSParsing("inherit", "inherit");
+
+ debug("");
+ debug("Test setting grid-start and grid-before to 'initial' through JS");
+ testStartBeforeInitialJSParsing();
+
+ debug("");
debug("Test setting grid-column-start and grid-row-start back to 'auto' through JS");
element.style.webkitGridColumnStart = "18";
element.style.webkitGridRowStart = "66";
Modified: trunk/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js (160321 => 160322)
--- trunk/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/LayoutTests/fast/css-grid-layout/resources/grid-item-column-row-parsing-utils.js 2013-12-09 19:45:21 UTC (rev 160322)
@@ -88,4 +88,122 @@
gridElement.removeChild(gridItem);
}
+var placeholderParentStartValueForInherit = "6";
+var placeholderParentEndValueForInherit = "span 2";
+var placeholderParentColumnValueForInherit = placeholderParentStartValueForInherit + " / " + placeholderParentEndValueForInherit;
+var placeholderParentBeforeValueForInherit = "span 1";
+var placeholderParentAfterValueForInherit = "7";
+var placeholderParentRowValueForInherit = placeholderParentBeforeValueForInherit + " / " + placeholderParentAfterValueForInherit;
+
+var placeholderStartValueForInitial = "1";
+var placeholderEndValueForInitial = "span 2";
+var placeholderColumnValueForInitial = placeholderStartValueForInitial + " / " + placeholderEndValueForInitial;
+var placeholderBeforeValueForInitial = "span 3";
+var placeholderAfterValueForInitial = "5";
+var placeholderRowValueForInitial = placeholderBeforeValueForInitial + " / " + placeholderAfterValueForInitial;
+
+function setupInheritTest()
+{
+ var parentElement = document.createElement("div");
+ document.body.appendChild(parentElement);
+ parentElement.style.webkitGridColumn = placeholderParentColumnValueForInherit;
+ parentElement.style.webkitGridRow = placeholderParentRowValueForInherit;
+
+ var gridItem = document.createElement("div");
+ parentElement.appendChild(gridItem);
+ return parentElement;
+}
+
+function setupInitialTest()
+{
+ var gridItem = document.createElement("div");
+ document.body.appendChild(gridItem);
+ gridItem.style.webkitGridColumn = placeholderColumnValueForInitial;
+ gridItem.style.webkitGridRow = placeholderRowValueForInitial;
+
+ checkColumnRowValues(gridItem, placeholderColumnValueForInitial, placeholderRowValueForInitial);
+ return gridItem;
+}
+
+window.testColumnRowInheritJSParsing = function(columnValue, rowValue)
+{
+ var parentElement = setupInheritTest();
+ var gridItem = parentElement.firstChild;
+ gridItem.style.webkitGridColumn = columnValue;
+ gridItem.style.webkitGridRow = rowValue;
+
+ checkColumnRowValues(gridItem, columnValue !== "inherit" ? columnValue : placeholderParentColumnValueForInherit, rowValue !== "inherit" ? rowValue : placeholderParentRowValueForInherit);
+
+ document.body.removeChild(parentElement);
+}
+
+window.testStartBeforeInheritJSParsing = function(startValue, beforeValue)
+{
+ var parentElement = setupInheritTest();
+ var gridItem = parentElement.firstChild;
+ gridItem.style.webkitGridColumnStart = startValue;
+ gridItem.style.webkitGridRowStart = beforeValue;
+
+ // Initial value is 'auto' but we shouldn't touch the opposite grid line.
+ var columnValueForInherit = (startValue !== "inherit" ? startValue : placeholderParentStartValueForInherit) + " / auto";
+ var rowValueForInherit = (beforeValue !== "inherit" ? beforeValue : placeholderParentBeforeValueForInherit) + " / auto";
+ checkColumnRowValues(parentElement.firstChild, columnValueForInherit, rowValueForInherit);
+
+ document.body.removeChild(parentElement);
+}
+
+window.testEndAfterInheritJSParsing = function(endValue, afterValue)
+{
+ var parentElement = setupInheritTest();
+ var gridItem = parentElement.firstChild;
+ gridItem.style.webkitGridColumnEnd = endValue;
+ gridItem.style.webkitGridRowEnd = afterValue;
+
+ // Initial value is 'auto' but we shouldn't touch the opposite grid line.
+ var columnValueForInherit = "auto / " + (endValue !== "inherit" ? endValue : placeholderParentEndValueForInherit);
+ var rowValueForInherit = "auto / " + (afterValue !== "inherit" ? afterValue : placeholderParentAfterValueForInherit);
+ checkColumnRowValues(parentElement.firstChild, columnValueForInherit, rowValueForInherit);
+
+ document.body.removeChild(parentElement);
+}
+
+window.testColumnRowInitialJSParsing = function()
+{
+ var gridItem = setupInitialTest();
+
+ gridItem.style.webkitGridColumn = "initial";
+ checkColumnRowValues(gridItem, "auto / auto", placeholderRowValueForInitial);
+
+ gridItem.style.webkitGridRow = "initial";
+ checkColumnRowValues(gridItem, "auto / auto", "auto / auto");
+
+ document.body.removeChild(gridItem);
+}
+
+window.testStartBeforeInitialJSParsing = function()
+{
+ var gridItem = setupInitialTest();
+
+ gridItem.style.webkitGridColumnStart = "initial";
+ checkColumnRowValues(gridItem, "auto / " + placeholderEndValueForInitial, placeholderRowValueForInitial);
+
+ gridItem.style.webkitGridRowStart = "initial";
+ checkColumnRowValues(gridItem, "auto / " + placeholderEndValueForInitial, "auto / " + placeholderAfterValueForInitial);
+
+ document.body.removeChild(gridItem);
+}
+
+window.testEndAfterInitialJSParsing = function()
+{
+ var gridItem = setupInitialTest();
+
+ gridItem.style.webkitGridColumnEnd = "initial";
+ checkColumnRowValues(gridItem, placeholderStartValueForInitial + " / auto", placeholderRowValueForInitial);
+
+ gridItem.style.webkitGridRowEnd = "initial";
+ checkColumnRowValues(gridItem, placeholderStartValueForInitial + " / auto", placeholderBeforeValueForInitial + " / auto");
+
+ document.body.removeChild(gridItem);
+}
+
})();
Modified: trunk/Source/WebCore/ChangeLog (160321 => 160322)
--- trunk/Source/WebCore/ChangeLog 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/Source/WebCore/ChangeLog 2013-12-09 19:45:21 UTC (rev 160322)
@@ -1,3 +1,28 @@
+2013-12-09 Peter Molnar <[email protected]>
+
+ Fix handling of 'inherit' and 'initial' for grid lines.
+ https://bugs.webkit.org/show_bug.cgi?id=125223
+
+ Reviewed by Darin Adler.
+
+ 'initial' and 'inherit' are always allowed values for CSS properties.
+ As the CSSParser handles them automatically, those 2 values were never
+ taken care of in StyleResolver, leading to crashes.
+
+ Added tests cases for 'inherit' and 'initial' to the following tests:
+
+ fast/css-grid-layout/grid-item-column-row-get-set.html
+ fast/css-grid-layout/grid-item-end-after-get-set.html
+ fast/css-grid-layout/grid-item-start-before-get-set.html
+
+ Patch backported from Blink: https://src.chromium.org/viewvc/blink?revision=149257&view=revision
+
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::applyProperty):
+ * rendering/style/RenderStyle.h:
+ * rendering/style/StyleGridItemData.cpp:
+ (WebCore::StyleGridItemData::StyleGridItemData):
+
2013-12-09 Joseph Pecoraro <[email protected]>
Web Inspector: Inspector.json and CodeGenerator tweaks
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (160321 => 160322)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2013-12-09 19:45:21 UTC (rev 160322)
@@ -2711,6 +2711,7 @@
}
case CSSPropertyWebkitGridColumnStart: {
+ HANDLE_INHERIT_AND_INITIAL(gridItemColumnStart, GridItemColumnStart);
GridPosition columnStartPosition;
if (!createGridPosition(value, columnStartPosition))
return;
@@ -2718,6 +2719,7 @@
return;
}
case CSSPropertyWebkitGridColumnEnd: {
+ HANDLE_INHERIT_AND_INITIAL(gridItemColumnEnd, GridItemColumnEnd);
GridPosition columnEndPosition;
if (!createGridPosition(value, columnEndPosition))
return;
@@ -2726,6 +2728,7 @@
}
case CSSPropertyWebkitGridRowStart: {
+ HANDLE_INHERIT_AND_INITIAL(gridItemRowStart, GridItemRowStart);
GridPosition rowStartPosition;
if (!createGridPosition(value, rowStartPosition))
return;
@@ -2733,6 +2736,7 @@
return;
}
case CSSPropertyWebkitGridRowEnd: {
+ HANDLE_INHERIT_AND_INITIAL(gridItemRowEnd, GridItemRowEnd);
GridPosition rowEndPosition;
if (!createGridPosition(value, rowEndPosition))
return;
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (160321 => 160322)
--- trunk/Source/WebCore/rendering/style/RenderStyle.h 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h 2013-12-09 19:45:21 UTC (rev 160322)
@@ -1794,7 +1794,10 @@
static NamedGridLinesMap initialNamedGridRowLines() { return NamedGridLinesMap(); }
// 'auto' is the default.
- static GridPosition initialGridPosition() { return GridPosition(); }
+ static GridPosition initialGridItemColumnStart() { return GridPosition(); }
+ static GridPosition initialGridItemColumnEnd() { return GridPosition(); }
+ static GridPosition initialGridItemRowStart() { return GridPosition(); }
+ static GridPosition initialGridItemRowEnd() { return GridPosition(); }
static unsigned initialTabSize() { return 8; }
Modified: trunk/Source/WebCore/rendering/style/StyleGridItemData.cpp (160321 => 160322)
--- trunk/Source/WebCore/rendering/style/StyleGridItemData.cpp 2013-12-09 19:30:40 UTC (rev 160321)
+++ trunk/Source/WebCore/rendering/style/StyleGridItemData.cpp 2013-12-09 19:45:21 UTC (rev 160322)
@@ -35,10 +35,10 @@
namespace WebCore {
StyleGridItemData::StyleGridItemData()
- : m_gridColumnStart(RenderStyle::initialGridPosition())
- , m_gridColumnEnd(RenderStyle::initialGridPosition())
- , m_gridRowStart(RenderStyle::initialGridPosition())
- , m_gridRowEnd(RenderStyle::initialGridPosition())
+ : m_gridColumnStart(RenderStyle::initialGridItemColumnStart())
+ , m_gridColumnEnd(RenderStyle::initialGridItemColumnEnd())
+ , m_gridRowStart(RenderStyle::initialGridItemRowStart())
+ , m_gridRowEnd(RenderStyle::initialGridItemRowEnd())
{
}