Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(567)

Unified Diff: Source/core/css/CSSComputedStyleDeclaration.cpp

Issue 14786002: Allow defining named grid lines on the grid element (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/css/CSSComputedStyleDeclaration.cpp
diff --git a/Source/core/css/CSSComputedStyleDeclaration.cpp b/Source/core/css/CSSComputedStyleDeclaration.cpp
index 3fbd395ee8a7f9e450c1ca6ea67d86980fc8eb6d..17eae6a8e40366f04efc9cbcd3608ab0c1d52294 100644
--- a/Source/core/css/CSSComputedStyleDeclaration.cpp
+++ b/Source/core/css/CSSComputedStyleDeclaration.cpp
@@ -1035,15 +1035,37 @@ static PassRefPtr<CSSValue> valueForGridTrackSize(const GridTrackSize& trackSize
return 0;
}
-static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& trackSizes, const RenderStyle* style, RenderView *renderView)
+static void addValuesForNamedGridLinesAtIndex(const NamedGridLinesMapping& 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 stil *do* return all the expected values.
+ NamedGridLinesMapping::const_iterator it = namedGridLines.begin();
+ NamedGridLinesMapping::const_iterator end = namedGridLines.end();
+ for (; it != end; ++it) {
+ Vector<size_t> linesIndexes = it->value;
esprehn 2013/05/03 21:45:58 const Vector<size_t>& ? I don't think you want to
Julien - ping for review 2013/05/06 16:22:33 Good catch (though we don't do a deep copy as Vect
+ 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 NamedGridLinesMapping& namedGridLines, const RenderStyle* style, RenderView* renderView)
{
// Handle the 'none' case here.
if (!trackSizes.size())
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();
}
@@ -1916,9 +1938,9 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert
case CSSPropertyWebkitGridAutoRows:
return valueForGridTrackSize(style->gridAutoRows(), style.get(), m_node->document()->renderView());
case CSSPropertyWebkitGridColumns:
- return valueForGridTrackList(style->gridColumns(), style.get(), m_node->document()->renderView());
+ return valueForGridTrackList(style->gridColumns(), style->namedGridColumnLines(), style.get(), m_node->document()->renderView());
case CSSPropertyWebkitGridRows:
- return valueForGridTrackList(style->gridRows(), style.get(), m_node->document()->renderView());
+ return valueForGridTrackList(style->gridRows(), style->namedGridRowLines(), style.get(), m_node->document()->renderView());
case CSSPropertyWebkitGridStart:
return valueForGridPosition(style->gridStart());

Powered by Google App Engine
This is Rietveld 408576698