Index: Source/core/css/resolver/StyleBuilderConverter.cpp |
diff --git a/Source/core/css/resolver/StyleBuilderConverter.cpp b/Source/core/css/resolver/StyleBuilderConverter.cpp |
index 8e021457848d853f074b7124282e04f8c885871c..dc0e860e0ea46be1be872ffd0bff35c3472e7634 100644 |
--- a/Source/core/css/resolver/StyleBuilderConverter.cpp |
+++ b/Source/core/css/resolver/StyleBuilderConverter.cpp |
@@ -585,6 +585,27 @@ float StyleBuilderConverter::convertNumberOrPercentage(StyleResolverState& state |
return primitiveValue->getFloatValue() / 100.0f; |
} |
+static float convertPerspectiveLength(StyleResolverState& state, CSSPrimitiveValue* primitiveValue) |
+{ |
+ return std::max(primitiveValue->computeLength<float>(state.cssToLengthConversionData()), 0.0f); |
+} |
+ |
+float StyleBuilderConverter::convertPerspective(StyleResolverState& state, CSSValue* value) |
+{ |
+ CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
+ |
+ if (primitiveValue->getValueID() == CSSValueNone) |
+ return RenderStyle::initialPerspective(); |
+ |
+ // CSSPropertyWebkitPerspective accepts unitless numbers. |
+ if (primitiveValue->isNumber()) { |
+ RefPtr<CSSPrimitiveValue> px = CSSPrimitiveValue::create(primitiveValue->getDoubleValue(), CSSPrimitiveValue::CSS_PX); |
+ return convertPerspectiveLength(state, px.get()); |
+ } |
+ |
+ return convertPerspectiveLength(state, primitiveValue); |
+} |
+ |
EPaintOrder StyleBuilderConverter::convertPaintOrder(StyleResolverState&, CSSValue* cssPaintOrder) |
{ |
if (cssPaintOrder->isValueList()) { |