| Index: Source/core/animation/animatable/AnimatableStrokeDasharrayList.cpp
 | 
| diff --git a/Source/core/animation/animatable/AnimatableStrokeDasharrayList.cpp b/Source/core/animation/animatable/AnimatableStrokeDasharrayList.cpp
 | 
| index 360a25ebfd35cb3381f94f6b991bb179e55006cd..1c84a7c38bafae42a066341a28c7841402f67287 100644
 | 
| --- a/Source/core/animation/animatable/AnimatableStrokeDasharrayList.cpp
 | 
| +++ b/Source/core/animation/animatable/AnimatableStrokeDasharrayList.cpp
 | 
| @@ -31,28 +31,22 @@
 | 
|  #include "config.h"
 | 
|  #include "core/animation/animatable/AnimatableStrokeDasharrayList.h"
 | 
|  
 | 
| -#include "core/animation/animatable/AnimatableSVGLength.h"
 | 
| +#include "core/animation/animatable/AnimatableLength.h"
 | 
|  
 | 
|  namespace blink {
 | 
|  
 | 
| -AnimatableStrokeDasharrayList::AnimatableStrokeDasharrayList(PassRefPtrWillBeRawPtr<SVGLengthList> passLengths)
 | 
| +AnimatableStrokeDasharrayList::AnimatableStrokeDasharrayList(PassRefPtr<SVGDashArray> passLengths, float zoom)
 | 
|  {
 | 
| -    RefPtrWillBeRawPtr<SVGLengthList> lengths = passLengths;
 | 
| -    SVGLengthList::ConstIterator it = lengths->begin();
 | 
| -    SVGLengthList::ConstIterator itEnd = lengths->end();
 | 
| -    for (; it != itEnd; ++it)
 | 
| -        m_values.append(AnimatableSVGLength::create(*it));
 | 
| +    RefPtr<SVGDashArray> lengths = passLengths;
 | 
| +    for (const Length& dashLength : lengths->vector())
 | 
| +        m_values.append(AnimatableLength::create(dashLength, zoom));
 | 
|  }
 | 
|  
 | 
| -PassRefPtrWillBeRawPtr<SVGLengthList> AnimatableStrokeDasharrayList::toSVGLengthList() const
 | 
| +PassRefPtr<SVGDashArray> AnimatableStrokeDasharrayList::toSVGDashArray(float zoom) const
 | 
|  {
 | 
| -    RefPtrWillBeRawPtr<SVGLengthList> lengths = SVGLengthList::create();
 | 
| -    for (size_t i = 0; i < m_values.size(); ++i) {
 | 
| -        RefPtrWillBeRawPtr<SVGLength> length = toAnimatableSVGLength(m_values[i].get())->toSVGLength()->clone();
 | 
| -        if (length->valueInSpecifiedUnits() < 0)
 | 
| -            length->setValueInSpecifiedUnits(0);
 | 
| -        lengths->append(length);
 | 
| -    }
 | 
| +    RefPtr<SVGDashArray> lengths = SVGDashArray::create();
 | 
| +    for (const auto& dashLength : m_values)
 | 
| +        lengths->append(toAnimatableLength(dashLength.get())->length(zoom, ValueRangeNonNegative));
 | 
|      return lengths.release();
 | 
|  }
 | 
|  
 | 
| @@ -79,7 +73,7 @@ PassRefPtrWillBeRawPtr<AnimatableValue> AnimatableStrokeDasharrayList::interpola
 | 
|      if (from.isEmpty() && to.isEmpty())
 | 
|          return takeConstRef(this);
 | 
|      if (from.isEmpty() || to.isEmpty()) {
 | 
| -        DEFINE_STATIC_REF_WILL_BE_PERSISTENT(AnimatableSVGLength, zeroPixels, (AnimatableSVGLength::create(SVGLength::create())));
 | 
| +        DEFINE_STATIC_REF_WILL_BE_PERSISTENT(AnimatableLength, zeroPixels, (AnimatableLength::create(Length(Fixed), 1)));
 | 
|          if (from.isEmpty()) {
 | 
|              from.append(zeroPixels);
 | 
|              from.append(zeroPixels);
 | 
| 
 |