Index: Source/core/css/parser/CSSPropertyParser.cpp |
diff --git a/Source/core/css/parser/CSSPropertyParser.cpp b/Source/core/css/parser/CSSPropertyParser.cpp |
index c08de7d021308cc4de4dfd5b3b44859e161b0be6..4afe6181b522211c528a5b4a816e87a169adf5ac 100644 |
--- a/Source/core/css/parser/CSSPropertyParser.cpp |
+++ b/Source/core/css/parser/CSSPropertyParser.cpp |
@@ -98,18 +98,18 @@ CSSPropertyParser::CSSPropertyParser(CSSParserValueList* valueList, |
{ |
} |
-bool CSSPropertyParser::parseValue(CSSPropertyID property, bool important, |
+bool CSSPropertyParser::parseValue(CSSPropertyID unresolvedProperty, bool important, |
CSSParserValueList* valueList, const CSSParserContext& context, bool inViewport, |
WillBeHeapVector<CSSProperty, 256>& parsedProperties, StyleRule::Type ruleType) |
{ |
int parsedPropertiesSize = parsedProperties.size(); |
CSSPropertyParser parser(valueList, context, inViewport, parsedProperties, ruleType); |
- bool parseSuccess = parser.parseValue(property, important); |
+ bool parseSuccess = parser.parseValue(unresolvedProperty, important); |
// This doesn't count UA style sheets |
if (parseSuccess && context.useCounter()) |
- context.useCounter()->count(context, property); |
+ context.useCounter()->count(context, unresolvedProperty); |
if (!parseSuccess) |
parser.rollbackLastProperties(parsedProperties.size() - parsedPropertiesSize); |
@@ -138,6 +138,8 @@ void CSSPropertyParser::addPropertyWithPrefixingVariant(CSSPropertyID propId, Pa |
void CSSPropertyParser::addProperty(CSSPropertyID propId, PassRefPtrWillBeRawPtr<CSSValue> value, bool important, bool implicit) |
{ |
+ ASSERT(!isPropertyAlias(propId)); |
+ |
int shorthandIndex = 0; |
bool setFromShorthand = false; |
@@ -422,8 +424,10 @@ void CSSPropertyParser::addExpandedPropertyForValue(CSSPropertyID propId, PassRe |
addPropertyWithPrefixingVariant(longhands[i], value, important); |
} |
-bool CSSPropertyParser::parseValue(CSSPropertyID propId, bool important) |
+bool CSSPropertyParser::parseValue(CSSPropertyID unresolvedProperty, bool important) |
{ |
+ CSSPropertyID propId = resolveCSSPropertyID(unresolvedProperty); |
+ |
if (!m_valueList) |
return false; |
@@ -3018,7 +3022,7 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseAnimationProperty() |
// cssPropertyID check. |
if (value->id == CSSValueAll) |
return cssValuePool().createIdentifierValue(CSSValueAll); |
- CSSPropertyID property = cssPropertyID(value->string); |
+ CSSPropertyID property = unresolvedCSSPropertyID(value->string); |
if (property) { |
ASSERT(CSSPropertyMetadata::isEnabledProperty(property)); |
return cssValuePool().createIdentifierValue(property); |
@@ -7163,14 +7167,14 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseWillChange() |
if (!currentValue || currentValue->unit != CSSPrimitiveValue::CSS_IDENT) |
return nullptr; |
- CSSPropertyID property = cssPropertyID(currentValue->string); |
- if (property) { |
- ASSERT(CSSPropertyMetadata::isEnabledProperty(property)); |
+ CSSPropertyID unresolvedProperty = unresolvedCSSPropertyID(currentValue->string); |
+ if (unresolvedProperty) { |
+ ASSERT(CSSPropertyMetadata::isEnabledProperty(unresolvedProperty)); |
// Now "all" is used by both CSSValue and CSSPropertyValue. |
// Need to return nullptr when currentValue is CSSPropertyAll. |
- if (property == CSSPropertyWillChange || property == CSSPropertyAll) |
+ if (unresolvedProperty == CSSPropertyWillChange || unresolvedProperty == CSSPropertyAll) |
return nullptr; |
- values->append(cssValuePool().createIdentifierValue(property)); |
+ values->append(cssValuePool().createIdentifierValue(unresolvedProperty)); |
} else { |
switch (currentValue->id) { |
case CSSValueNone: |
@@ -7809,7 +7813,7 @@ bool CSSPropertyParser::parseViewportShorthand(CSSPropertyID propId, CSSProperty |
} |
template <typename CharacterType> |
-static CSSPropertyID cssPropertyID(const CharacterType* propertyName, unsigned length) |
+static CSSPropertyID unresolvedCSSPropertyID(const CharacterType* propertyName, unsigned length) |
{ |
char buffer[maxCSSPropertyNameLength + 1]; // 1 for null character |
@@ -7831,7 +7835,7 @@ static CSSPropertyID cssPropertyID(const CharacterType* propertyName, unsigned l |
return property; |
} |
-CSSPropertyID cssPropertyID(const String& string) |
+CSSPropertyID unresolvedCSSPropertyID(const String& string) |
{ |
unsigned length = string.length(); |
@@ -7840,10 +7844,15 @@ CSSPropertyID cssPropertyID(const String& string) |
if (length > maxCSSPropertyNameLength) |
return CSSPropertyInvalid; |
- return string.is8Bit() ? cssPropertyID(string.characters8(), length) : cssPropertyID(string.characters16(), length); |
+ return string.is8Bit() ? unresolvedCSSPropertyID(string.characters8(), length) : unresolvedCSSPropertyID(string.characters16(), length); |
+} |
+ |
+CSSPropertyID cssPropertyID(const String& string) |
+{ |
+ return resolveCSSPropertyID(unresolvedCSSPropertyID(string)); |
} |
-CSSPropertyID cssPropertyID(const CSSParserString& string) |
+CSSPropertyID unresolvedCSSPropertyID(const CSSParserString& string) |
{ |
unsigned length = string.length(); |
@@ -7852,7 +7861,7 @@ CSSPropertyID cssPropertyID(const CSSParserString& string) |
if (length > maxCSSPropertyNameLength) |
return CSSPropertyInvalid; |
- return string.is8Bit() ? cssPropertyID(string.characters8(), length) : cssPropertyID(string.characters16(), length); |
+ return string.is8Bit() ? unresolvedCSSPropertyID(string.characters8(), length) : unresolvedCSSPropertyID(string.characters16(), length); |
} |
template <typename CharacterType> |