| 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:
|
|
|