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

Unified Diff: Source/core/css/CSSParser-in.cpp

Issue 22925002: Add support to resolve unprefixed CSS animations properties. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 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/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;

Powered by Google App Engine
This is Rietveld 408576698