Chromium Code Reviews| Index: Source/core/css/CSSParser-in.cpp |
| diff --git a/Source/core/css/CSSParser-in.cpp b/Source/core/css/CSSParser-in.cpp |
| index 0e45c5c3823153039f0374dbb2109765b02dd9b1..d4ca634605c5574a5aaef330eb48c4512e3ea0a2 100644 |
| --- a/Source/core/css/CSSParser-in.cpp |
| +++ b/Source/core/css/CSSParser-in.cpp |
| @@ -2402,6 +2402,16 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) |
| } |
| return false; |
| } |
| + case CSSPropertyAnimationDelay: |
| + case CSSPropertyAnimationDirection: |
| + case CSSPropertyAnimationDuration: |
| + case CSSPropertyAnimationFillMode: |
| + case CSSPropertyAnimationName: |
| + case CSSPropertyAnimationPlayState: |
| + case CSSPropertyAnimationIterationCount: |
| + case CSSPropertyAnimationTimingFunction: |
| + if (!RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled()) |
| + break; |
| case CSSPropertyWebkitAnimationDelay: |
| case CSSPropertyWebkitAnimationDirection: |
| case CSSPropertyWebkitAnimationDuration: |
| @@ -2593,7 +2603,7 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) |
| case CSSPropertyBorder: |
| // [ 'border-width' || 'border-style' || <color> ] | inherit |
| { |
| - if (parseShorthand(propId, borderShorthandForParsing(), important)) { |
| + if (parseShorthand(propId, parsingShorthandForProperty(CSSPropertyBorder), important)) { |
| // The CSS3 Borders and Backgrounds specification says that border also resets border-image. It's as |
| // though a value of none was specified for the image. |
| addExpandedPropertyForValue(CSSPropertyBorderImage, cssValuePool().createImplicitInitialValue(), important); |
| @@ -2657,8 +2667,11 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) |
| return parseShorthand(propId, webkitColumnRuleShorthand(), important); |
| case CSSPropertyWebkitTextStroke: |
| return parseShorthand(propId, webkitTextStrokeShorthand(), important); |
| + case CSSPropertyAnimation: |
| + if (!RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled()) |
| + break; |
| case CSSPropertyWebkitAnimation: |
| - return parseAnimationShorthand(important); |
| + return parseAnimationShorthand(propId, important); |
| case CSSPropertyTransition: |
| case CSSPropertyWebkitTransition: |
| return parseTransitionShorthand(propId, important); |
| @@ -3073,18 +3086,18 @@ void CSSParser::addAnimationValue(RefPtr<CSSValue>& lval, PassRefPtr<CSSValue> r |
| lval = rval; |
| } |
| -bool CSSParser::parseAnimationShorthand(bool important) |
| +bool CSSParser::parseAnimationShorthand(CSSPropertyID propId, bool important) |
| { |
| - const StylePropertyShorthand& animationProperties = webkitAnimationShorthandForParsing(); |
| + const StylePropertyShorthand& animationProperties = parsingShorthandForProperty(propId); |
| const unsigned numProperties = 7; |
| // The list of properties in the shorthand should be the same |
| // length as the list with animation name in last position, even though they are |
| // in a different order. |
| - ASSERT(numProperties == webkitAnimationShorthandForParsing().length()); |
| - ASSERT(numProperties == webkitAnimationShorthand().length()); |
| + ASSERT(numProperties == animationProperties.length()); |
| + ASSERT(numProperties == shorthandForProperty(propId).length()); |
| - ShorthandScope scope(this, CSSPropertyWebkitAnimation); |
| + ShorthandScope scope(this, propId); |
| bool parsedProperty[numProperties] = { false }; |
| AnimationParseContext context; |
| @@ -4450,6 +4463,7 @@ bool CSSParser::parseAnimationProperty(CSSPropertyID propId, RefPtr<CSSValue>& r |
| } |
| else { |
| switch (propId) { |
| + case CSSPropertyAnimationDelay: |
| case CSSPropertyWebkitAnimationDelay: |
| case CSSPropertyTransitionDelay: |
| case CSSPropertyWebkitTransitionDelay: |
| @@ -4457,11 +4471,13 @@ bool CSSParser::parseAnimationProperty(CSSPropertyID propId, RefPtr<CSSValue>& r |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationDirection: |
| case CSSPropertyWebkitAnimationDirection: |
| currValue = parseAnimationDirection(); |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationDuration: |
| case CSSPropertyWebkitAnimationDuration: |
| case CSSPropertyTransitionDuration: |
| case CSSPropertyWebkitTransitionDuration: |
| @@ -4469,21 +4485,25 @@ bool CSSParser::parseAnimationProperty(CSSPropertyID propId, RefPtr<CSSValue>& r |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationFillMode: |
|
eseidel
2013/08/13 17:49:15
Are the expected implementations of these really i
darktears
2013/08/13 18:08:54
The parsing should be the same. And the tests adde
|
| case CSSPropertyWebkitAnimationFillMode: |
| currValue = parseAnimationFillMode(); |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationIterationCount: |
| case CSSPropertyWebkitAnimationIterationCount: |
| currValue = parseAnimationIterationCount(); |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationName: |
| case CSSPropertyWebkitAnimationName: |
| currValue = parseAnimationName(); |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationPlayState: |
| case CSSPropertyWebkitAnimationPlayState: |
| currValue = parseAnimationPlayState(); |
| if (currValue) |
| @@ -4497,6 +4517,7 @@ bool CSSParser::parseAnimationProperty(CSSPropertyID propId, RefPtr<CSSValue>& r |
| if (currValue) |
| m_valueList->next(); |
| break; |
| + case CSSPropertyAnimationTimingFunction: |
| case CSSPropertyWebkitAnimationTimingFunction: |
| case CSSPropertyTransitionTimingFunction: |
| case CSSPropertyWebkitTransitionTimingFunction: |
| @@ -10205,7 +10226,7 @@ inline void CSSParser::detectAtToken(int length, bool hasEscape) |
| --length; |
| // charset, font-face, import, media, namespace, page, supports, |
| - // -webkit-keyframes, and -webkit-mediaquery are not affected by hasEscape. |
| + // -webkit-keyframes, keyframes, and -webkit-mediaquery are not affected by hasEscape. |
| SWITCH(name, length) { |
| CASE("bottom-left") { |
| if (LIKELY(!hasEscape)) |
| @@ -10241,6 +10262,9 @@ inline void CSSParser::detectAtToken(int length, bool hasEscape) |
| m_parsingMode = MediaQueryMode; |
| m_token = IMPORT_SYM; |
| } |
| + CASE("keyframes") { |
| + m_token = WEBKIT_KEYFRAMES_SYM; |
| + } |
| CASE("left-top") { |
| if (LIKELY(!hasEscape)) |
| m_token = LEFTTOP_SYM; |