Index: Source/core/css/resolver/StyleBuilderCustom.cpp |
diff --git a/Source/core/css/resolver/StyleBuilderCustom.cpp b/Source/core/css/resolver/StyleBuilderCustom.cpp |
index abc015888967320ea16f4f806601a9f15007b9d5..13d4ff7fb38b0d8641ff3bb862e3bd857b36cab7 100644 |
--- a/Source/core/css/resolver/StyleBuilderCustom.cpp |
+++ b/Source/core/css/resolver/StyleBuilderCustom.cpp |
@@ -642,6 +642,61 @@ void StyleBuilderFunctions::applyValueCSSPropertyTransformOrigin(StyleResolverSt |
state.style()->setTransformOriginZ(StyleBuilderConverter::convertComputedLength<float>(state, primitiveValue)); |
} |
+void StyleBuilderFunctions::applyInitialCSSPropertyPerspectiveOrigin(StyleResolverState& state) |
+{ |
+ applyInitialCSSPropertyWebkitPerspectiveOriginX(state); |
+ applyInitialCSSPropertyWebkitPerspectiveOriginY(state); |
+} |
+ |
+void StyleBuilderFunctions::applyInheritCSSPropertyPerspectiveOrigin(StyleResolverState& state) |
+{ |
+ applyInheritCSSPropertyWebkitPerspectiveOriginX(state); |
+ applyInheritCSSPropertyWebkitPerspectiveOriginY(state); |
+} |
+ |
+void StyleBuilderFunctions::applyValueCSSPropertyPerspectiveOrigin(StyleResolverState& state, CSSValue* value) |
+{ |
+ CSSValueList* list = toCSSValueList(value); |
+ ASSERT(list->length() == 2); |
+ CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(list->item(0)); |
+ if (primitiveValue->isValueID()) { |
+ switch (primitiveValue->getValueID()) { |
+ case CSSValueLeft: |
+ state.style()->setPerspectiveOriginX(Length(0, Percent)); |
+ break; |
+ case CSSValueRight: |
+ state.style()->setPerspectiveOriginX(Length(100, Percent)); |
+ break; |
+ case CSSValueCenter: |
+ state.style()->setPerspectiveOriginX(Length(50, Percent)); |
+ break; |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ } |
+ } else { |
+ state.style()->setPerspectiveOriginX(StyleBuilderConverter::convertLength(state, primitiveValue)); |
+ } |
+ |
+ primitiveValue = toCSSPrimitiveValue(list->item(1)); |
+ if (primitiveValue->isValueID()) { |
+ switch (primitiveValue->getValueID()) { |
+ case CSSValueTop: |
+ state.style()->setPerspectiveOriginY(Length(0, Percent)); |
+ break; |
+ case CSSValueBottom: |
+ state.style()->setPerspectiveOriginY(Length(100, Percent)); |
+ break; |
+ case CSSValueCenter: |
+ state.style()->setPerspectiveOriginY(Length(50, Percent)); |
+ break; |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ } |
+ } else { |
+ state.style()->setPerspectiveOriginY(StyleBuilderConverter::convertLength(state, primitiveValue)); |
+ } |
+} |
+ |
void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverState& state, CSSValue* value) |
{ |
if (!value->isPrimitiveValue()) |
@@ -1802,9 +1857,6 @@ void StyleBuilder::oldApplyProperty(CSSPropertyID id, StyleResolverState& state, |
return; |
} |
- // FIXME: crbug.com/154772 Unimplemented css-transforms properties |
- case CSSPropertyPerspectiveOrigin: |
- return; |
// These properties are aliased and we already applied the property on the prefixed version. |
case CSSPropertyAnimationDelay: |
case CSSPropertyAnimationDirection: |
@@ -2009,6 +2061,7 @@ void StyleBuilder::oldApplyProperty(CSSPropertyID id, StyleResolverState& state, |
case CSSPropertyWebkitMaskRepeatX: |
case CSSPropertyWebkitMaskRepeatY: |
case CSSPropertyWebkitMaskSize: |
+ case CSSPropertyPerspectiveOrigin: |
case CSSPropertyWebkitPerspectiveOrigin: |
case CSSPropertyWebkitPerspectiveOriginX: |
case CSSPropertyWebkitPerspectiveOriginY: |