PassOwnPtr<InterpolationValue> CSSLengthInterpolationType::maybeConvertValue(const CSSValue& value, const StyleResolverState&, ConversionCheckers& conversionCheckers) const
{
    if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).isValueID()) {
        CSSValueID valueID = toCSSPrimitiveValue(value).getValueID();
        double pixels;
        if (!LengthPropertyFunctions::getPixelsForKeyword(cssProperty(), valueID, pixels))
            return nullptr;
        return InterpolationValue::create(*this, createInterpolablePixels(pixels));
    }

    InterpolationComponent component = maybeConvertCSSValue(value);
    if (!component)
        return nullptr;
    return InterpolationValue::create(*this, component);
}
InterpolationValue CSSImageInterpolationType::maybeConvertStyleImage(
    const StyleImage& styleImage,
    bool acceptGradients) {
  return maybeConvertCSSValue(*styleImage.cssValue(), acceptGradients);
}
InterpolationValue CSSImageInterpolationType::maybeConvertValue(
    const CSSValue& value,
    const StyleResolverState&,
    ConversionCheckers&) const {
  return maybeConvertCSSValue(value, true);
}