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

Unified Diff: Source/WebCore/css/StyleResolver.cpp

Issue 13992003: Add support for parsing <grid-line> that includes a 'span' (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/WebCore/css/StyleResolver.cpp
diff --git a/Source/WebCore/css/StyleResolver.cpp b/Source/WebCore/css/StyleResolver.cpp
index 8e2d8c45d8b813c537c7973119034a3fb3b482aa..974a77ab8df1cca68b7ac523439a2aaa583f0af5 100644
--- a/Source/WebCore/css/StyleResolver.cpp
+++ b/Source/WebCore/css/StyleResolver.cpp
@@ -2121,16 +2121,30 @@ static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSiz
static bool createGridPosition(CSSValue* value, GridPosition& position)
{
- // For now, we only accept: <integer> | 'auto'
- if (!value->isPrimitiveValue())
- return false;
+ // For now, we only accept: 'auto' | <integer> | span && <integer>?
+ if (value->isPrimitiveValue()) {
+ CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
+ if (primitiveValue->getIdent() == CSSValueAuto)
+ return true;
- CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
- if (primitiveValue->getIdent() == CSSValueAuto)
+ if (primitiveValue->getIdent() == CSSValueSpan) {
+ // If the <integer> is omitted, it defaults to '1'.
+ position.setSpanPosition(1);
+ return true;
+ }
+
+ ASSERT(primitiveValue->isNumber());
+ position.setIntegerPosition(primitiveValue->getIntValue());
return true;
+ }
- ASSERT_WITH_SECURITY_IMPLICATION(primitiveValue->isNumber());
- position.setIntegerPosition(primitiveValue->getIntValue());
+ ASSERT_WITH_SECURITY_IMPLICATION(value->isValueList());
+ CSSValueList* values = static_cast<CSSValueList*>(value);
+ ASSERT(values->length() == 2);
+ ASSERT_WITH_SECURITY_IMPLICATION(values->itemWithoutBoundsCheck(1)->isPrimitiveValue());
+ CSSPrimitiveValue* numericValue = static_cast<CSSPrimitiveValue*>(values->itemWithoutBoundsCheck(1));
+ ASSERT(numericValue->isNumber());
+ position.setSpanPosition(numericValue->getIntValue());
return true;
}

Powered by Google App Engine
This is Rietveld 408576698