| Index: Source/core/animation/CompositorAnimationsTest.cpp
|
| diff --git a/Source/core/animation/CompositorAnimationsTest.cpp b/Source/core/animation/CompositorAnimationsTest.cpp
|
| index e3709360806702a6eaabf5e5c63ac383ecfebb28..850fdab36d1a0320e2cb833e9465cdf318194c12 100644
|
| --- a/Source/core/animation/CompositorAnimationsTest.cpp
|
| +++ b/Source/core/animation/CompositorAnimationsTest.cpp
|
| @@ -466,18 +466,18 @@ TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorTim
|
| {
|
| m_timing.timingFunction = m_cubicEaseTimingFunction;
|
| EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect2.get()));
|
| - EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| + EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
|
|
| m_timing.timingFunction = m_cubicCustomTimingFunction;
|
| EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect2.get()));
|
| - EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| + EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| }
|
|
|
| TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorTimingFunctionSteps)
|
| {
|
| m_timing.timingFunction = m_stepTimingFunction;
|
| EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect2.get()));
|
| - EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| + EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| }
|
|
|
| TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorTimingFunctionChainedLinear)
|
| @@ -486,15 +486,21 @@ TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorTim
|
| EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| }
|
|
|
| -TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorNonLinearTimingFunctionOnFirstFrame)
|
| +TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorNonLinearTimingFunctionOnFirstOrLastFrame)
|
| {
|
| - m_timing.timingFunction = m_cubicEaseTimingFunction;
|
| + (*m_keyframeVector2)[0]->setEasing(m_cubicEaseTimingFunction.get());
|
| + m_keyframeAnimationEffect2 = AnimatableValueKeyframeEffectModel::create(*m_keyframeVector2);
|
| +
|
| + (*m_keyframeVector5)[3]->setEasing(m_cubicEaseTimingFunction.get());
|
| + m_keyframeAnimationEffect5 = AnimatableValueKeyframeEffectModel::create(*m_keyframeVector5);
|
|
|
| + m_timing.timingFunction = m_cubicEaseTimingFunction;
|
| EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect2.get()));
|
| + EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
|
|
| - (*m_keyframeVector2)[0]->setEasing(m_cubicEaseTimingFunction.get());
|
| - m_keyframeAnimationEffect2 = AnimatableValueKeyframeEffectModel::create(*m_keyframeVector2);
|
| + m_timing.timingFunction = m_cubicCustomTimingFunction;
|
| EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect2.get()));
|
| + EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimationEffect5.get()));
|
| }
|
|
|
| TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorTimingFunctionChainedCubicMatchingOffsets)
|
| @@ -1099,4 +1105,52 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAu
|
| result[0].clear();
|
| }
|
|
|
| +TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTimingFunction)
|
| +{
|
| + // Animation to convert
|
| + RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyframeEffectModel(
|
| + createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0),
|
| + createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
|
| +
|
| + m_timing.timingFunction = m_cubicCustomTimingFunction;
|
| +
|
| + WebCompositorSupportMock mockCompositor;
|
| +
|
| + // Curve is created
|
| + WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
|
| + ExpectationSet usesMockCurve;
|
| + EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
|
| + .WillOnce(Return(mockCurvePtr));
|
| +
|
| + usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(WebFloatKeyframe(0.0, 2.0), WebCompositorAnimationCurve::TimingFunctionTypeLinear));
|
| + usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(WebFloatKeyframe(1.0, 5.0)));
|
| + usesMockCurve += EXPECT_CALL(*mockCurvePtr, setCubicBezierTimingFunction(1, 2, 3, 4));
|
| +
|
| + // Create animation
|
| + WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(WebCompositorAnimation::TargetPropertyOpacity);
|
| + ExpectationSet usesMockAnimation;
|
| +
|
| + usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurvePtr), WebCompositorAnimation::TargetPropertyOpacity, _, _))
|
| + .WillOnce(Return(mockAnimationPtr));
|
| +
|
| + usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1));
|
| + usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0));
|
| + usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(blink::WebCompositorAnimation::DirectionNormal));
|
| + usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1));
|
| +
|
| + EXPECT_CALL(*mockAnimationPtr, delete_())
|
| + .Times(1)
|
| + .After(usesMockAnimation);
|
| + EXPECT_CALL(*mockCurvePtr, delete_())
|
| + .Times(1)
|
| + .After(usesMockCurve);
|
| +
|
| + // Go!
|
| + setCompositorForTesting(mockCompositor);
|
| + Vector<OwnPtr<WebCompositorAnimation> > result;
|
| + getAnimationOnCompositor(m_timing, *effect.get(), result);
|
| + EXPECT_EQ(1U, result.size());
|
| + result[0].clear();
|
| +}
|
| +
|
| } // namespace blink
|
|
|