Index: third_party/WebKit/Source/core/animation/css/CSSAnimatableValueFactory.cpp |
diff --git a/third_party/WebKit/Source/core/animation/css/CSSAnimatableValueFactory.cpp b/third_party/WebKit/Source/core/animation/css/CSSAnimatableValueFactory.cpp |
index ba3123742528399760a0cabb31a5984300acb197..c81915678d283b91e3fe5007d3d52546a153c560 100644 |
--- a/third_party/WebKit/Source/core/animation/css/CSSAnimatableValueFactory.cpp |
+++ b/third_party/WebKit/Source/core/animation/css/CSSAnimatableValueFactory.cpp |
@@ -32,6 +32,7 @@ |
#include "core/CSSValueKeywords.h" |
#include "core/animation/LengthPropertyFunctions.h" |
+#include "core/animation/PropertyHandle.h" |
#include "core/animation/animatable/AnimatableClipPathOperation.h" |
#include "core/animation/animatable/AnimatableColor.h" |
#include "core/animation/animatable/AnimatableDouble.h" |
@@ -346,12 +347,18 @@ static SVGPaintType normalizeSVGPaintType(SVGPaintType paintType) { |
} |
PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
- CSSPropertyID property, |
+ const PropertyHandle& property, |
const ComputedStyle& style) { |
- DCHECK(CSSPropertyMetadata::isInterpolableProperty(property)); |
- switch (property) { |
+ if (property.isCSSCustomProperty()) { |
+ return AnimatableUnknown::create( |
+ style.getRegisteredVariable(property.customPropertyName())); |
+ } |
+ |
+ CSSPropertyID propertyID = property.cssProperty(); |
+ DCHECK(CSSPropertyMetadata::isInterpolableProperty(propertyID)); |
+ switch (propertyID) { |
case CSSPropertyBackgroundColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyBackgroundImage: |
return createFromFillLayers<CSSPropertyBackgroundImage>( |
style.backgroundLayers(), style); |
@@ -376,13 +383,13 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
return createFromLength(style.baselineShiftValue(), style); |
} |
case CSSPropertyBorderBottomColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyBorderBottomLeftRadius: |
return createFromLengthSize(style.borderBottomLeftRadius(), style); |
case CSSPropertyBorderBottomRightRadius: |
return createFromLengthSize(style.borderBottomRightRadius(), style); |
case CSSPropertyBorderBottomWidth: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyBorderImageOutset: |
return createFromBorderImageLengthBox(style.borderImageOutset(), style); |
case CSSPropertyBorderImageSlice: |
@@ -393,21 +400,21 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyBorderImageWidth: |
return createFromBorderImageLengthBox(style.borderImageWidth(), style); |
case CSSPropertyBorderLeftColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyBorderLeftWidth: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyBorderRightColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyBorderRightWidth: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyBorderTopColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyBorderTopLeftRadius: |
return createFromLengthSize(style.borderTopLeftRadius(), style); |
case CSSPropertyBorderTopRightRadius: |
return createFromLengthSize(style.borderTopRightRadius(), style); |
case CSSPropertyBorderTopWidth: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyBottom: |
return createFromLength(style.bottom(), style); |
case CSSPropertyBoxShadow: |
@@ -423,9 +430,9 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
return AnimatableUnknown::create( |
CSSIdentifierValue::create(CSSValueAuto)); |
} |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyFillOpacity: |
return createFromDouble(style.fillOpacity()); |
case CSSPropertyFill: |
@@ -443,7 +450,7 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyFlexBasis: |
return createFromLength(style.flexBasis(), style); |
case CSSPropertyFloodColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyFloodOpacity: |
return createFromDouble(style.floodOpacity()); |
case CSSPropertyFontSize: |
@@ -465,13 +472,13 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyHeight: |
return createFromLength(style.height(), style); |
case CSSPropertyLightingColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyListStyleImage: |
return createFromStyleImage(style.listStyleImage()); |
case CSSPropertyLeft: |
return createFromLength(style.left(), style); |
case CSSPropertyLetterSpacing: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyLineHeight: |
return createFromLineHeight(style.specifiedLineHeight(), style); |
case CSSPropertyMarginBottom: |
@@ -499,11 +506,11 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyOrphans: |
return createFromDouble(style.orphans()); |
case CSSPropertyOutlineColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyOutlineOffset: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyOutlineWidth: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyPaddingBottom: |
return createFromLength(style.paddingBottom(), style); |
case CSSPropertyPaddingLeft: |
@@ -517,7 +524,7 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyStrokeWidth: |
return createFromUnzoomedLength(style.strokeWidth()); |
case CSSPropertyStopColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyStopOpacity: |
return createFromDouble(style.stopOpacity()); |
case CSSPropertyStrokeDasharray: |
@@ -538,7 +545,7 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
style.svgStyle().strokePaintUri(), |
style.svgStyle().visitedLinkStrokePaintUri()); |
case CSSPropertyTextDecorationColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyTextIndent: |
return createFromLength(style.textIndent(), style); |
case CSSPropertyTextShadow: |
@@ -546,9 +553,9 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyTop: |
return createFromLength(style.top(), style); |
case CSSPropertyWebkitBorderHorizontalSpacing: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyWebkitBorderVerticalSpacing: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyClipPath: |
if (ClipPathOperation* operation = style.clipPath()) |
return AnimatableClipPathOperation::create(operation); |
@@ -558,15 +565,15 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
return AnimatableUnknown::create(CSSValueAuto); |
return createFromDouble(style.columnCount()); |
case CSSPropertyColumnGap: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyColumnRuleColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyColumnRuleWidth: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyColumnWidth: |
if (style.hasAutoColumnWidth()) |
return AnimatableUnknown::create(CSSValueAuto); |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyFilter: |
return AnimatableFilterOperations::create(style.filter()); |
case CSSPropertyBackdropFilter: |
@@ -597,7 +604,7 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
return AnimatableUnknown::create( |
CSSIdentifierValue::create(CSSValueNone)); |
} |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyPerspectiveOrigin: |
return createFromLengthPoint(style.perspectiveOrigin(), style); |
case CSSPropertyShapeOutside: |
@@ -607,7 +614,7 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyShapeImageThreshold: |
return createFromDouble(style.shapeImageThreshold()); |
case CSSPropertyWebkitTextStrokeColor: |
- return createFromColor(property, style); |
+ return createFromColor(propertyID, style); |
case CSSPropertyTransform: |
return AnimatableTransform::create(style.transform(), |
style.effectiveZoom()); |
@@ -645,13 +652,13 @@ PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create( |
case CSSPropertyWebkitTransformOriginY: |
return createFromLength(style.transformOriginY(), style); |
case CSSPropertyWebkitTransformOriginZ: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyWidows: |
return createFromDouble(style.widows()); |
case CSSPropertyWidth: |
return createFromLength(style.width(), style); |
case CSSPropertyWordSpacing: |
- return createFromPropertyLength(property, style); |
+ return createFromPropertyLength(propertyID, style); |
case CSSPropertyVerticalAlign: |
if (style.verticalAlign() == EVerticalAlign::kLength) |
return createFromLength(style.getVerticalAlignLength(), style); |