Chromium Code Reviews| Index: Source/core/css/resolver/StyleBuilderConverter.cpp | 
| diff --git a/Source/core/css/resolver/StyleBuilderConverter.cpp b/Source/core/css/resolver/StyleBuilderConverter.cpp | 
| index 75b3a6c10977c0ee2f40c4b100cec5a181b02f35..c1ed50c887e7641eb656a035eca82940f43f8ea0 100644 | 
| --- a/Source/core/css/resolver/StyleBuilderConverter.cpp | 
| +++ b/Source/core/css/resolver/StyleBuilderConverter.cpp | 
| @@ -59,6 +59,20 @@ static GridLength convertGridTrackBreadth(const StyleResolverState& state, CSSPr | 
| return StyleBuilderConverter::convertLengthOrAuto(state, primitiveValue); | 
| } | 
| +template <CSSValueID cssValueFor0, CSSValueID cssValueFor100> | 
| 
 
Timothy Loh
2015/06/04 03:58:26
Should just leave this function where it is
 
majidvp
2015/06/04 22:41:40
Done.
 
 | 
| +static Length convertPositionLength(StyleResolverState& state, CSSPrimitiveValue* primitiveValue) | 
| +{ | 
| + if (Pair* pair = primitiveValue->getPairValue()) { | 
| + Length length = StyleBuilderConverter::convertLength(state, pair->second()); | 
| + if (pair->first()->getValueID() == cssValueFor0) | 
| + return length; | 
| + ASSERT(pair->first()->getValueID() == cssValueFor100); | 
| + return length.subtractFromOneHundredPercent(); | 
| + } | 
| + | 
| + return StyleBuilderConverter::convertLength(state, primitiveValue); | 
| +} | 
| + | 
| } // namespace | 
| PassRefPtr<StyleReflection> StyleBuilderConverter::convertBoxReflect(StyleResolverState& state, CSSValue* value) | 
| @@ -635,21 +649,7 @@ float StyleBuilderConverter::convertNumberOrPercentage(StyleResolverState& state | 
| return primitiveValue->getFloatValue() / 100.0f; | 
| } | 
| -template <CSSValueID cssValueFor0, CSSValueID cssValueFor100> | 
| -static Length convertPositionLength(StyleResolverState& state, CSSPrimitiveValue* primitiveValue) | 
| -{ | 
| - if (Pair* pair = primitiveValue->getPairValue()) { | 
| - Length length = StyleBuilderConverter::convertLength(state, pair->second()); | 
| - if (pair->first()->getValueID() == cssValueFor0) | 
| - return length; | 
| - ASSERT(pair->first()->getValueID() == cssValueFor100); | 
| - return length.subtractFromOneHundredPercent(); | 
| - } | 
| - | 
| - return StyleBuilderConverter::convertLength(state, primitiveValue); | 
| -} | 
| - | 
| -LengthPoint StyleBuilderConverter::convertObjectPosition(StyleResolverState& state, CSSValue* value) | 
| +LengthPoint StyleBuilderConverter::convertPosition(StyleResolverState& state, CSSValue* value) | 
| { | 
| CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| Pair* pair = primitiveValue->getPairValue(); | 
| @@ -901,4 +901,38 @@ TransformOrigin StyleBuilderConverter::convertTransformOrigin(StyleResolverState | 
| ); | 
| } | 
| +ScrollSnapPoints StyleBuilderConverter::convertSnapPoints(StyleResolverState& state, CSSValue* value) | 
| +{ | 
| + // Handles: none | repeat(<length>) | 
| + ScrollSnapPoints points; | 
| + points.hasRepeat = false; | 
| + | 
| + if (!value->isFunctionValue()) | 
| + return points; | 
| + | 
| + CSSFunctionValue* repeatFunction = toCSSFunctionValue(value); | 
| + ASSERT_WITH_SECURITY_IMPLICATION(repeatFunction->length() == 1); | 
| + points.repeatOffset = convertLength(state, toCSSPrimitiveValue(repeatFunction->item(0))); | 
| + points.hasRepeat = true; | 
| + | 
| + return points; | 
| +} | 
| + | 
| +Vector<LengthPoint> StyleBuilderConverter::convertSnapCoordinates(StyleResolverState& state, CSSValue* value) | 
| +{ | 
| + // Handles: none | <position># | 
| + Vector<LengthPoint> coordinates; | 
| + | 
| + if (!value->isValueList()) | 
| + return coordinates; | 
| + | 
| + CSSValueList* valueList = toCSSValueList(value); | 
| + coordinates.reserveInitialCapacity(valueList->length()); | 
| + for (auto& snapCoordinate : *valueList) { | 
| + coordinates.uncheckedAppend(convertPosition(state, snapCoordinate.get())); | 
| + } | 
| + | 
| + return coordinates; | 
| +} | 
| + | 
| } // namespace blink |