| Index: Source/core/css/resolver/StyleBuilderCustom.cpp
|
| diff --git a/Source/core/css/resolver/StyleBuilderCustom.cpp b/Source/core/css/resolver/StyleBuilderCustom.cpp
|
| index 38acc92c7338c0e509ed99a7651fdb5128b9248a..dbe6edae577432fb350530f2986ca73073114e90 100644
|
| --- a/Source/core/css/resolver/StyleBuilderCustom.cpp
|
| +++ b/Source/core/css/resolver/StyleBuilderCustom.cpp
|
| @@ -582,6 +582,66 @@ void StyleBuilderFunctions::applyValueCSSPropertyTextIndent(StyleResolverState&
|
| state.style()->setTextIndentLine(TextIndentFirstLine);
|
| }
|
|
|
| +void StyleBuilderFunctions::applyInitialCSSPropertyTransformOrigin(StyleResolverState& state)
|
| +{
|
| + applyInitialCSSPropertyWebkitTransformOriginX(state);
|
| + applyInitialCSSPropertyWebkitTransformOriginY(state);
|
| + applyInitialCSSPropertyWebkitTransformOriginZ(state);
|
| +}
|
| +
|
| +void StyleBuilderFunctions::applyInheritCSSPropertyTransformOrigin(StyleResolverState& state)
|
| +{
|
| + applyInheritCSSPropertyWebkitTransformOriginX(state);
|
| + applyInheritCSSPropertyWebkitTransformOriginY(state);
|
| + applyInheritCSSPropertyWebkitTransformOriginZ(state);
|
| +}
|
| +
|
| +void StyleBuilderFunctions::applyValueCSSPropertyTransformOrigin(StyleResolverState& state, CSSValue* value)
|
| +{
|
| + CSSValueList* list = toCSSValueList(value);
|
| + ASSERT(list->length() == 3);
|
| + CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(list->item(0));
|
| + if (primitiveValue->isValueID()) {
|
| + switch (primitiveValue->getValueID()) {
|
| + case CSSValueLeft:
|
| + state.style()->setTransformOriginX(Length(0, Percent));
|
| + break;
|
| + case CSSValueRight:
|
| + state.style()->setTransformOriginX(Length(100, Percent));
|
| + break;
|
| + case CSSValueCenter:
|
| + state.style()->setTransformOriginX(Length(50, Percent));
|
| + break;
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + } else {
|
| + state.style()->setTransformOriginX(StyleBuilderConverter::convertLength(state, primitiveValue));
|
| + }
|
| +
|
| + primitiveValue = toCSSPrimitiveValue(list->item(1));
|
| + if (primitiveValue->isValueID()) {
|
| + switch (primitiveValue->getValueID()) {
|
| + case CSSValueTop:
|
| + state.style()->setTransformOriginY(Length(0, Percent));
|
| + break;
|
| + case CSSValueBottom:
|
| + state.style()->setTransformOriginY(Length(100, Percent));
|
| + break;
|
| + case CSSValueCenter:
|
| + state.style()->setTransformOriginY(Length(50, Percent));
|
| + break;
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| + } else {
|
| + state.style()->setTransformOriginY(StyleBuilderConverter::convertLength(state, primitiveValue));
|
| + }
|
| +
|
| + primitiveValue = toCSSPrimitiveValue(list->item(2));
|
| + state.style()->setTransformOriginZ(StyleBuilderConverter::convertComputedLength<float>(state, primitiveValue));
|
| +}
|
| +
|
| void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverState& state, CSSValue* value)
|
| {
|
| if (!value->isPrimitiveValue())
|
| @@ -1744,7 +1804,6 @@ void StyleBuilder::oldApplyProperty(CSSPropertyID id, StyleResolverState& state,
|
|
|
| // FIXME: crbug.com/154772 Unimplemented css-transforms properties
|
| case CSSPropertyPerspectiveOrigin:
|
| - case CSSPropertyTransformOrigin:
|
| return;
|
| // These properties are aliased and we already applied the property on the prefixed version.
|
| case CSSPropertyAnimationDelay:
|
| @@ -1967,6 +2026,7 @@ void StyleBuilder::oldApplyProperty(CSSPropertyID id, StyleResolverState& state,
|
| case CSSPropertyWebkitTransformOriginX:
|
| case CSSPropertyWebkitTransformOriginY:
|
| case CSSPropertyWebkitTransformOriginZ:
|
| + case CSSPropertyTransformOrigin:
|
| case CSSPropertyTransformStyle:
|
| case CSSPropertyWebkitTransformStyle:
|
| case CSSPropertyWebkitTransitionDelay:
|
|
|