Index: third_party/WebKit/Source/core/animation/LengthListPropertyFunctions.cpp |
diff --git a/third_party/WebKit/Source/core/animation/LengthListPropertyFunctions.cpp b/third_party/WebKit/Source/core/animation/LengthListPropertyFunctions.cpp |
index ace98e122848de0036b402b52b45eefd608051f8..247797fb14508ddab0fe0754060ee222f49d3408 100644 |
--- a/third_party/WebKit/Source/core/animation/LengthListPropertyFunctions.cpp |
+++ b/third_party/WebKit/Source/core/animation/LengthListPropertyFunctions.cpp |
@@ -87,6 +87,10 @@ ValueRange LengthListPropertyFunctions::valueRange(CSSPropertyID property) |
case CSSPropertyWebkitMaskPositionY: |
return ValueRangeAll; |
+ case CSSPropertyBorderBottomLeftRadius: |
+ case CSSPropertyBorderBottomRightRadius: |
+ case CSSPropertyBorderTopLeftRadius: |
+ case CSSPropertyBorderTopRightRadius: |
case CSSPropertyStrokeDasharray: |
return ValueRangeNonNegative; |
@@ -101,27 +105,47 @@ Vector<Length> LengthListPropertyFunctions::getInitialLengthList(CSSPropertyID p |
return getLengthList(property, *ComputedStyle::initialStyle()); |
} |
-Vector<Length> LengthListPropertyFunctions::getLengthList(CSSPropertyID property, const ComputedStyle& style) |
+static Vector<Length> toVector(const LengthPoint& point) |
{ |
- Vector<Length> result; |
+ Vector<Length> result(2); |
+ result[0] = point.x(); |
+ result[1] = point.y(); |
+ return result; |
+} |
+ |
+static Vector<Length> toVector(const LengthSize& size) |
+{ |
+ Vector<Length> result(2); |
+ result[0] = size.width(); |
+ result[1] = size.height(); |
+ return result; |
+} |
+Vector<Length> LengthListPropertyFunctions::getLengthList(CSSPropertyID property, const ComputedStyle& style) |
+{ |
switch (property) { |
- case CSSPropertyStrokeDasharray: |
+ case CSSPropertyStrokeDasharray: { |
if (style.strokeDashArray()) |
- result.appendVector(style.strokeDashArray()->vector()); |
- return result; |
+ return style.strokeDashArray()->vector(); |
+ return Vector<Length>(); |
+ } |
case CSSPropertyObjectPosition: |
- result.append(style.objectPosition().x()); |
- result.append(style.objectPosition().y()); |
- return result; |
+ return toVector(style.objectPosition()); |
case CSSPropertyPerspectiveOrigin: |
- result.append(style.perspectiveOrigin().x()); |
- result.append(style.perspectiveOrigin().y()); |
- return result; |
+ return toVector(style.perspectiveOrigin()); |
+ case CSSPropertyBorderBottomLeftRadius: |
+ return toVector(style.borderBottomLeftRadius()); |
+ case CSSPropertyBorderBottomRightRadius: |
+ return toVector(style.borderBottomRightRadius()); |
+ case CSSPropertyBorderTopLeftRadius: |
+ return toVector(style.borderTopLeftRadius()); |
+ case CSSPropertyBorderTopRightRadius: |
+ return toVector(style.borderTopRightRadius()); |
default: |
break; |
} |
+ Vector<Length> result; |
const FillLayer* fillLayer = getFillLayer(property, style); |
FillLayerMethods fillLayerMethods(property); |
while (fillLayer && (fillLayer->*fillLayerMethods.isSet)()) { |
@@ -131,6 +155,18 @@ Vector<Length> LengthListPropertyFunctions::getLengthList(CSSPropertyID property |
return result; |
} |
+static LengthPoint pointFromVector(const Vector<Length>& list) |
+{ |
+ ASSERT(list.size() == 2); |
+ return LengthPoint(list[0], list[1]); |
+} |
+ |
+static LengthSize sizeFromVector(const Vector<Length>& list) |
+{ |
+ ASSERT(list.size() == 2); |
+ return LengthSize(list[0], list[1]); |
+} |
+ |
void LengthListPropertyFunctions::setLengthList(CSSPropertyID property, ComputedStyle& style, Vector<Length>&& lengthList) |
{ |
switch (property) { |
@@ -138,10 +174,22 @@ void LengthListPropertyFunctions::setLengthList(CSSPropertyID property, Computed |
style.setStrokeDashArray(lengthList.isEmpty() ? nullptr : RefVector<Length>::create(std::move(lengthList))); |
return; |
case CSSPropertyObjectPosition: |
- style.setObjectPosition(LengthPoint(lengthList[0], lengthList[1])); |
+ style.setObjectPosition(pointFromVector(lengthList)); |
return; |
case CSSPropertyPerspectiveOrigin: |
- style.setPerspectiveOrigin(LengthPoint(lengthList[0], lengthList[1])); |
+ style.setPerspectiveOrigin(pointFromVector(lengthList)); |
+ return; |
+ case CSSPropertyBorderBottomLeftRadius: |
+ style.setBorderBottomLeftRadius(sizeFromVector(lengthList)); |
+ return; |
+ case CSSPropertyBorderBottomRightRadius: |
+ style.setBorderBottomRightRadius(sizeFromVector(lengthList)); |
+ return; |
+ case CSSPropertyBorderTopLeftRadius: |
+ style.setBorderTopLeftRadius(sizeFromVector(lengthList)); |
+ return; |
+ case CSSPropertyBorderTopRightRadius: |
+ style.setBorderTopRightRadius(sizeFromVector(lengthList)); |
return; |
default: |
break; |