Index: third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp |
diff --git a/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp |
index f768f748a3cf0b65fcdc058ea2e847feb6e6ffc3..4bb7e9d2e8dc4c8b69f4d126c0fec824a7c5db6e 100644 |
--- a/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp |
+++ b/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp |
@@ -33,10 +33,10 @@ struct SideNumbers { |
} |
explicit SideNumbers(const CSSQuadValue& quad) |
{ |
- isNumber[SideTop] = quad.top()->isNumber(); |
- isNumber[SideRight] = quad.right()->isNumber(); |
- isNumber[SideBottom] = quad.bottom()->isNumber(); |
- isNumber[SideLeft] = quad.left()->isNumber(); |
+ isNumber[SideTop] = quad.top()->isPrimitiveValue() && toCSSPrimitiveValue(quad.top())->isNumber(); |
+ isNumber[SideRight] = quad.right()->isPrimitiveValue() && toCSSPrimitiveValue(quad.right())->isNumber(); |
+ isNumber[SideBottom] = quad.bottom()->isPrimitiveValue() && toCSSPrimitiveValue(quad.bottom())->isNumber(); |
+ isNumber[SideLeft] = quad.left()->isPrimitiveValue() && toCSSPrimitiveValue(quad.left())->isNumber(); |
} |
bool operator==(const SideNumbers& other) const |
@@ -195,16 +195,16 @@ InterpolationValue CSSBorderImageLengthBoxInterpolationType::maybeConvertValue(c |
const CSSQuadValue& quad = toCSSQuadValue(value); |
std::unique_ptr<InterpolableList> list = InterpolableList::create(SideIndexCount); |
Vector<RefPtr<NonInterpolableValue>> nonInterpolableValues(SideIndexCount); |
- const CSSPrimitiveValue* sides[SideIndexCount] = {}; |
+ const CSSValue* sides[SideIndexCount] = {}; |
sides[SideTop] = quad.top(); |
sides[SideRight] = quad.right(); |
sides[SideBottom] = quad.bottom(); |
sides[SideLeft] = quad.left(); |
for (size_t i = 0; i < SideIndexCount; i++) { |
- const CSSPrimitiveValue& side = *sides[i]; |
- if (side.isNumber()) { |
- list->set(i, InterpolableNumber::create(side.getDoubleValue())); |
+ const CSSValue& side = *sides[i]; |
+ if (side.isPrimitiveValue() && toCSSPrimitiveValue(side).isNumber()) { |
+ list->set(i, InterpolableNumber::create(toCSSPrimitiveValue(side).getDoubleValue())); |
} else { |
InterpolationValue convertedSide = LengthInterpolationFunctions::maybeConvertCSSValue(side); |
if (!convertedSide) |