| Index: third_party/WebKit/Source/core/animation/CSSInterpolationType.cpp
|
| diff --git a/third_party/WebKit/Source/core/animation/CSSInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSInterpolationType.cpp
|
| index 745e456e152cf071dc2c6be7b1ed04ffd74aeea4..67d09d114977f14bf53f895fb985152f753a3ab7 100644
|
| --- a/third_party/WebKit/Source/core/animation/CSSInterpolationType.cpp
|
| +++ b/third_party/WebKit/Source/core/animation/CSSInterpolationType.cpp
|
| @@ -17,13 +17,13 @@ namespace blink {
|
|
|
| class ResolvedVariableChecker : public InterpolationType::ConversionChecker {
|
| public:
|
| - static std::unique_ptr<ResolvedVariableChecker> create(CSSPropertyID property, const CSSVariableReferenceValue* variableReference, const CSSValue* resolvedValue)
|
| + static std::unique_ptr<ResolvedVariableChecker> create(CSSPropertyID property, const CSSValue* variableReference, const CSSValue* resolvedValue)
|
| {
|
| return wrapUnique(new ResolvedVariableChecker(property, variableReference, resolvedValue));
|
| }
|
|
|
| private:
|
| - ResolvedVariableChecker(CSSPropertyID property, const CSSVariableReferenceValue* variableReference, const CSSValue* resolvedValue)
|
| + ResolvedVariableChecker(CSSPropertyID property, const CSSValue* variableReference, const CSSValue* resolvedValue)
|
| : m_property(property)
|
| , m_variableReference(variableReference)
|
| , m_resolvedValue(resolvedValue)
|
| @@ -37,10 +37,16 @@ private:
|
| }
|
|
|
| CSSPropertyID m_property;
|
| - Persistent<const CSSVariableReferenceValue> m_variableReference;
|
| + Persistent<const CSSValue> m_variableReference;
|
| Persistent<const CSSValue> m_resolvedValue;
|
| };
|
|
|
| +CSSInterpolationType::CSSInterpolationType(CSSPropertyID property)
|
| + : InterpolationType(PropertyHandle(property))
|
| +{
|
| + DCHECK(!isShorthandProperty(cssProperty()));
|
| +}
|
| +
|
| InterpolationValue CSSInterpolationType::maybeConvertSingle(const PropertySpecificKeyframe& keyframe, const InterpolationEnvironment& environment, const InterpolationValue& underlying, ConversionCheckers& conversionCheckers) const
|
| {
|
| const CSSValue* resolvedCSSValueOwner;
|
| @@ -49,13 +55,9 @@ InterpolationValue CSSInterpolationType::maybeConvertSingle(const PropertySpecif
|
| if (!value)
|
| return maybeConvertNeutral(underlying, conversionCheckers);
|
|
|
| - // TODO(alancutter): Support animation of var() in shorthand properties.
|
| - if (value->isPendingSubstitutionValue())
|
| - return nullptr;
|
| -
|
| - if (value->isVariableReferenceValue() && !isShorthandProperty(cssProperty())) {
|
| - resolvedCSSValueOwner = CSSVariableResolver::resolveVariableReferences(environment.state(), cssProperty(), toCSSVariableReferenceValue(*value));
|
| - conversionCheckers.append(ResolvedVariableChecker::create(cssProperty(), toCSSVariableReferenceValue(value), resolvedCSSValueOwner));
|
| + if (value->isVariableReferenceValue() || value->isPendingSubstitutionValue()) {
|
| + resolvedCSSValueOwner = CSSVariableResolver::resolveVariableReferences(environment.state(), cssProperty(), *value);
|
| + conversionCheckers.append(ResolvedVariableChecker::create(cssProperty(), value, resolvedCSSValueOwner));
|
| value = resolvedCSSValueOwner;
|
| }
|
|
|
|
|