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

Unified Diff: Source/core/css/StylePropertyShorthandCustom.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/StylePropertyShorthandCustom.cpp
diff --git a/Source/core/css/StylePropertyShorthandCustom.cpp b/Source/core/css/StylePropertyShorthandCustom.cpp
index e49efe5739f45dbec11ebe3de580dfa6d11d97ff..1e6e628c34091ae91ad949e11eaae9bf4363638b 100644
--- a/Source/core/css/StylePropertyShorthandCustom.cpp
+++ b/Source/core/css/StylePropertyShorthandCustom.cpp
@@ -36,6 +36,30 @@ const StylePropertyShorthand& borderShorthandForParsing()
return borderForParsingLonghands;
}
+const StylePropertyShorthand& animationShorthandForParsing()
+{
+ // When we parse the animation shorthand we need to look for animation-name
+ // last because otherwise it might match against the keywords for fill mode,
+ // timing functions and infinite iteration. This means that animation names
+ // that are the same as keywords (e.g. 'forwards') won't always match in the
+ // shorthand. In that case the authors should be using longhands (or
+ // reconsidering their approach). This is covered by the animations spec
+ // bug: https://www.w3.org/Bugs/Public/show_bug.cgi?id=14790
+ // And in the spec (editor's draft) at:
+ // http://dev.w3.org/csswg/css3-animations/#animation-shorthand-property
+ static const CSSPropertyID animationPropertiesForParsing[] = {
+ CSSPropertyAnimationDuration,
+ CSSPropertyAnimationTimingFunction,
+ CSSPropertyAnimationDelay,
+ CSSPropertyAnimationIterationCount,
+ CSSPropertyAnimationDirection,
+ CSSPropertyAnimationFillMode,
+ CSSPropertyAnimationName
+ };
+ DEFINE_STATIC_LOCAL(StylePropertyShorthand, webkitAnimationLonghandsForParsing, (CSSPropertyAnimation, animationPropertiesForParsing, WTF_ARRAY_LENGTH(animationPropertiesForParsing)));
+ return webkitAnimationLonghandsForParsing;
+}
+
const StylePropertyShorthand& webkitAnimationShorthandForParsing()
{
// When we parse the animation shorthand we need to look for animation-name
@@ -60,6 +84,21 @@ const StylePropertyShorthand& webkitAnimationShorthandForParsing()
return webkitAnimationLonghandsForParsing;
}
+// Returns an empty list if the property is not a shorthand, otherwise the list of longhands for parsing.
+const StylePropertyShorthand& parsingShorthandForProperty(CSSPropertyID propertyID)
eseidel 2013/08/13 17:49:15 I'm confused by this new wrapper around shorthandF
darktears 2013/08/13 18:08:54 No. When we parse the shorthand properties we star
+{
+ switch (propertyID) {
+ case CSSPropertyAnimation:
+ return animationShorthandForParsing();
+ case CSSPropertyBorder:
+ return borderShorthandForParsing();
+ case CSSPropertyWebkitAnimation:
+ return webkitAnimationShorthandForParsing();
+ default:
+ return shorthandForProperty(propertyID);
+ }
+}
+
bool isExpandedShorthand(CSSPropertyID id)
{
// The system fonts bypass the normal style resolution by using RenderTheme,

Powered by Google App Engine
This is Rietveld 408576698