| Index: Source/core/animation/CompositorAnimationsTest.cpp
 | 
| diff --git a/Source/core/animation/CompositorAnimationsTest.cpp b/Source/core/animation/CompositorAnimationsTest.cpp
 | 
| index 1d3da4ce643b14173a6f633570358376e6dfbb10..a78cc9998abfdd15a8c4b2f8b69b3148aae2f0c6 100644
 | 
| --- a/Source/core/animation/CompositorAnimationsTest.cpp
 | 
| +++ b/Source/core/animation/CompositorAnimationsTest.cpp
 | 
| @@ -75,14 +75,14 @@ protected:
 | 
|  
 | 
|      Timing m_timing;
 | 
|      CompositorAnimationsImpl::CompositorTiming m_compositorTiming;
 | 
| -    OwnPtrWillBePersistent<AnimatableValueKeyframeVector> m_keyframeVector2;
 | 
| -    RefPtrWillBePersistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimationEffect2;
 | 
| -    OwnPtrWillBePersistent<AnimatableValueKeyframeVector> m_keyframeVector5;
 | 
| -    RefPtrWillBePersistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimationEffect5;
 | 
| +    Persistent<AnimatableValueKeyframeVector> m_keyframeVector2;
 | 
| +    Persistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimationEffect2;
 | 
| +    Persistent<AnimatableValueKeyframeVector> m_keyframeVector5;
 | 
| +    Persistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimationEffect5;
 | 
|  
 | 
|      RefPtrWillBePersistent<Document> m_document;
 | 
|      RefPtrWillBePersistent<Element> m_element;
 | 
| -    RefPtrWillBePersistent<AnimationTimeline> m_timeline;
 | 
| +    Persistent<AnimationTimeline> m_timeline;
 | 
|  
 | 
|      virtual void SetUp()
 | 
|      {
 | 
| @@ -138,11 +138,11 @@ public:
 | 
|      {
 | 
|          EXPECT_EQ(frame->offset(), 0);
 | 
|          AnimatableValueKeyframeVector frames;
 | 
| -        RefPtrWillBeRawPtr<Keyframe> second = frame->cloneWithOffset(1);
 | 
| +        Keyframe* second = frame->cloneWithOffset(1);
 | 
|  
 | 
|          frames.append(frame);
 | 
| -        frames.append(toAnimatableValueKeyframe(second.get()));
 | 
| -        return isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(frames).get());
 | 
| +        frames.append(toAnimatableValueKeyframe(second));
 | 
| +        return isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(frames));
 | 
|      }
 | 
|  
 | 
|      // -------------------------------------------------------------------
 | 
| @@ -162,9 +162,9 @@ public:
 | 
|          return timing;
 | 
|      }
 | 
|  
 | 
| -    PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> createReplaceOpKeyframe(CSSPropertyID id, AnimatableValue* value, double offset = 0)
 | 
| +    AnimatableValueKeyframe* createReplaceOpKeyframe(CSSPropertyID id, AnimatableValue* value, double offset = 0)
 | 
|      {
 | 
| -        RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframe = AnimatableValueKeyframe::create();
 | 
| +        AnimatableValueKeyframe* keyframe = AnimatableValueKeyframe::create();
 | 
|          keyframe->setPropertyValue(id, value);
 | 
|          keyframe->setComposite(EffectModel::CompositeReplace);
 | 
|          keyframe->setOffset(offset);
 | 
| @@ -172,20 +172,20 @@ public:
 | 
|          return keyframe;
 | 
|      }
 | 
|  
 | 
| -    PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> createDefaultKeyframe(CSSPropertyID id, EffectModel::CompositeOperation op, double offset = 0)
 | 
| +    AnimatableValueKeyframe* createDefaultKeyframe(CSSPropertyID id, EffectModel::CompositeOperation op, double offset = 0)
 | 
|      {
 | 
| -        RefPtrWillBeRawPtr<AnimatableValue> value = nullptr;
 | 
| +        AnimatableValue* value = nullptr;
 | 
|          if (id == CSSPropertyTransform)
 | 
|              value = AnimatableTransform::create(TransformOperations());
 | 
|          else
 | 
|              value = AnimatableDouble::create(10.0);
 | 
|  
 | 
| -        RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframe = createReplaceOpKeyframe(id, value.get(), offset);
 | 
| +        AnimatableValueKeyframe* keyframe = createReplaceOpKeyframe(id, value, offset);
 | 
|          keyframe->setComposite(op);
 | 
|          return keyframe;
 | 
|      }
 | 
|  
 | 
| -    PassOwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> createCompositableFloatKeyframeVector(size_t n)
 | 
| +    AnimatableValueKeyframeVector* createCompositableFloatKeyframeVector(size_t n)
 | 
|      {
 | 
|          Vector<double> values;
 | 
|          for (size_t i = 0; i < n; i++) {
 | 
| @@ -194,34 +194,34 @@ public:
 | 
|          return createCompositableFloatKeyframeVector(values);
 | 
|      }
 | 
|  
 | 
| -    PassOwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> createCompositableFloatKeyframeVector(Vector<double>& values)
 | 
| +    AnimatableValueKeyframeVector* createCompositableFloatKeyframeVector(Vector<double>& values)
 | 
|      {
 | 
| -        OwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> frames = adoptPtrWillBeNoop(new AnimatableValueKeyframeVector);
 | 
| +        AnimatableValueKeyframeVector* frames = new AnimatableValueKeyframeVector;
 | 
|          for (size_t i = 0; i < values.size(); i++) {
 | 
|              double offset = 1.0 / (values.size() - 1) * i;
 | 
| -            RefPtrWillBeRawPtr<AnimatableDouble> value = AnimatableDouble::create(values[i]);
 | 
| -            frames->append(createReplaceOpKeyframe(CSSPropertyOpacity, value.get(), offset).get());
 | 
| +            AnimatableDouble* value = AnimatableDouble::create(values[i]);
 | 
| +            frames->append(createReplaceOpKeyframe(CSSPropertyOpacity, value, offset));
 | 
|          }
 | 
| -        return frames.release();
 | 
| +        return frames;
 | 
|      }
 | 
|  
 | 
| -    PassOwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> createCompositableTransformKeyframeVector(const Vector<TransformOperations>& values)
 | 
| +    AnimatableValueKeyframeVector* createCompositableTransformKeyframeVector(const Vector<TransformOperations>& values)
 | 
|      {
 | 
| -        OwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> frames = adoptPtrWillBeNoop(new AnimatableValueKeyframeVector);
 | 
| +        AnimatableValueKeyframeVector* frames = new AnimatableValueKeyframeVector;
 | 
|          for (size_t i = 0; i < values.size(); ++i) {
 | 
|              double offset = 1.0f / (values.size() - 1) * i;
 | 
| -            RefPtrWillBeRawPtr<AnimatableTransform> value = AnimatableTransform::create(values[i]);
 | 
| -            frames->append(createReplaceOpKeyframe(CSSPropertyTransform, value.get(), offset).get());
 | 
| +            AnimatableTransform* value = AnimatableTransform::create(values[i]);
 | 
| +            frames->append(createReplaceOpKeyframe(CSSPropertyTransform, value, offset));
 | 
|          }
 | 
| -        return frames.release();
 | 
| +        return frames;
 | 
|      }
 | 
|  
 | 
| -    PassRefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> createKeyframeEffectModel(PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> prpFrom, PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> prpTo, PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> prpC = nullptr, PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> prpD = nullptr)
 | 
| +    AnimatableValueKeyframeEffectModel* createKeyframeEffectModel(AnimatableValueKeyframe* prpFrom, AnimatableValueKeyframe* prpTo, AnimatableValueKeyframe* prpC = nullptr, AnimatableValueKeyframe* prpD = nullptr)
 | 
|      {
 | 
| -        RefPtrWillBeRawPtr<AnimatableValueKeyframe> from = prpFrom;
 | 
| -        RefPtrWillBeRawPtr<AnimatableValueKeyframe> to = prpTo;
 | 
| -        RefPtrWillBeRawPtr<AnimatableValueKeyframe> c = prpC;
 | 
| -        RefPtrWillBeRawPtr<AnimatableValueKeyframe> d = prpD;
 | 
| +        AnimatableValueKeyframe* from = prpFrom;
 | 
| +        AnimatableValueKeyframe* to = prpTo;
 | 
| +        AnimatableValueKeyframe* c = prpC;
 | 
| +        AnimatableValueKeyframe* d = prpD;
 | 
|  
 | 
|          EXPECT_EQ(from->offset(), 0);
 | 
|          AnimatableValueKeyframeVector frames;
 | 
| @@ -280,57 +280,57 @@ private:
 | 
|  
 | 
|  TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKeyframeMultipleCSSProperties)
 | 
|  {
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframeGoodMultiple = createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace);
 | 
| -    keyframeGoodMultiple->setPropertyValue(CSSPropertyTransform, AnimatableTransform::create(TransformOperations()).get());
 | 
| -    EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeGoodMultiple.get()));
 | 
| +    AnimatableValueKeyframe* keyframeGoodMultiple = createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace);
 | 
| +    keyframeGoodMultiple->setPropertyValue(CSSPropertyTransform, AnimatableTransform::create(TransformOperations()));
 | 
| +    EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeGoodMultiple));
 | 
|  
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframeBadMultipleID = createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace);
 | 
| -    keyframeBadMultipleID->setPropertyValue(CSSPropertyOpacity, AnimatableDouble::create(10.0).get());
 | 
| -    EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeBadMultipleID.get()));
 | 
| +    AnimatableValueKeyframe* keyframeBadMultipleID = createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace);
 | 
| +    keyframeBadMultipleID->setPropertyValue(CSSPropertyOpacity, AnimatableDouble::create(10.0));
 | 
| +    EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeBadMultipleID));
 | 
|  }
 | 
|  
 | 
|  TEST_F(AnimationCompositorAnimationsTest, isNotCandidateForCompositorAnimationTransformDependsOnBoxSize)
 | 
|  {
 | 
|      TransformOperations ops;
 | 
|      ops.operations().append(TranslateTransformOperation::create(Length(2, Fixed), Length(2, Fixed), TransformOperation::TranslateX));
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframe> goodKeyframe = createReplaceOpKeyframe(CSSPropertyTransform, AnimatableTransform::create(ops).get());
 | 
| -    EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(goodKeyframe.get()));
 | 
| +    AnimatableValueKeyframe* goodKeyframe = createReplaceOpKeyframe(CSSPropertyTransform, AnimatableTransform::create(ops));
 | 
| +    EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(goodKeyframe));
 | 
|  
 | 
|      ops.operations().append(TranslateTransformOperation::create(Length(50, Percent), Length(2, Fixed), TransformOperation::TranslateX));
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframe> badKeyframe = createReplaceOpKeyframe(CSSPropertyTransform, AnimatableTransform::create(ops).get());
 | 
| -    EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe.get()));
 | 
| +    AnimatableValueKeyframe* badKeyframe = createReplaceOpKeyframe(CSSPropertyTransform, AnimatableTransform::create(ops));
 | 
| +    EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe));
 | 
|  
 | 
|      TransformOperations ops2;
 | 
|      Length calcLength = Length(100, Percent).blend(Length(100, Fixed), 0.5, ValueRangeAll);
 | 
|      ops2.operations().append(TranslateTransformOperation::create(calcLength, Length(0, Fixed), TransformOperation::TranslateX));
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframe> badKeyframe2 = createReplaceOpKeyframe(CSSPropertyTransform, AnimatableTransform::create(ops2).get());
 | 
| -    EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe2.get()));
 | 
| +    AnimatableValueKeyframe* badKeyframe2 = createReplaceOpKeyframe(CSSPropertyTransform, AnimatableTransform::create(ops2));
 | 
| +    EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe2));
 | 
|  }
 | 
|  
 | 
|  TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKeyframeEffectModelMultipleFramesOkay)
 | 
|  {
 | 
|      AnimatableValueKeyframeVector framesSame;
 | 
| -    framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0).get());
 | 
| -    EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame).get()));
 | 
| +    framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0));
 | 
| +    framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0));
 | 
| +    EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame)));
 | 
|  
 | 
|      AnimatableValueKeyframeVector framesMixed;
 | 
| -    framesMixed.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    framesMixed.append(createDefaultKeyframe(CSSPropertyTransform, EffectModel::CompositeReplace, 1.0).get());
 | 
| -    EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesMixed).get()));
 | 
| +    framesMixed.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0));
 | 
| +    framesMixed.append(createDefaultKeyframe(CSSPropertyTransform, EffectModel::CompositeReplace, 1.0));
 | 
| +    EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesMixed)));
 | 
|  }
 | 
|  
 | 
|  TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKeyframeEffectModel)
 | 
|  {
 | 
|      AnimatableValueKeyframeVector framesSame;
 | 
| -    framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 1.0).get());
 | 
| -    EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame).get()));
 | 
| +    framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 0.0));
 | 
| +    framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 1.0));
 | 
| +    EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame)));
 | 
|  
 | 
|      AnimatableValueKeyframeVector framesMixedProperties;
 | 
| -    framesMixedProperties.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    framesMixedProperties.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 1.0).get());
 | 
| -    EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesMixedProperties).get()));
 | 
| +    framesMixedProperties.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0));
 | 
| +    framesMixedProperties.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 1.0));
 | 
| +    EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKeyframeEffectModel::create(framesMixedProperties)));
 | 
|  }
 | 
|  
 | 
|  TEST_F(AnimationCompositorAnimationsTest, AnimatedBoundingBox)
 | 
| @@ -340,21 +340,21 @@ TEST_F(AnimationCompositorAnimationsTest, AnimatedBoundingBox)
 | 
|      transformVector.last().operations().append(TranslateTransformOperation::create(Length(0, Fixed), Length(0, Fixed), 0.0, TransformOperation::Translate3D));
 | 
|      transformVector.append(TransformOperations());
 | 
|      transformVector.last().operations().append(TranslateTransformOperation::create(Length(200, Fixed), Length(200, Fixed), 0.0, TransformOperation::Translate3D));
 | 
| -    OwnPtrWillBePersistent<AnimatableValueKeyframeVector> frames = createCompositableTransformKeyframeVector(transformVector);
 | 
| +    Persistent<AnimatableValueKeyframeVector> frames = createCompositableTransformKeyframeVector(transformVector);
 | 
|      FloatBox bounds;
 | 
| -    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames).get(), 0, 1));
 | 
| +    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames), 0, 1));
 | 
|      EXPECT_EQ(FloatBox(0.0f, 0.f, 0.0f, 200.0f, 200.0f, 0.0f), bounds);
 | 
|      bounds = FloatBox();
 | 
| -    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames).get(), -1, 1));
 | 
| +    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames), -1, 1));
 | 
|      EXPECT_EQ(FloatBox(-200.0f, -200.0, 0.0, 400.0f, 400.0f, 0.0f), bounds);
 | 
|      transformVector.append(TransformOperations());
 | 
|      transformVector.last().operations().append(TranslateTransformOperation::create(Length(-300, Fixed), Length(-400, Fixed), 1.0f, TransformOperation::Translate3D));
 | 
|      bounds = FloatBox();
 | 
|      frames = createCompositableTransformKeyframeVector(transformVector);
 | 
| -    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames).get(), 0, 1));
 | 
| +    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames), 0, 1));
 | 
|      EXPECT_EQ(FloatBox(-300.0f, -400.f, 0.0f, 500.0f, 600.0f, 1.0f), bounds);
 | 
|      bounds = FloatBox();
 | 
| -    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames).get(), -1, 2));
 | 
| +    EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel::create(*frames), -1, 2));
 | 
|      EXPECT_EQ(FloatBox(-1300.0f, -1600.f, 0.0f, 1500.0f, 1800.0f, 3.0f), bounds);
 | 
|  }
 | 
|  
 | 
| @@ -606,26 +606,26 @@ TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor)
 | 
|      Timing linearTiming(createCompositableTiming());
 | 
|  
 | 
|      AnimatableValueKeyframeVector basicFramesVector;
 | 
| -    basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0).get());
 | 
| +    basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0));
 | 
| +    basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0));
 | 
|  
 | 
|      AnimatableValueKeyframeVector nonBasicFramesVector;
 | 
| -    nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.5).get());
 | 
| -    nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0).get());
 | 
| +    nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0));
 | 
| +    nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.5));
 | 
| +    nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0));
 | 
|  
 | 
|      basicFramesVector[0]->setEasing(m_linearTimingFunction.get());
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> basicFrames = AnimatableValueKeyframeEffectModel::create(basicFramesVector).get();
 | 
| -    EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames.get()));
 | 
| +    AnimatableValueKeyframeEffectModel* basicFrames = AnimatableValueKeyframeEffectModel::create(basicFramesVector);
 | 
| +    EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames));
 | 
|  
 | 
|      basicFramesVector[0]->setEasing(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::EaseIn));
 | 
| -    basicFrames = AnimatableValueKeyframeEffectModel::create(basicFramesVector).get();
 | 
| -    EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames.get()));
 | 
| +    basicFrames = AnimatableValueKeyframeEffectModel::create(basicFramesVector);
 | 
| +    EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames));
 | 
|  
 | 
|      nonBasicFramesVector[0]->setEasing(m_linearTimingFunction.get());
 | 
|      nonBasicFramesVector[1]->setEasing(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::EaseIn));
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> nonBasicFrames = AnimatableValueKeyframeEffectModel::create(nonBasicFramesVector).get();
 | 
| -    EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *nonBasicFrames.get()));
 | 
| +    AnimatableValueKeyframeEffectModel* nonBasicFrames = AnimatableValueKeyframeEffectModel::create(nonBasicFramesVector);
 | 
| +    EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *nonBasicFrames));
 | 
|  }
 | 
|  
 | 
|  // -----------------------------------------------------------------------
 | 
| @@ -634,9 +634,9 @@ TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor)
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimation)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|      // --
 | 
|  
 | 
|      WebCompositorSupportMock mockCompositor;
 | 
| @@ -672,7 +672,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimation)
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -680,9 +680,9 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimation)
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.iterationDuration = 10.0;
 | 
|      // --
 | 
| @@ -720,7 +720,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration)
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -728,11 +728,11 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration)
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimationLinear)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1.0), 0.25),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20.0), 0.5),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.iterationCount = 5;
 | 
|      m_timing.direction = Timing::PlaybackDirectionAlternate;
 | 
| @@ -775,7 +775,7 @@ TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -783,9 +783,9 @@ TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationStartDelay)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.iterationCount = 5.0;
 | 
|      m_timing.iterationDuration = 1.75;
 | 
| @@ -825,7 +825,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationStartDelay
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -834,14 +834,14 @@ TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
|      AnimatableValueKeyframeVector frames;
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0));
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25));
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5));
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1.0), 0.25));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20.0), 0.5));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|      frames[0]->setEasing(m_cubicEaseTimingFunction.get());
 | 
|      frames[1]->setEasing(m_linearTimingFunction.get());
 | 
|      frames[2]->setEasing(m_cubicCustomTimingFunction.get());
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableValueKeyframeEffectModel::create(frames);
 | 
| +    AnimatableValueKeyframeEffectModel* effect = AnimatableValueKeyframeEffectModel::create(frames);
 | 
|  
 | 
|      m_timing.timingFunction = m_linearTimingFunction.get();
 | 
|      m_timing.iterationDuration = 2.0;
 | 
| @@ -885,7 +885,7 @@ TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -896,14 +896,14 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation)
 | 
|  
 | 
|      // KeyframeEffect to convert
 | 
|      AnimatableValueKeyframeVector frames;
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0));
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25));
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5));
 | 
| -    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1.0), 0.25));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20.0), 0.5));
 | 
| +    frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|      frames[0]->setEasing(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::EaseIn));
 | 
|      frames[1]->setEasing(m_linearTimingFunction.get());
 | 
|      frames[2]->setEasing(cubicEasyFlipTimingFunction.get());
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableValueKeyframeEffectModel::create(frames);
 | 
| +    AnimatableValueKeyframeEffectModel* effect = AnimatableValueKeyframeEffectModel::create(frames);
 | 
|  
 | 
|      m_timing.timingFunction = m_linearTimingFunction.get();
 | 
|      m_timing.iterationCount = 10;
 | 
| @@ -946,7 +946,7 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation)
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -954,9 +954,9 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation)
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegativeStartDelay)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.iterationCount = 5.0;
 | 
|      m_timing.iterationDuration = 1.5;
 | 
| @@ -997,7 +997,7 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegative
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -1005,9 +1005,9 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegative
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRates)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.playbackRate = 2;
 | 
|      // --
 | 
| @@ -1046,7 +1046,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRa
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
|      // Set player plaback rate also
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result, -1.5);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result, -1.5);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -1054,9 +1054,9 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRa
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNone)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.fillMode = Timing::FillModeNone;
 | 
|  
 | 
| @@ -1094,7 +1094,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNo
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -1102,9 +1102,9 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNo
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAuto)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.fillMode = Timing::FillModeAuto;
 | 
|  
 | 
| @@ -1142,7 +1142,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAu
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -1150,9 +1150,9 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAu
 | 
|  TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTimingFunction)
 | 
|  {
 | 
|      // KeyframeEffect to convert
 | 
| -    RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
 | 
| -        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
 | 
| +    AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0), 0),
 | 
| +        createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0), 1.0));
 | 
|  
 | 
|      m_timing.timingFunction = m_cubicCustomTimingFunction;
 | 
|  
 | 
| @@ -1190,7 +1190,7 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTiming
 | 
|      // Go!
 | 
|      setCompositorForTesting(mockCompositor);
 | 
|      Vector<OwnPtr<WebCompositorAnimation>> result;
 | 
| -    getAnimationOnCompositor(m_timing, *effect.get(), result);
 | 
| +    getAnimationOnCompositor(m_timing, *effect, result);
 | 
|      EXPECT_EQ(1U, result.size());
 | 
|      result[0].clear();
 | 
|  }
 | 
| @@ -1206,18 +1206,18 @@ TEST_F(AnimationCompositorAnimationsTest, CancelIncompatibleCompositorAnimations
 | 
|      element->setLayoutObject(layoutObject);
 | 
|  
 | 
|      AnimatableValueKeyframeVector keyFrames;
 | 
| -    keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0).get());
 | 
| -    keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0).get());
 | 
| -    RefPtrWillBeRawPtr<EffectModel> animationEffect1 = AnimatableValueKeyframeEffectModel::create(keyFrames);
 | 
| -    RefPtrWillBeRawPtr<EffectModel> animationEffect2 = AnimatableValueKeyframeEffectModel::create(keyFrames);
 | 
| +    keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 0.0));
 | 
| +    keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 1.0));
 | 
| +    EffectModel* animationEffect1 = AnimatableValueKeyframeEffectModel::create(keyFrames);
 | 
| +    EffectModel* animationEffect2 = AnimatableValueKeyframeEffectModel::create(keyFrames);
 | 
|  
 | 
|      Timing timing;
 | 
|      timing.iterationDuration = 1.f;
 | 
|  
 | 
|      // The first animation for opacity is ok to run on compositor.
 | 
| -    RefPtrWillBeRawPtr<KeyframeEffect> keyframeEffect1 = KeyframeEffect::create(element.get(), animationEffect1, timing);
 | 
| -    RefPtrWillBePersistent<Animation> animation1 = m_timeline->play(keyframeEffect1.get());
 | 
| -    EXPECT_TRUE(CompositorAnimations::instance()->isCandidateForAnimationOnCompositor(timing, *element.get(), animation1.get(), *animationEffect1.get(), 1));
 | 
| +    KeyframeEffect* keyframeEffect1 = KeyframeEffect::create(element.get(), animationEffect1, timing);
 | 
| +    Animation* animation1 = m_timeline->play(keyframeEffect1);
 | 
| +    EXPECT_TRUE(CompositorAnimations::instance()->isCandidateForAnimationOnCompositor(timing, *element.get(), animation1, *animationEffect1, 1));
 | 
|  
 | 
|      // simulate KeyframeEffect::maybeStartAnimationOnCompositor
 | 
|      Vector<int> compositorAnimationIds;
 | 
| @@ -1226,9 +1226,9 @@ TEST_F(AnimationCompositorAnimationsTest, CancelIncompatibleCompositorAnimations
 | 
|      EXPECT_TRUE(animation1->hasActiveAnimationsOnCompositor());
 | 
|  
 | 
|      // The second animation for opacity is not ok to run on compositor.
 | 
| -    RefPtrWillBeRawPtr<KeyframeEffect> keyframeEffect2 = KeyframeEffect::create(element.get(), animationEffect2, timing);
 | 
| -    RefPtrWillBePersistent<Animation> animation2 = m_timeline->play(keyframeEffect2.get());
 | 
| -    EXPECT_FALSE(CompositorAnimations::instance()->isCandidateForAnimationOnCompositor(timing, *element.get(), animation2.get(), *animationEffect2.get(), 1));
 | 
| +    KeyframeEffect* keyframeEffect2 = KeyframeEffect::create(element.get(), animationEffect2, timing);
 | 
| +    Animation* animation2 = m_timeline->play(keyframeEffect2);
 | 
| +    EXPECT_FALSE(CompositorAnimations::instance()->isCandidateForAnimationOnCompositor(timing, *element.get(), animation2, *animationEffect2, 1));
 | 
|      EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor());
 | 
|  
 | 
|      // A fallback to blink implementation needed, so cancel all compositor-side opacity animations for this element.
 | 
| @@ -1244,8 +1244,6 @@ TEST_F(AnimationCompositorAnimationsTest, CancelIncompatibleCompositorAnimations
 | 
|      element->setLayoutObject(nullptr);
 | 
|      LayoutObjectProxy::dispose(layoutObject);
 | 
|  
 | 
| -    animation1.release();
 | 
| -    animation2.release();
 | 
|      Heap::collectAllGarbage();
 | 
|      EXPECT_TRUE(element->elementAnimations()->animations().isEmpty());
 | 
|  }
 | 
| 
 |