| Index: third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp b/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp
 | 
| index 3b965884f9458c60ebc71a368f6bb7dc3b7738ec..67a76e6f7d81d38c9936709205f756e325d4c64e 100644
 | 
| --- a/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp
 | 
| +++ b/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp
 | 
| @@ -11,60 +11,29 @@
 | 
|  
 | 
|  namespace blink {
 | 
|  
 | 
| -namespace {
 | 
| -
 | 
| -class SampleInterpolation : public Interpolation {
 | 
| -public:
 | 
| -    static PassRefPtr<Interpolation> create(std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end)
 | 
| -    {
 | 
| -        return adoptRef(new SampleInterpolation(std::move(start), std::move(end)));
 | 
| -    }
 | 
| -
 | 
| -    PropertyHandle getProperty() const override
 | 
| -    {
 | 
| -        return PropertyHandle(CSSPropertyBackgroundColor);
 | 
| -    }
 | 
| -private:
 | 
| -    SampleInterpolation(std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end)
 | 
| -        : Interpolation(std::move(start), std::move(end))
 | 
| -    {
 | 
| -    }
 | 
| -};
 | 
| -
 | 
| -} // namespace
 | 
| -
 | 
|  class AnimationInterpolableValueTest : public ::testing::Test {
 | 
|  protected:
 | 
| -    InterpolableValue* interpolationValue(Interpolation& interpolation)
 | 
| +    std::unique_ptr<InterpolableValue> interpolate(std::unique_ptr<InterpolableValue> a, std::unique_ptr<InterpolableValue> b, double progress)
 | 
|      {
 | 
| -        return interpolation.getCachedValueForTesting();
 | 
| +        std::unique_ptr<InterpolableValue> result = a->clone();
 | 
| +        a->interpolate(*b, progress, *result);
 | 
| +        return result;
 | 
|      }
 | 
|  
 | 
|      double interpolateNumbers(double a, double b, double progress)
 | 
|      {
 | 
| -        RefPtr<Interpolation> i = SampleInterpolation::create(InterpolableNumber::create(a), InterpolableNumber::create(b));
 | 
| -        i->interpolate(0, progress);
 | 
| -        return toInterpolableNumber(interpolationValue(*i.get()))->value();
 | 
| +        return toInterpolableNumber(*interpolate(InterpolableNumber::create(a), InterpolableNumber::create(b), progress)).value();
 | 
|      }
 | 
|  
 | 
|      bool interpolateBools(bool a, bool b, double progress)
 | 
|      {
 | 
| -        RefPtr<Interpolation> i = SampleInterpolation::create(InterpolableBool::create(a), InterpolableBool::create(b));
 | 
| -        i->interpolate(0, progress);
 | 
| -        return toInterpolableBool(interpolationValue(*i.get()))->value();
 | 
| +        return toInterpolableBool(*interpolate(InterpolableBool::create(a), InterpolableBool::create(b), progress)).value();
 | 
|      }
 | 
|  
 | 
|      void scaleAndAdd(InterpolableValue& base, double scale, const InterpolableValue& add)
 | 
|      {
 | 
|          base.scaleAndAdd(scale, add);
 | 
|      }
 | 
| -
 | 
| -    PassRefPtr<Interpolation> interpolateLists(std::unique_ptr<InterpolableList> listA, std::unique_ptr<InterpolableList> listB, double progress)
 | 
| -    {
 | 
| -        RefPtr<Interpolation> i = SampleInterpolation::create(std::move(listA), std::move(listB));
 | 
| -        i->interpolate(0, progress);
 | 
| -        return i;
 | 
| -    }
 | 
|  };
 | 
|  
 | 
|  TEST_F(AnimationInterpolableValueTest, InterpolateNumbers)
 | 
| @@ -99,11 +68,11 @@ TEST_F(AnimationInterpolableValueTest, SimpleList)
 | 
|      listB->set(1, InterpolableNumber::create(-200));
 | 
|      listB->set(2, InterpolableNumber::create(300));
 | 
|  
 | 
| -    RefPtr<Interpolation> i = interpolateLists(std::move(listA), std::move(listB), 0.3);
 | 
| -    InterpolableList* outList = toInterpolableList(interpolationValue(*i.get()));
 | 
| -    EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value());
 | 
| -    EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value());
 | 
| -    EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value());
 | 
| +    std::unique_ptr<InterpolableValue> out = interpolate(std::move(listA), std::move(listB), 0.3);
 | 
| +    const InterpolableList& outList = toInterpolableList(*out);
 | 
| +    EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList.get(0))->value());
 | 
| +    EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList.get(1))->value());
 | 
| +    EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList.get(2))->value());
 | 
|  }
 | 
|  
 | 
|  TEST_F(AnimationInterpolableValueTest, NestedList)
 | 
| @@ -122,11 +91,11 @@ TEST_F(AnimationInterpolableValueTest, NestedList)
 | 
|      listB->set(1, std::move(subListB));
 | 
|      listB->set(2, InterpolableBool::create(true));
 | 
|  
 | 
| -    RefPtr<Interpolation> i = interpolateLists(std::move(listA), std::move(listB), 0.5);
 | 
| -    InterpolableList* outList = toInterpolableList(interpolationValue(*i.get()));
 | 
| -    EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value());
 | 
| -    EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList->get(1))->get(0))->value());
 | 
| -    EXPECT_TRUE(toInterpolableBool(outList->get(2))->value());
 | 
| +    std::unique_ptr<InterpolableValue> out = interpolate(std::move(listA), std::move(listB), 0.5);
 | 
| +    const InterpolableList& outList = toInterpolableList(*out);
 | 
| +    EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList.get(0))->value());
 | 
| +    EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList.get(1))->get(0))->value());
 | 
| +    EXPECT_TRUE(toInterpolableBool(outList.get(2))->value());
 | 
|  }
 | 
|  
 | 
|  TEST_F(AnimationInterpolableValueTest, ScaleAndAddNumbers)
 | 
| 
 |