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

Unified Diff: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp

Issue 1916853002: Pass around shorthand info instead of storing it (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: V4 Created 4 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
« no previous file with comments | « third_party/WebKit/Source/core/css/parser/CSSPropertyParser.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
index 89280601a7f886f0df8dfda3bea8991a0863d05b..f22d087d3a5e2aa4b325bde047ed67d1d604a5d7 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
@@ -54,25 +54,23 @@ CSSPropertyParser::CSSPropertyParser(const CSSParserTokenRange& range,
: m_range(range)
, m_context(context)
, m_parsedProperties(parsedProperties)
- , m_inParseShorthand(0)
- , m_currentShorthand(CSSPropertyInvalid)
{
m_range.consumeWhitespace();
}
-void CSSPropertyParser::addProperty(CSSPropertyID property, CSSValue* value, bool important, bool implicit)
+void CSSPropertyParser::addProperty(CSSPropertyID property, CSSPropertyID currentShorthand, CSSValue* value, bool important, bool implicit)
{
ASSERT(!isPropertyAlias(property));
int shorthandIndex = 0;
bool setFromShorthand = false;
- if (m_currentShorthand) {
+ if (currentShorthand) {
Vector<StylePropertyShorthand, 4> shorthands;
getMatchingShorthandsForLonghand(property, &shorthands);
setFromShorthand = true;
if (shorthands.size() > 1)
- shorthandIndex = indexOfShorthandForLonghand(m_currentShorthand, shorthands);
+ shorthandIndex = indexOfShorthandForLonghand(currentShorthand, shorthands);
}
m_parsedProperties->append(CSSProperty(property, value, important, setFromShorthand, shorthandIndex, implicit));
@@ -82,15 +80,10 @@ void CSSPropertyParser::addExpandedPropertyForValue(CSSPropertyID property, CSSV
{
const StylePropertyShorthand& shorthand = shorthandForProperty(property);
unsigned shorthandLength = shorthand.length();
- if (!shorthandLength) {
- addProperty(property, value, important);
- return;
- }
-
- ShorthandScope scope(this, property);
+ ASSERT(shorthandLength);
const CSSPropertyID* longhands = shorthand.properties();
for (unsigned i = 0; i < shorthandLength; ++i)
- addProperty(longhands[i], value, important);
+ addProperty(longhands[i], property, value, important);
}
static bool hasInvalidNumericValues(const CSSParserTokenRange& range)
@@ -168,7 +161,7 @@ bool CSSPropertyParser::parseValueStart(CSSPropertyID unresolvedProperty, bool i
} else {
if (CSSValue* parsedValue = parseSingleValue(unresolvedProperty)) {
if (m_range.atEnd()) {
- addProperty(propertyId, parsedValue, important);
+ addProperty(propertyId, CSSPropertyInvalid, parsedValue, important);
return true;
}
}
@@ -177,7 +170,7 @@ bool CSSPropertyParser::parseValueStart(CSSPropertyID unresolvedProperty, bool i
if (RuntimeEnabledFeatures::cssVariablesEnabled() && CSSVariableParser::containsValidVariableReferences(originalRange)) {
// We don't expand the shorthand here because crazypants.
CSSVariableReferenceValue* variable = CSSVariableReferenceValue::create(CSSVariableData::create(originalRange));
- addProperty(propertyId, variable, important);
+ addProperty(propertyId, CSSPropertyInvalid, variable, important);
return true;
}
@@ -310,7 +303,12 @@ bool CSSPropertyParser::consumeCSSWideKeyword(CSSPropertyID unresolvedProperty,
else
return false;
- addExpandedPropertyForValue(resolveCSSPropertyID(unresolvedProperty), value, important);
+ CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
+ const StylePropertyShorthand& shorthand = shorthandForProperty(property);
+ if (!shorthand.length())
+ addProperty(property, CSSPropertyInvalid, value, important);
+ else
+ addExpandedPropertyForValue(property, value, important);
m_range = rangeCopy;
return true;
}
@@ -1219,7 +1217,7 @@ bool CSSPropertyParser::consumeAnimationShorthand(const StylePropertyShorthand&
}
for (size_t i = 0; i < longhandCount; ++i)
- addProperty(shorthand.properties()[i], longhands[i], important);
+ addProperty(shorthand.properties()[i], shorthand.id(), longhands[i], important);
return m_range.atEnd();
}
@@ -3425,7 +3423,7 @@ static CSSValue* consumeGridTemplateAreas(CSSParserTokenRange& range)
return CSSGridTemplateAreasValue::create(gridAreaMap, rowCount, columnCount);
}
-CSSValue* CSSPropertyParser::parseSingleValue(CSSPropertyID unresolvedProperty)
+CSSValue* CSSPropertyParser::parseSingleValue(CSSPropertyID unresolvedProperty, CSSPropertyID currentShorthand)
{
CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
if (CSSParserFastPaths::isKeywordPropertyID(property)) {
@@ -3601,7 +3599,7 @@ CSSValue* CSSPropertyParser::parseSingleValue(CSSPropertyID unresolvedProperty)
case CSSPropertyBorderRightColor:
case CSSPropertyBorderTopColor: {
bool allowQuirkyColors = inQuirksMode()
- && (m_currentShorthand == CSSPropertyInvalid || m_currentShorthand == CSSPropertyBorderColor);
+ && (currentShorthand == CSSPropertyInvalid || currentShorthand == CSSPropertyBorderColor);
return consumeColor(m_range, m_context.mode(), allowQuirkyColors);
}
case CSSPropertyBorderBottomWidth:
@@ -3609,7 +3607,7 @@ CSSValue* CSSPropertyParser::parseSingleValue(CSSPropertyID unresolvedProperty)
case CSSPropertyBorderRightWidth:
case CSSPropertyBorderTopWidth: {
bool allowQuirkyLengths = inQuirksMode()
- && (m_currentShorthand == CSSPropertyInvalid || m_currentShorthand == CSSPropertyBorderWidth);
+ && (currentShorthand == CSSPropertyInvalid || currentShorthand == CSSPropertyBorderWidth);
UnitlessQuirk unitless = allowQuirkyLengths ? UnitlessQuirk::Allow : UnitlessQuirk::Forbid;
return consumeBorderWidth(m_range, m_context.mode(), unitless);
}
@@ -3931,7 +3929,7 @@ bool CSSPropertyParser::parseFontFaceDescriptor(CSSPropertyID propId)
if (!parsedValue || !m_range.atEnd())
return false;
- addProperty(propId, parsedValue, false);
+ addProperty(propId, CSSPropertyInvalid, parsedValue, false);
return true;
}
@@ -3948,16 +3946,16 @@ bool CSSPropertyParser::consumeSystemFont(bool important)
AtomicString fontFamily;
LayoutTheme::theme().systemFont(systemFontID, fontStyle, fontWeight, fontSize, fontFamily);
- addProperty(CSSPropertyFontStyle, cssValuePool().createIdentifierValue(fontStyle == FontStyleItalic ? CSSValueItalic : CSSValueNormal), important);
- addProperty(CSSPropertyFontWeight, cssValuePool().createValue(fontWeight), important);
- addProperty(CSSPropertyFontSize, cssValuePool().createValue(fontSize, CSSPrimitiveValue::UnitType::Pixels), important);
+ addProperty(CSSPropertyFontStyle, CSSPropertyFont, cssValuePool().createIdentifierValue(fontStyle == FontStyleItalic ? CSSValueItalic : CSSValueNormal), important);
+ addProperty(CSSPropertyFontWeight, CSSPropertyFont, cssValuePool().createValue(fontWeight), important);
+ addProperty(CSSPropertyFontSize, CSSPropertyFont, cssValuePool().createValue(fontSize, CSSPrimitiveValue::UnitType::Pixels), important);
CSSValueList* fontFamilyList = CSSValueList::createCommaSeparated();
fontFamilyList->append(cssValuePool().createFontFamilyValue(fontFamily));
- addProperty(CSSPropertyFontFamily, fontFamilyList, important);
+ addProperty(CSSPropertyFontFamily, CSSPropertyFont, fontFamilyList, important);
- addProperty(CSSPropertyFontStretch, cssValuePool().createIdentifierValue(CSSValueNormal), important);
- addProperty(CSSPropertyFontVariant, cssValuePool().createIdentifierValue(CSSValueNormal), important);
- addProperty(CSSPropertyLineHeight, cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyFontStretch, CSSPropertyFont, cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyFontVariant, CSSPropertyFont, cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyLineHeight, CSSPropertyFont, cssValuePool().createIdentifierValue(CSSValueNormal), important);
return true;
}
@@ -4002,25 +4000,25 @@ bool CSSPropertyParser::consumeFont(bool important)
if (m_range.atEnd())
return false;
- addProperty(CSSPropertyFontStyle, fontStyle ? fontStyle : cssValuePool().createIdentifierValue(CSSValueNormal), important);
- addProperty(CSSPropertyFontVariant, fontVariant ? fontVariant : cssValuePool().createIdentifierValue(CSSValueNormal), important);
- addProperty(CSSPropertyFontWeight, fontWeight ? fontWeight : cssValuePool().createIdentifierValue(CSSValueNormal), important);
- addProperty(CSSPropertyFontStretch, fontStretch ? fontStretch : cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyFontStyle, CSSPropertyFont, fontStyle ? fontStyle : cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyFontVariant, CSSPropertyFont, fontVariant ? fontVariant : cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyFontWeight, CSSPropertyFont, fontWeight ? fontWeight : cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyFontStretch, CSSPropertyFont, fontStretch ? fontStretch : cssValuePool().createIdentifierValue(CSSValueNormal), important);
// Now a font size _must_ come.
CSSValue* fontSize = consumeFontSize(m_range, m_context.mode());
if (!fontSize || m_range.atEnd())
return false;
- addProperty(CSSPropertyFontSize, fontSize, important);
+ addProperty(CSSPropertyFontSize, CSSPropertyFont, fontSize, important);
if (consumeSlashIncludingWhitespace(m_range)) {
CSSPrimitiveValue* lineHeight = consumeLineHeight(m_range, m_context.mode());
if (!lineHeight)
return false;
- addProperty(CSSPropertyLineHeight, lineHeight, important);
+ addProperty(CSSPropertyLineHeight, CSSPropertyFont, lineHeight, important);
} else {
- addProperty(CSSPropertyLineHeight, cssValuePool().createIdentifierValue(CSSValueNormal), important);
+ addProperty(CSSPropertyLineHeight, CSSPropertyFont, cssValuePool().createIdentifierValue(CSSValueNormal), important);
}
// Font family must come now.
@@ -4028,7 +4026,7 @@ bool CSSPropertyParser::consumeFont(bool important)
if (!parsedFamilyValue)
return false;
- addProperty(CSSPropertyFontFamily, parsedFamilyValue, important);
+ addProperty(CSSPropertyFontFamily, CSSPropertyFont, parsedFamilyValue, important);
// FIXME: http://www.w3.org/TR/2011/WD-css3-fonts-20110324/#font-prop requires that
// "font-stretch", "font-size-adjust", and "font-kerning" be reset to their initial values
@@ -4046,8 +4044,8 @@ bool CSSPropertyParser::consumeBorderSpacing(bool important)
verticalSpacing = consumeLength(m_range, m_context.mode(), ValueRangeNonNegative, UnitlessQuirk::Allow);
if (!verticalSpacing || !m_range.atEnd())
return false;
- addProperty(CSSPropertyWebkitBorderHorizontalSpacing, horizontalSpacing, important);
- addProperty(CSSPropertyWebkitBorderVerticalSpacing, verticalSpacing, important);
+ addProperty(CSSPropertyWebkitBorderHorizontalSpacing, CSSPropertyBorderSpacing, horizontalSpacing, important);
+ addProperty(CSSPropertyWebkitBorderVerticalSpacing, CSSPropertyBorderSpacing, verticalSpacing, important);
return true;
}
@@ -4099,8 +4097,8 @@ bool CSSPropertyParser::parseViewportDescriptor(CSSPropertyID propId, bool impor
maxWidth = consumeSingleViewportDescriptor(m_range, CSSPropertyMaxWidth, m_context.mode());
if (!maxWidth || !m_range.atEnd())
return false;
- addProperty(CSSPropertyMinWidth, minWidth, important);
- addProperty(CSSPropertyMaxWidth, maxWidth, important);
+ addProperty(CSSPropertyMinWidth, CSSPropertyInvalid, minWidth, important);
+ addProperty(CSSPropertyMaxWidth, CSSPropertyInvalid, maxWidth, important);
return true;
}
case CSSPropertyHeight: {
@@ -4112,8 +4110,8 @@ bool CSSPropertyParser::parseViewportDescriptor(CSSPropertyID propId, bool impor
maxHeight = consumeSingleViewportDescriptor(m_range, CSSPropertyMaxHeight, m_context.mode());
if (!maxHeight || !m_range.atEnd())
return false;
- addProperty(CSSPropertyMinHeight, minHeight, important);
- addProperty(CSSPropertyMaxHeight, maxHeight, important);
+ addProperty(CSSPropertyMinHeight, CSSPropertyInvalid, minHeight, important);
+ addProperty(CSSPropertyMaxHeight, CSSPropertyInvalid, maxHeight, important);
return true;
}
case CSSPropertyMinWidth:
@@ -4128,7 +4126,7 @@ bool CSSPropertyParser::parseViewportDescriptor(CSSPropertyID propId, bool impor
CSSValue* parsedValue = consumeSingleViewportDescriptor(m_range, propId, m_context.mode());
if (!parsedValue || !m_range.atEnd())
return false;
- addProperty(propId, parsedValue, important);
+ addProperty(propId, CSSPropertyInvalid, parsedValue, important);
return true;
}
default:
@@ -4165,8 +4163,8 @@ bool CSSPropertyParser::consumeColumns(bool important)
columnWidth = cssValuePool().createIdentifierValue(CSSValueAuto);
if (!columnCount)
columnCount = cssValuePool().createIdentifierValue(CSSValueAuto);
- addProperty(CSSPropertyColumnWidth, columnWidth, important);
- addProperty(CSSPropertyColumnCount, columnCount, important);
+ addProperty(CSSPropertyColumnWidth, CSSPropertyInvalid, columnWidth, important);
+ addProperty(CSSPropertyColumnCount, CSSPropertyInvalid, columnCount, important);
return true;
}
@@ -4180,7 +4178,7 @@ bool CSSPropertyParser::consumeShorthandGreedily(const StylePropertyShorthand& s
for (size_t i = 0; !foundLonghand && i < shorthand.length(); ++i) {
if (longhands[i])
continue;
- longhands[i] = parseSingleValue(shorthandProperties[i]);
+ longhands[i] = parseSingleValue(shorthandProperties[i], shorthand.id());
if (longhands[i])
foundLonghand = true;
}
@@ -4190,9 +4188,9 @@ bool CSSPropertyParser::consumeShorthandGreedily(const StylePropertyShorthand& s
for (size_t i = 0; i < shorthand.length(); ++i) {
if (longhands[i])
- addProperty(shorthandProperties[i], longhands[i], important);
+ addProperty(shorthandProperties[i], shorthand.id(), longhands[i], important);
else
- addProperty(shorthandProperties[i], cssValuePool().createImplicitInitialValue(), important);
+ addProperty(shorthandProperties[i], shorthand.id(), cssValuePool().createImplicitInitialValue(), important);
}
return true;
}
@@ -4245,9 +4243,9 @@ bool CSSPropertyParser::consumeFlex(bool important)
if (!m_range.atEnd())
return false;
- addProperty(CSSPropertyFlexGrow, cssValuePool().createValue(clampTo<float>(flexGrow), CSSPrimitiveValue::UnitType::Number), important);
- addProperty(CSSPropertyFlexShrink, cssValuePool().createValue(clampTo<float>(flexShrink), CSSPrimitiveValue::UnitType::Number), important);
- addProperty(CSSPropertyFlexBasis, flexBasis, important);
+ addProperty(CSSPropertyFlexGrow, CSSPropertyFlex, cssValuePool().createValue(clampTo<float>(flexGrow), CSSPrimitiveValue::UnitType::Number), important);
+ addProperty(CSSPropertyFlexShrink, CSSPropertyFlex, cssValuePool().createValue(clampTo<float>(flexShrink), CSSPrimitiveValue::UnitType::Number), important);
+ addProperty(CSSPropertyFlexBasis, CSSPropertyFlex, flexBasis, important);
return true;
}
@@ -4264,7 +4262,7 @@ bool CSSPropertyParser::consumeBorder(bool important)
continue;
}
if (!style) {
- style = parseSingleValue(CSSPropertyBorderLeftStyle);
+ style = parseSingleValue(CSSPropertyBorderLeftStyle, CSSPropertyBorder);
if (style)
continue;
}
@@ -4298,17 +4296,17 @@ bool CSSPropertyParser::consume4Values(const StylePropertyShorthand& shorthand,
{
ASSERT(shorthand.length() == 4);
const CSSPropertyID* longhands = shorthand.properties();
- CSSValue* top = parseSingleValue(longhands[0]);
+ CSSValue* top = parseSingleValue(longhands[0], shorthand.id());
if (!top)
return false;
- CSSValue* right = parseSingleValue(longhands[1]);
+ CSSValue* right = parseSingleValue(longhands[1], shorthand.id());
CSSValue* bottom = nullptr;
CSSValue* left = nullptr;
if (right) {
- bottom = parseSingleValue(longhands[2]);
+ bottom = parseSingleValue(longhands[2], shorthand.id());
if (bottom)
- left = parseSingleValue(longhands[3]);
+ left = parseSingleValue(longhands[3], shorthand.id());
}
if (!right)
@@ -4318,10 +4316,10 @@ bool CSSPropertyParser::consume4Values(const StylePropertyShorthand& shorthand,
if (!left)
left = right;
- addProperty(longhands[0], top, important);
- addProperty(longhands[1], right, important);
- addProperty(longhands[2], bottom, important);
- addProperty(longhands[3], left, important);
+ addProperty(longhands[0], shorthand.id(), top, important);
+ addProperty(longhands[1], shorthand.id(), right, important);
+ addProperty(longhands[2], shorthand.id(), bottom, important);
+ addProperty(longhands[3], shorthand.id(), left, important);
return m_range.atEnd();
}
@@ -4336,18 +4334,18 @@ bool CSSPropertyParser::consumeBorderImage(CSSPropertyID property, bool importan
if (consumeBorderImageComponents(property, m_range, m_context, source, slice, width, outset, repeat)) {
switch (property) {
case CSSPropertyWebkitMaskBoxImage:
- addProperty(CSSPropertyWebkitMaskBoxImageSource, source ? source : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyWebkitMaskBoxImageSlice, slice ? slice : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyWebkitMaskBoxImageWidth, width ? width : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyWebkitMaskBoxImageOutset, outset ? outset : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyWebkitMaskBoxImageRepeat, repeat ? repeat : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyWebkitMaskBoxImageSource, CSSPropertyWebkitMaskBoxImage, source ? source : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyWebkitMaskBoxImageSlice, CSSPropertyWebkitMaskBoxImage, slice ? slice : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyWebkitMaskBoxImageWidth, CSSPropertyWebkitMaskBoxImage, width ? width : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyWebkitMaskBoxImageOutset, CSSPropertyWebkitMaskBoxImage, outset ? outset : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyWebkitMaskBoxImageRepeat, CSSPropertyWebkitMaskBoxImage, repeat ? repeat : cssValuePool().createImplicitInitialValue(), important);
return true;
case CSSPropertyBorderImage:
- addProperty(CSSPropertyBorderImageSource, source ? source : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyBorderImageSlice, slice ? slice : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyBorderImageWidth, width ? width : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyBorderImageOutset, outset ? outset : cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyBorderImageRepeat, repeat ? repeat : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyBorderImageSource, CSSPropertyBorderImage, source ? source : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyBorderImageSlice, CSSPropertyBorderImage, slice ? slice : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyBorderImageWidth, CSSPropertyBorderImage, width ? width : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyBorderImageOutset, CSSPropertyBorderImage, outset ? outset : cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyBorderImageRepeat, CSSPropertyBorderImage, repeat ? repeat : cssValuePool().createImplicitInitialValue(), important);
return true;
default:
ASSERT_NOT_REACHED();
@@ -4423,7 +4421,7 @@ bool CSSPropertyParser::consumeLegacyBreakProperty(CSSPropertyID property, bool
return false;
CSSPropertyID genericBreakProperty = mapFromLegacyBreakProperty(property);
- addProperty(genericBreakProperty, cssValuePool().createIdentifierValue(value), important);
+ addProperty(genericBreakProperty, property, cssValuePool().createIdentifierValue(value), important);
return true;
}
@@ -4558,7 +4556,7 @@ bool CSSPropertyParser::consumeBackgroundShorthand(const StylePropertyShorthand&
CSSPropertyID property = shorthand.properties()[i];
if (property == CSSPropertyBackgroundSize && longhands[i] && m_context.useLegacyBackgroundSizeShorthandBehavior())
continue;
- addProperty(property, longhands[i], important, implicit);
+ addProperty(property, shorthand.id(), longhands[i], important, implicit);
}
return true;
}
@@ -4582,8 +4580,8 @@ bool CSSPropertyParser::consumeGridItemPositionShorthand(CSSPropertyID shorthand
}
if (!m_range.atEnd())
return false;
- addProperty(shorthand.properties()[0], startValue, important);
- addProperty(shorthand.properties()[1], endValue, important);
+ addProperty(shorthand.properties()[0], shorthandId, startValue, important);
+ addProperty(shorthand.properties()[1], shorthandId, endValue, important);
return true;
}
@@ -4621,14 +4619,14 @@ bool CSSPropertyParser::consumeGridAreaShorthand(bool important)
if (!columnEndValue)
columnEndValue = columnStartValue->isCustomIdentValue() ? columnStartValue : cssValuePool().createIdentifierValue(CSSValueAuto);
- addProperty(CSSPropertyGridRowStart, rowStartValue, important);
- addProperty(CSSPropertyGridColumnStart, columnStartValue, important);
- addProperty(CSSPropertyGridRowEnd, rowEndValue, important);
- addProperty(CSSPropertyGridColumnEnd, columnEndValue, important);
+ addProperty(CSSPropertyGridRowStart, CSSPropertyGridArea, rowStartValue, important);
+ addProperty(CSSPropertyGridColumnStart, CSSPropertyGridArea, columnStartValue, important);
+ addProperty(CSSPropertyGridRowEnd, CSSPropertyGridArea, rowEndValue, important);
+ addProperty(CSSPropertyGridColumnEnd, CSSPropertyGridArea, columnEndValue, important);
return true;
}
-bool CSSPropertyParser::consumeGridTemplateRowsAndAreasAndColumns(bool important)
+bool CSSPropertyParser::consumeGridTemplateRowsAndAreasAndColumns(CSSPropertyID shorthandId, bool important)
{
NamedGridAreaMap gridAreaMap;
size_t rowCount = 0;
@@ -4673,13 +4671,13 @@ bool CSSPropertyParser::consumeGridTemplateRowsAndAreasAndColumns(bool important
} else {
columnsValue = cssValuePool().createIdentifierValue(CSSValueNone);
}
- addProperty(CSSPropertyGridTemplateRows, templateRows, important);
- addProperty(CSSPropertyGridTemplateColumns, columnsValue, important);
- addProperty(CSSPropertyGridTemplateAreas, CSSGridTemplateAreasValue::create(gridAreaMap, rowCount, columnCount), important);
+ addProperty(CSSPropertyGridTemplateRows, shorthandId, templateRows, important);
+ addProperty(CSSPropertyGridTemplateColumns, shorthandId, columnsValue, important);
+ addProperty(CSSPropertyGridTemplateAreas, shorthandId, CSSGridTemplateAreasValue::create(gridAreaMap, rowCount, columnCount), important);
return true;
}
-bool CSSPropertyParser::consumeGridTemplateShorthand(bool important)
+bool CSSPropertyParser::consumeGridTemplateShorthand(CSSPropertyID shorthandId, bool important)
{
ASSERT(RuntimeEnabledFeatures::cssGridLayoutEnabled());
ASSERT(gridTemplateShorthand().length() == 3);
@@ -4689,9 +4687,9 @@ bool CSSPropertyParser::consumeGridTemplateShorthand(bool important)
// 1- 'none' case.
if (rowsValue && m_range.atEnd()) {
- addProperty(CSSPropertyGridTemplateRows, cssValuePool().createIdentifierValue(CSSValueNone), important);
- addProperty(CSSPropertyGridTemplateColumns, cssValuePool().createIdentifierValue(CSSValueNone), important);
- addProperty(CSSPropertyGridTemplateAreas, cssValuePool().createIdentifierValue(CSSValueNone), important);
+ addProperty(CSSPropertyGridTemplateRows, shorthandId, cssValuePool().createIdentifierValue(CSSValueNone), important);
+ addProperty(CSSPropertyGridTemplateColumns, shorthandId, cssValuePool().createIdentifierValue(CSSValueNone), important);
+ addProperty(CSSPropertyGridTemplateAreas, shorthandId, cssValuePool().createIdentifierValue(CSSValueNone), important);
return true;
}
@@ -4706,15 +4704,15 @@ bool CSSPropertyParser::consumeGridTemplateShorthand(bool important)
if (!columnsValue || !m_range.atEnd())
return false;
- addProperty(CSSPropertyGridTemplateRows, rowsValue, important);
- addProperty(CSSPropertyGridTemplateColumns, columnsValue, important);
- addProperty(CSSPropertyGridTemplateAreas, cssValuePool().createIdentifierValue(CSSValueNone), important);
+ addProperty(CSSPropertyGridTemplateRows, shorthandId, rowsValue, important);
+ addProperty(CSSPropertyGridTemplateColumns, shorthandId, columnsValue, important);
+ addProperty(CSSPropertyGridTemplateAreas, shorthandId, cssValuePool().createIdentifierValue(CSSValueNone), important);
return true;
}
// 3- [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <track-list> ]?
m_range = rangeCopy;
- return consumeGridTemplateRowsAndAreasAndColumns(important);
+ return consumeGridTemplateRowsAndAreasAndColumns(shorthandId, important);
}
bool CSSPropertyParser::consumeGridShorthand(bool important)
@@ -4725,14 +4723,14 @@ bool CSSPropertyParser::consumeGridShorthand(bool important)
CSSParserTokenRange rangeCopy = m_range;
// 1- <grid-template>
- if (consumeGridTemplateShorthand(important)) {
+ if (consumeGridTemplateShorthand(CSSPropertyGrid, important)) {
// It can only be specified the explicit or the implicit grid properties in a single grid declaration.
// The sub-properties not specified are set to their initial value, as normal for shorthands.
- addProperty(CSSPropertyGridAutoFlow, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridAutoColumns, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridAutoRows, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridColumnGap, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridRowGap, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridAutoFlow, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridAutoColumns, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridAutoRows, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridColumnGap, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridRowGap, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
return true;
}
@@ -4769,15 +4767,14 @@ bool CSSPropertyParser::consumeGridShorthand(bool important)
// It can only be specified the explicit or the implicit grid properties in a single grid declaration.
// The sub-properties not specified are set to their initial value, as normal for shorthands.
- addProperty(CSSPropertyGridTemplateColumns, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridTemplateRows, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridTemplateAreas, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridAutoFlow, gridAutoFlow, important);
- addProperty(CSSPropertyGridAutoColumns, autoColumnsValue, important);
- addProperty(CSSPropertyGridAutoRows, autoRowsValue, important);
- addProperty(CSSPropertyGridColumnGap, cssValuePool().createImplicitInitialValue(), important);
- addProperty(CSSPropertyGridRowGap, cssValuePool().createImplicitInitialValue(), important);
-
+ addProperty(CSSPropertyGridTemplateColumns, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridTemplateRows, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridTemplateAreas, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridAutoFlow, CSSPropertyGrid, gridAutoFlow, important);
+ addProperty(CSSPropertyGridAutoColumns, CSSPropertyGrid, autoColumnsValue, important);
+ addProperty(CSSPropertyGridAutoRows, CSSPropertyGrid, autoRowsValue, important);
+ addProperty(CSSPropertyGridColumnGap, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
+ addProperty(CSSPropertyGridRowGap, CSSPropertyGrid, cssValuePool().createImplicitInitialValue(), important);
return true;
}
@@ -4785,24 +4782,21 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
{
CSSPropertyID property = resolveCSSPropertyID(unresolvedProperty);
- CSSPropertyID oldShorthand = m_currentShorthand;
- // TODO(rob.buis): Remove this when the legacy property parser is gone
- m_currentShorthand = property;
switch (property) {
case CSSPropertyWebkitMarginCollapse: {
CSSValueID id = m_range.consumeIncludingWhitespace().id();
if (!CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyWebkitMarginBeforeCollapse, id, m_context.mode()))
return false;
CSSValue* beforeCollapse = cssValuePool().createIdentifierValue(id);
- addProperty(CSSPropertyWebkitMarginBeforeCollapse, beforeCollapse, important);
+ addProperty(CSSPropertyWebkitMarginBeforeCollapse, CSSPropertyWebkitMarginCollapse, beforeCollapse, important);
if (m_range.atEnd()) {
- addProperty(CSSPropertyWebkitMarginAfterCollapse, beforeCollapse, important);
+ addProperty(CSSPropertyWebkitMarginAfterCollapse, CSSPropertyWebkitMarginCollapse, beforeCollapse, important);
return true;
}
id = m_range.consumeIncludingWhitespace().id();
if (!CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyWebkitMarginAfterCollapse, id, m_context.mode()))
return false;
- addProperty(CSSPropertyWebkitMarginAfterCollapse, cssValuePool().createIdentifierValue(id), important);
+ addProperty(CSSPropertyWebkitMarginAfterCollapse, CSSPropertyWebkitMarginCollapse, cssValuePool().createIdentifierValue(id), important);
return true;
}
case CSSPropertyOverflow: {
@@ -4823,8 +4817,8 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
overflowXValue = cssValuePool().createIdentifierValue(CSSValueAuto);
else
overflowXValue = overflowYValue;
- addProperty(CSSPropertyOverflowX, overflowXValue, important);
- addProperty(CSSPropertyOverflowY, overflowYValue, important);
+ addProperty(CSSPropertyOverflowX, CSSPropertyOverflow, overflowXValue, important);
+ addProperty(CSSPropertyOverflowY, CSSPropertyOverflow, overflowYValue, important);
return true;
}
case CSSPropertyFont: {
@@ -4835,11 +4829,8 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
}
case CSSPropertyBorderSpacing:
return consumeBorderSpacing(important);
- case CSSPropertyColumns: {
- // TODO(rwlbuis): investigate if this shorthand hack can be removed.
- m_currentShorthand = oldShorthand;
+ case CSSPropertyColumns:
return consumeColumns(important);
- }
case CSSPropertyAnimation:
return consumeAnimationShorthand(animationShorthandForParsing(), unresolvedProperty == CSSPropertyAliasWebkitAnimation, important);
case CSSPropertyTransition:
@@ -4871,9 +4862,9 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
CSSValue* marker = parseSingleValue(CSSPropertyMarkerStart);
if (!marker || !m_range.atEnd())
return false;
- addProperty(CSSPropertyMarkerStart, marker, important);
- addProperty(CSSPropertyMarkerMid, marker, important);
- addProperty(CSSPropertyMarkerEnd, marker, important);
+ addProperty(CSSPropertyMarkerStart, CSSPropertyMarker, marker, important);
+ addProperty(CSSPropertyMarkerMid, CSSPropertyMarker, marker, important);
+ addProperty(CSSPropertyMarkerEnd, CSSPropertyMarker, marker, important);
return true;
}
case CSSPropertyFlex:
@@ -4889,10 +4880,10 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
CSSPrimitiveValue* verticalRadii[4] = { 0 };
if (!consumeRadii(horizontalRadii, verticalRadii, m_range, m_context.mode(), unresolvedProperty == CSSPropertyAliasWebkitBorderRadius))
return false;
- addProperty(CSSPropertyBorderTopLeftRadius, CSSValuePair::create(horizontalRadii[0], verticalRadii[0], CSSValuePair::DropIdenticalValues), important);
- addProperty(CSSPropertyBorderTopRightRadius, CSSValuePair::create(horizontalRadii[1], verticalRadii[1], CSSValuePair::DropIdenticalValues), important);
- addProperty(CSSPropertyBorderBottomRightRadius, CSSValuePair::create(horizontalRadii[2], verticalRadii[2], CSSValuePair::DropIdenticalValues), important);
- addProperty(CSSPropertyBorderBottomLeftRadius, CSSValuePair::create(horizontalRadii[3], verticalRadii[3], CSSValuePair::DropIdenticalValues), important);
+ addProperty(CSSPropertyBorderTopLeftRadius, CSSPropertyBorderRadius, CSSValuePair::create(horizontalRadii[0], verticalRadii[0], CSSValuePair::DropIdenticalValues), important);
+ addProperty(CSSPropertyBorderTopRightRadius, CSSPropertyBorderRadius, CSSValuePair::create(horizontalRadii[1], verticalRadii[1], CSSValuePair::DropIdenticalValues), important);
+ addProperty(CSSPropertyBorderBottomRightRadius, CSSPropertyBorderRadius, CSSValuePair::create(horizontalRadii[2], verticalRadii[2], CSSValuePair::DropIdenticalValues), important);
+ addProperty(CSSPropertyBorderBottomLeftRadius, CSSPropertyBorderRadius, CSSValuePair::create(horizontalRadii[3], verticalRadii[3], CSSValuePair::DropIdenticalValues), important);
return true;
}
case CSSPropertyBorderColor:
@@ -4927,8 +4918,8 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
CSSValue* resultY = nullptr;
if (!consumeBackgroundPosition(m_range, m_context, UnitlessQuirk::Allow, resultX, resultY) || !m_range.atEnd())
return false;
- addProperty(property == CSSPropertyBackgroundPosition ? CSSPropertyBackgroundPositionX : CSSPropertyWebkitMaskPositionX, resultX, important);
- addProperty(property == CSSPropertyBackgroundPosition ? CSSPropertyBackgroundPositionY : CSSPropertyWebkitMaskPositionY, resultY, important);
+ addProperty(property == CSSPropertyBackgroundPosition ? CSSPropertyBackgroundPositionX : CSSPropertyWebkitMaskPositionX, property, resultX, important);
+ addProperty(property == CSSPropertyBackgroundPosition ? CSSPropertyBackgroundPositionY : CSSPropertyWebkitMaskPositionY, property, resultY, important);
return true;
}
case CSSPropertyBackgroundRepeat:
@@ -4938,8 +4929,8 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
bool implicit = false;
if (!consumeRepeatStyle(m_range, resultX, resultY, implicit) || !m_range.atEnd())
return false;
- addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatX : CSSPropertyWebkitMaskRepeatX, resultX, important, implicit);
- addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatY : CSSPropertyWebkitMaskRepeatY, resultY, important, implicit);
+ addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatX : CSSPropertyWebkitMaskRepeatX, property, resultX, important, implicit);
+ addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatY : CSSPropertyWebkitMaskRepeatY, property, resultY, important, implicit);
return true;
}
case CSSPropertyBackground:
@@ -4954,8 +4945,8 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
return false;
if (!columnGap)
columnGap = rowGap;
- addProperty(CSSPropertyGridRowGap, rowGap, important);
- addProperty(CSSPropertyGridColumnGap, columnGap, important);
+ addProperty(CSSPropertyGridRowGap, CSSPropertyGridGap, rowGap, important);
+ addProperty(CSSPropertyGridColumnGap, CSSPropertyGridGap, columnGap, important);
return true;
}
case CSSPropertyGridColumn:
@@ -4964,11 +4955,10 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID unresolvedProperty, bool im
case CSSPropertyGridArea:
return consumeGridAreaShorthand(important);
case CSSPropertyGridTemplate:
- return consumeGridTemplateShorthand(important);
+ return consumeGridTemplateShorthand(CSSPropertyGridTemplate, important);
case CSSPropertyGrid:
return consumeGridShorthand(important);
default:
- m_currentShorthand = oldShorthand;
return false;
}
}
« no previous file with comments | « third_party/WebKit/Source/core/css/parser/CSSPropertyParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698