Diff
Modified: trunk/LayoutTests/ChangeLog (153751 => 153752)
--- trunk/LayoutTests/ChangeLog 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/LayoutTests/ChangeLog 2013-08-06 15:08:21 UTC (rev 153752)
@@ -1,3 +1,15 @@
+2013-08-06 Sergio Villar Senin <svil...@igalia.com>
+
+ [CSS Grid Layout] Allow defining named grid lines on the grid element
+ https://bugs.webkit.org/show_bug.cgi?id=118255
+
+ Reviewed by Andreas Kling.
+
+ From Blink r149798 by <jchaffr...@chromium.org>
+
+ * fast/css-grid-layout/named-grid-line-get-set-expected.txt: Added.
+ * fast/css-grid-layout/named-grid-line-get-set.html: Added.
+
2013-06-26 Sergio Villar Senin <svil...@igalia.com>
[CSS Grid Layout] Add support for parsing <grid-line> that includes a 'span'
Added: trunk/LayoutTests/fast/css-grid-layout/named-grid-line-get-set-expected.txt (0 => 153752)
--- trunk/LayoutTests/fast/css-grid-layout/named-grid-line-get-set-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/named-grid-line-get-set-expected.txt 2013-08-06 15:08:21 UTC (rev 153752)
@@ -0,0 +1,52 @@
+Test that setting and getting grid-definition-columns and grid-definition-rows works as expected
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Test getting -webkit-grid-definition-columns and -webkit-grid-definition-rows set through CSS
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first 10px"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "first 15px"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "53% last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "27% last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first auto"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "auto last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first minmax(10%, 15px)"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "minmax(20px, 50%) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "nav first 10px last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "nav first 15px last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "nav first 10% nav 15% last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "first nav2 25% nav2 75% last"
+
+Test getting and setting -webkit-grid-definition-columns and -webkit-grid-definition-rows through JS
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first 18px"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "66px last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first 55%"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "40% last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first auto"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "auto last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first -webkit-min-content"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "-webkit-min-content last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first -webkit-max-content"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "-webkit-max-content last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first minmax(55%, 45px)"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "minmax(30px, 40%) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first minmax(220px, -webkit-max-content)"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "minmax(-webkit-max-content, 50px) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first minmax(220px, -webkit-max-content)"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "minmax(-webkit-max-content, 50px) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "first minmax(-webkit-min-content, -webkit-max-content)"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "minmax(-webkit-max-content, -webkit-min-content) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "nav first minmax(-webkit-min-content, -webkit-max-content) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "nav first minmax(-webkit-max-content, -webkit-min-content) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "nav first minmax(-webkit-min-content, -webkit-max-content) nav auto last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "first nav2 minmax(-webkit-max-content, -webkit-min-content) nav2 minmax(10px, 15px) last"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "foo bar auto foo auto bar"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "foo bar auto foo auto bar"
+
+Test getting and setting invalid -webkit-grid-definition-columns and -webkit-grid-definition-rows through JS
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns') is "none"
+PASS getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows') is "none"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/css-grid-layout/named-grid-line-get-set.html (0 => 153752)
--- trunk/LayoutTests/fast/css-grid-layout/named-grid-line-get-set.html (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/named-grid-line-get-set.html 2013-08-06 15:08:21 UTC (rev 153752)
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<script>
+if (window.testRunner)
+ testRunner.overridePreference("WebKitCSSGridLayoutEnabled", 1);
+</script>
+<link href="" rel="stylesheet">
+<style>
+.gridWithFixed {
+ -webkit-grid-definition-columns: "first" 10px;
+ -webkit-grid-definition-rows: "first" 15px;
+}
+.gridWithPercent {
+ -webkit-grid-definition-columns: 53% "last";
+ -webkit-grid-definition-rows: 27% "last";
+}
+.gridWithAuto {
+ -webkit-grid-definition-columns: "first" auto;
+ -webkit-grid-definition-rows: auto "last";
+}
+.gridWithMinMax {
+ -webkit-grid-definition-columns: "first" minmax(10%, 15px);
+ -webkit-grid-definition-rows: minmax(20px, 50%) "last";
+}
+.gridWithFixedMultiple {
+ -webkit-grid-definition-columns: "first" "nav" 10px "last";
+ -webkit-grid-definition-rows: "first" "nav" 15px "last";
+}
+.gridWithPercentageSameStringMultipleTimes {
+ -webkit-grid-definition-columns: "first" "nav" 10% "nav" 15% "last";
+ -webkit-grid-definition-rows: "first" "nav2" 25% "nav2" 75% "last";
+}
+</style>
+<script src=""
+</head>
+<body>
+<div class="grid gridWithFixed" id="gridWithFixedElement"></div>
+<div class="grid gridWithPercent" id="gridWithPercentElement"></div>
+<div class="grid gridWithAuto" id="gridWithAutoElement"></div>
+<div class="grid gridWithMinMax" id="gridWithMinMax"></div>
+<div class="grid gridWithFixedMultiple" id="gridWithFixedMultiple"></div>
+<div class="grid gridWithPercentageSameStringMultipleTimes" id="gridWithPercentageSameStringMultipleTimes"></div>
+<script>
+ description('Test that setting and getting grid-definition-columns and grid-definition-rows works as expected');
+
+ function testValue(gridElement, namedGridColumns, namedGridRows)
+ {
+ this.gridElement = gridElement;
+ shouldBeEqualToString("getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-columns')", namedGridColumns);
+ shouldBeEqualToString("getComputedStyle(gridElement, '').getPropertyValue('-webkit-grid-definition-rows')", namedGridRows);
+ }
+
+ function testCSSValue(gridElementId, namedGridColumns, namedGridRows)
+ {
+ testValue(document.getElementById(gridElementId), namedGridColumns, namedGridRows);
+ }
+
+ debug("Test getting -webkit-grid-definition-columns and -webkit-grid-definition-rows set through CSS");
+ testCSSValue("gridWithFixedElement", "first 10px", "first 15px");
+ testCSSValue("gridWithPercentElement", "53% last", "27% last");
+ testCSSValue("gridWithAutoElement", "first auto", "auto last");
+ testCSSValue("gridWithMinMax", "first minmax(10%, 15px)", "minmax(20px, 50%) last");
+ testCSSValue("gridWithFixedMultiple", "nav first 10px last", "nav first 15px last");
+ testCSSValue("gridWithPercentageSameStringMultipleTimes", "nav first 10% nav 15% last", "first nav2 25% nav2 75% last");
+
+ debug("");
+ debug("Test getting and setting -webkit-grid-definition-columns and -webkit-grid-definition-rows through JS");
+ var element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' 18px";
+ element.style.webkitGridDefinitionRows = "66px 'last'";
+ testValue(element, "first 18px", "66px last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' 55%";
+ element.style.webkitGridDefinitionRows = "40% 'last'";
+ testValue(element, "first 55%", "40% last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' auto";
+ element.style.webkitGridDefinitionRows = "auto 'last'";
+ testValue(element, "first auto", "auto last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' -webkit-min-content";
+ element.style.webkitGridDefinitionRows = "-webkit-min-content 'last'";
+ testValue(element, "first -webkit-min-content", "-webkit-min-content last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' -webkit-max-content";
+ element.style.webkitGridDefinitionRows = "-webkit-max-content 'last'";
+ testValue(element, "first -webkit-max-content", "-webkit-max-content last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' minmax(55%, 45px)";
+ element.style.webkitGridDefinitionRows = "minmax(30px, 40%) 'last'";
+ testValue(element, "first minmax(55%, 45px)", "minmax(30px, 40%) last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.font = "10px Ahem";
+ element.style.webkitGridDefinitionColumns = "'first' minmax(22em, -webkit-max-content)";
+ element.style.webkitGridDefinitionRows = "minmax(-webkit-max-content, 5em) 'last'";
+ testValue(element, "first minmax(220px, -webkit-max-content)", "minmax(-webkit-max-content, 50px) last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.font = "10px Ahem";
+ element.style.webkitGridDefinitionColumns = "'first' minmax(22em, -webkit-max-content)";
+ element.style.webkitGridDefinitionRows = "minmax(-webkit-max-content, 5em) 'last'";
+ testValue(element, "first minmax(220px, -webkit-max-content)", "minmax(-webkit-max-content, 50px) last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' minmax(-webkit-min-content, -webkit-max-content)";
+ element.style.webkitGridDefinitionRows = "minmax(-webkit-max-content, -webkit-min-content) 'last'";
+ testValue(element, "first minmax(-webkit-min-content, -webkit-max-content)", "minmax(-webkit-max-content, -webkit-min-content) last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' 'nav' minmax(-webkit-min-content, -webkit-max-content) 'last'";
+ element.style.webkitGridDefinitionRows = "'first' 'nav' minmax(-webkit-max-content, -webkit-min-content) 'last'";
+ testValue(element, "nav first minmax(-webkit-min-content, -webkit-max-content) last", "nav first minmax(-webkit-max-content, -webkit-min-content) last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'first' 'nav' minmax(-webkit-min-content, -webkit-max-content) 'nav' auto 'last'";
+ element.style.webkitGridDefinitionRows = "'first' 'nav2' minmax(-webkit-max-content, -webkit-min-content) 'nav2' minmax(10px, 15px) 'last'";
+ testValue(element, "nav first minmax(-webkit-min-content, -webkit-max-content) nav auto last", "first nav2 minmax(-webkit-max-content, -webkit-min-content) nav2 minmax(10px, 15px) last");
+
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'foo' 'bar' auto 'foo' auto 'bar'";
+ element.style.webkitGridDefinitionRows = "'foo' 'bar' auto 'foo' auto 'bar'";
+ testValue(element, "foo bar auto foo auto bar", "foo bar auto foo auto bar");
+
+ debug("");
+ debug("Test getting and setting invalid -webkit-grid-definition-columns and -webkit-grid-definition-rows through JS");
+ element = document.createElement("div");
+ document.body.appendChild(element);
+ element.style.webkitGridDefinitionColumns = "'foo'";
+ element.style.webkitGridDefinitionRows = "'bar";
+ testValue(element, "none", "none");
+</script>
+<script src=""
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (153751 => 153752)
--- trunk/Source/WebCore/ChangeLog 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/ChangeLog 2013-08-06 15:08:21 UTC (rev 153752)
@@ -1,3 +1,39 @@
+2013-08-06 Sergio Villar Senin <svil...@igalia.com>
+
+ [CSS Grid Layout] Allow defining named grid lines on the grid element
+ https://bugs.webkit.org/show_bug.cgi?id=118255
+
+ Reviewed by Andreas Kling.
+
+ From Blink r149798 by <jchaffr...@chromium.org>
+
+ This change adds parsing, style resolution and getComputedStyle
+ support for named grid lines at the grid element level
+ (i.e. extends our <track-list> support). Per the specification, we
+ allow multiple grid lines with the same name.
+
+ To fully support resolving the grid lines to a position on our
+ grid, we need to add the parsing at the grid item's level (which
+ means extending our <grid-line> support). This will be done in a
+ follow-up change.
+
+ Test: fast/css-grid-layout/named-grid-line-get-set.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::addValuesForNamedGridLinesAtIndex):
+ (WebCore::valueForGridTrackList):
+ (WebCore::ComputedStyleExtractor::propertyValue):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseGridTrackList):
+ * css/StyleResolver.cpp:
+ (WebCore::createGridTrackList):
+ (WebCore::StyleResolver::applyProperty):
+ * rendering/style/RenderStyle.h:
+ * rendering/style/StyleGridData.cpp:
+ (WebCore::StyleGridData::StyleGridData):
+ * rendering/style/StyleGridData.h:
+ (WebCore::StyleGridData::operator==):
+
2013-08-06 Allan Sandfeld Jensen <allan.jen...@digia.com>
[Qt] Fix minimal build.
Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (153751 => 153752)
--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2013-08-06 15:08:21 UTC (rev 153752)
@@ -1083,15 +1083,39 @@
return 0;
}
-static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const RenderStyle* style, RenderView *renderView)
+static void addValuesForNamedGridLinesAtIndex(const NamedGridLinesMap& namedGridLines, size_t i, CSSValueList& list)
{
+ // Note that this won't return the results in the order specified in the style sheet,
+ // which is probably fine as we still *do* return all the expected values.
+ NamedGridLinesMap::const_iterator it = namedGridLines.begin();
+ NamedGridLinesMap::const_iterator end = namedGridLines.end();
+ for (; it != end; ++it) {
+ const Vector<size_t>& linesIndexes = it->value;
+ for (size_t j = 0; j < linesIndexes.size(); ++j) {
+ if (linesIndexes[j] != i)
+ continue;
+
+ list.append(cssValuePool().createValue(it->key, CSSPrimitiveValue::CSS_STRING));
+ break;
+ }
+ }
+}
+
+static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const NamedGridLinesMap& namedGridLines, const RenderStyle* style, RenderView* renderView)
+{
// Handle the 'none' case here.
- if (!trackSizes.size())
+ if (!trackSizes.size()) {
+ ASSERT(namedGridLines.isEmpty());
return cssValuePool().createIdentifierValue(CSSValueNone);
+ }
RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
- for (size_t i = 0; i < trackSizes.size(); ++i)
+ for (size_t i = 0; i < trackSizes.size(); ++i) {
+ addValuesForNamedGridLinesAtIndex(namedGridLines, i, *list);
list->append(valueForGridTrackSize(trackSizes[i], style, renderView));
+ }
+ // Those are the trailing <string>* allowed in the syntax.
+ addValuesForNamedGridLinesAtIndex(namedGridLines, trackSizes.size(), *list);
return list.release();
}
@@ -2044,9 +2068,9 @@
case CSSPropertyWebkitGridAutoRows:
return valueForGridTrackSize(style->gridAutoRows(), style.get(), m_node->document()->renderView());
case CSSPropertyWebkitGridDefinitionColumns:
- return valueForGridTrackList(style->gridColumns(), style.get(), m_node->document()->renderView());
+ return valueForGridTrackList(style->gridColumns(), style->namedGridColumnLines(), style.get(), m_node->document()->renderView());
case CSSPropertyWebkitGridDefinitionRows:
- return valueForGridTrackList(style->gridRows(), style.get(), m_node->document()->renderView());
+ return valueForGridTrackList(style->gridRows(), style->namedGridRowLines(), style.get(), m_node->document()->renderView());
case CSSPropertyWebkitGridColumnStart:
return valueForGridPosition(style->gridItemColumnStart());
Modified: trunk/Source/WebCore/css/CSSParser.cpp (153751 => 153752)
--- trunk/Source/WebCore/css/CSSParser.cpp 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/css/CSSParser.cpp 2013-08-06 15:08:21 UTC (rev 153752)
@@ -4853,6 +4853,16 @@
RefPtr<CSSValueList> values = CSSValueList::createSpaceSeparated();
while (m_valueList->current()) {
+ while (m_valueList->current() && m_valueList->current()->unit == CSSPrimitiveValue::CSS_STRING) {
+ RefPtr<CSSPrimitiveValue> name = createPrimitiveStringValue(m_valueList->current());
+ values->append(name);
+ m_valueList->next();
+ }
+
+ // This allows trailing <string>* per the specification.
+ if (!m_valueList->current())
+ break;
+
RefPtr<CSSPrimitiveValue> primitiveValue = parseGridTrackSize();
if (!primitiveValue)
return false;
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (153751 => 153752)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2013-08-06 15:08:21 UTC (rev 153752)
@@ -2099,7 +2099,7 @@
return true;
}
-static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSizes, const StyleResolver::State& state)
+static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSizes, NamedGridLinesMap& namedGridLines, const StyleResolver::State& state)
{
// Handle 'none'.
if (value->isPrimitiveValue()) {
@@ -2110,14 +2110,29 @@
if (!value->isValueList())
return false;
+ size_t currentNamedGridLine = 0;
for (CSSValueListIterator i = value; i.hasMore(); i.advance()) {
CSSValue* currValue = i.value();
+ if (currValue->isPrimitiveValue()) {
+ CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(currValue);
+ if (primitiveValue->isString()) {
+ NamedGridLinesMap::AddResult result = namedGridLines.add(primitiveValue->getStringValue(), Vector<size_t>());
+ result.iterator->value.append(currentNamedGridLine);
+ continue;
+ }
+ }
+
+ ++currentNamedGridLine;
GridTrackSize trackSize;
if (!createGridTrackSize(currValue, trackSize, state))
return false;
trackSizes.append(trackSize);
}
+
+ if (trackSizes.isEmpty())
+ return false;
+
return true;
}
@@ -2838,16 +2853,20 @@
}
case CSSPropertyWebkitGridDefinitionColumns: {
Vector<GridTrackSize> trackSizes;
- if (!createGridTrackList(value, trackSizes, state))
+ NamedGridLinesMap namedGridLines;
+ if (!createGridTrackList(value, trackSizes, namedGridLines, state))
return;
state.style()->setGridColumns(trackSizes);
+ state.style()->setNamedGridColumnLines(namedGridLines);
return;
}
case CSSPropertyWebkitGridDefinitionRows: {
Vector<GridTrackSize> trackSizes;
- if (!createGridTrackList(value, trackSizes, state))
+ NamedGridLinesMap namedGridLines;
+ if (!createGridTrackList(value, trackSizes, namedGridLines, state))
return;
state.style()->setGridRows(trackSizes);
+ state.style()->setNamedGridRowLines(namedGridLines);
return;
}
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (153751 => 153752)
--- trunk/Source/WebCore/rendering/style/RenderStyle.h 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h 2013-08-06 15:08:21 UTC (rev 153752)
@@ -776,6 +776,8 @@
const Vector<GridTrackSize>& gridColumns() const { return rareNonInheritedData->m_grid->m_gridColumns; }
const Vector<GridTrackSize>& gridRows() const { return rareNonInheritedData->m_grid->m_gridRows; }
+ const NamedGridLinesMap& namedGridColumnLines() const { return rareNonInheritedData->m_grid->m_namedGridColumnLines; }
+ const NamedGridLinesMap& namedGridRowLines() const { return rareNonInheritedData->m_grid->m_namedGridRowLines; }
GridAutoFlow gridAutoFlow() const { return rareNonInheritedData->m_grid->m_gridAutoFlow; }
const GridTrackSize& gridAutoColumns() const { return rareNonInheritedData->m_grid->m_gridAutoColumns; }
const GridTrackSize& gridAutoRows() const { return rareNonInheritedData->m_grid->m_gridAutoRows; }
@@ -1298,6 +1300,8 @@
void setGridAutoRows(const GridTrackSize& length) { SET_VAR(rareNonInheritedData.access()->m_grid, m_gridAutoRows, length); }
void setGridColumns(const Vector<GridTrackSize>& lengths) { SET_VAR(rareNonInheritedData.access()->m_grid, m_gridColumns, lengths); }
void setGridRows(const Vector<GridTrackSize>& lengths) { SET_VAR(rareNonInheritedData.access()->m_grid, m_gridRows, lengths); }
+ void setNamedGridColumnLines(const NamedGridLinesMap& namedGridColumnLines) { SET_VAR(rareNonInheritedData.access()->m_grid, m_namedGridColumnLines, namedGridColumnLines); }
+ void setNamedGridRowLines(const NamedGridLinesMap& namedGridRowLines) { SET_VAR(rareNonInheritedData.access()->m_grid, m_namedGridRowLines, namedGridRowLines); }
void setGridAutoFlow(GridAutoFlow flow) { SET_VAR(rareNonInheritedData.access()->m_grid, m_gridAutoFlow, flow); }
void setGridItemColumnStart(const GridPosition& columnStartPosition) { SET_VAR(rareNonInheritedData.access()->m_gridItem, m_gridColumnStart, columnStartPosition); }
void setGridItemColumnEnd(const GridPosition& columnEndPosition) { SET_VAR(rareNonInheritedData.access()->m_gridItem, m_gridColumnEnd, columnEndPosition); }
Modified: trunk/Source/WebCore/rendering/style/StyleGridData.cpp (153751 => 153752)
--- trunk/Source/WebCore/rendering/style/StyleGridData.cpp 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/rendering/style/StyleGridData.cpp 2013-08-06 15:08:21 UTC (rev 153752)
@@ -43,6 +43,8 @@
: RefCounted<StyleGridData>()
, m_gridColumns(o.m_gridColumns)
, m_gridRows(o.m_gridRows)
+ , m_namedGridColumnLines(o.m_namedGridColumnLines)
+ , m_namedGridRowLines(o.m_namedGridRowLines)
, m_gridAutoFlow(o.m_gridAutoFlow)
, m_gridAutoRows(o.m_gridAutoRows)
, m_gridAutoColumns(o.m_gridAutoColumns)
Modified: trunk/Source/WebCore/rendering/style/StyleGridData.h (153751 => 153752)
--- trunk/Source/WebCore/rendering/style/StyleGridData.h 2013-08-06 13:58:39 UTC (rev 153751)
+++ trunk/Source/WebCore/rendering/style/StyleGridData.h 2013-08-06 15:08:21 UTC (rev 153752)
@@ -31,9 +31,12 @@
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
namespace WebCore {
+typedef HashMap<String, Vector<size_t> > NamedGridLinesMap;
+
class StyleGridData : public RefCounted<StyleGridData> {
public:
static PassRefPtr<StyleGridData> create() { return adoptRef(new StyleGridData); }
@@ -41,7 +44,8 @@
bool operator==(const StyleGridData& o) const
{
- return m_gridColumns == o.m_gridColumns && m_gridRows == o.m_gridRows && m_gridAutoFlow == o.m_gridAutoFlow && m_gridAutoRows == o.m_gridAutoRows && m_gridAutoColumns == o.m_gridAutoColumns;
+ // FIXME: comparing two hashes doesn't look great for performance. Something to keep in mind going forward.
+ return m_gridColumns == o.m_gridColumns && m_gridRows == o.m_gridRows && m_gridAutoFlow == o.m_gridAutoFlow && m_gridAutoRows == o.m_gridAutoRows && m_gridAutoColumns == o.m_gridAutoColumns && m_namedGridColumnLines == o.m_namedGridColumnLines && m_namedGridRowLines == o.m_namedGridRowLines;
}
bool operator!=(const StyleGridData& o) const
@@ -53,6 +57,9 @@
Vector<GridTrackSize> m_gridColumns;
Vector<GridTrackSize> m_gridRows;
+ NamedGridLinesMap m_namedGridColumnLines;
+ NamedGridLinesMap m_namedGridRowLines;
+
GridAutoFlow m_gridAutoFlow;
GridTrackSize m_gridAutoRows;