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 |