Chromium Code Reviews| Index: third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp |
| diff --git a/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp b/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp |
| index af2f65d14d86689eda73d2959e44a5c928158d2b..1083bbb154db0f0ae4666904b4a4dee902867293 100644 |
| --- a/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp |
| +++ b/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp |
| @@ -34,7 +34,6 @@ |
| #include "core/animation/Animation.h" |
| #include "core/animation/AnimationTimeline.h" |
| #include "core/animation/CompositorAnimationsImpl.h" |
| -#include "core/animation/CompositorAnimationsTestHelper.h" |
| #include "core/animation/CompositorPendingAnimations.h" |
| #include "core/animation/ElementAnimations.h" |
| #include "core/animation/KeyframeEffect.h" |
| @@ -46,12 +45,13 @@ |
| #include "core/layout/LayoutObject.h" |
| #include "core/testing/DummyPageHolder.h" |
| #include "platform/animation/CompositorAnimation.h" |
| +#include "platform/animation/CompositorFloatAnimationCurve.h" |
| +#include "platform/animation/CompositorFloatKeyframe.h" |
| #include "platform/geometry/FloatBox.h" |
| #include "platform/geometry/IntSize.h" |
| #include "platform/graphics/filters/FilterOperations.h" |
| #include "platform/transforms/TransformOperations.h" |
| #include "platform/transforms/TranslateTransformOperation.h" |
| -#include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "wtf/HashFunctions.h" |
| #include "wtf/OwnPtr.h" |
| @@ -61,12 +61,7 @@ |
| namespace blink { |
| -using ::testing::ExpectationSet; |
| -using ::testing::Ref; |
| -using ::testing::Return; |
| -using ::testing::_; |
| - |
| -class AnimationCompositorAnimationsTest : public AnimationCompositorAnimationsTestBase { |
| +class AnimationCompositorAnimationsTest : public ::testing::Test { |
| protected: |
| RefPtr<TimingFunction> m_linearTimingFunction; |
| RefPtr<TimingFunction> m_cubicEaseTimingFunction; |
| @@ -84,15 +79,9 @@ protected: |
| Persistent<Element> m_element; |
| Persistent<AnimationTimeline> m_timeline; |
| OwnPtr<DummyPageHolder> m_pageHolder; |
| - CompositorFactoryMock* m_mockCompositorFactory; |
| void SetUp() override |
| { |
| - AnimationCompositorAnimationsTestBase::SetUp(); |
| - |
| - m_mockCompositorFactory = new CompositorFactoryMock(); |
| - CompositorFactory::initializeForTesting(adoptPtr(m_mockCompositorFactory)); |
| - |
| m_linearTimingFunction = LinearTimingFunction::shared(); |
| m_cubicEaseTimingFunction = CubicBezierTimingFunction::preset(CubicBezierTimingFunction::EaseType::EASE); |
| m_cubicCustomTimingFunction = CubicBezierTimingFunction::create(1, 2, 3, 4); |
| @@ -110,27 +99,15 @@ protected: |
| m_keyframeVector5 = createCompositableFloatKeyframeVector(5); |
| m_keyframeAnimationEffect5 = AnimatableValueKeyframeEffectModel::create(*m_keyframeVector5); |
| - EXPECT_CALL(*m_mockCompositorFactory, createAnimationTimeline()) |
| - .WillOnce(Return(new WebCompositorAnimationTimelineMock())); |
| - |
| m_pageHolder = DummyPageHolder::create(); |
| m_document = &m_pageHolder->document(); |
| m_document->animationClock().resetTimeForTesting(); |
| - EXPECT_CALL(*m_mockCompositorFactory, createAnimationTimeline()) |
| - .WillOnce(Return(new WebCompositorAnimationTimelineMock())); |
| - |
| m_timeline = AnimationTimeline::create(m_document.get()); |
| m_timeline->resetForTesting(); |
| m_element = m_document->createElement("test", ASSERT_NO_EXCEPTION); |
| } |
| - void TearDown() override |
| - { |
| - m_mockCompositorFactory = nullptr; |
| - CompositorFactory::shutdown(); |
| - } |
| - |
| public: |
| bool convertTimingForCompositor(const Timing& t, CompositorAnimationsImpl::CompositorTiming& out) |
| { |
| @@ -142,11 +119,11 @@ public: |
| } |
| void getAnimationOnCompositor(Timing& timing, AnimatableValueKeyframeEffectModel& effect, Vector<OwnPtr<CompositorAnimation>>& animations) |
| { |
| - return getAnimationOnCompositor(timing, effect, animations, 1); |
| + getAnimationOnCompositor(timing, effect, animations, 1); |
| } |
| void getAnimationOnCompositor(Timing& timing, AnimatableValueKeyframeEffectModel& effect, Vector<OwnPtr<CompositorAnimation>>& animations, double playerPlaybackRate) |
| { |
| - return CompositorAnimationsImpl::getAnimationOnCompositor(timing, 0, std::numeric_limits<double>::quiet_NaN(), 0, effect, animations, playerPlaybackRate); |
| + CompositorAnimationsImpl::getAnimationOnCompositor(timing, 0, std::numeric_limits<double>::quiet_NaN(), 0, effect, animations, playerPlaybackRate); |
| } |
| bool getAnimationBounds(FloatBox& boundingBox, const EffectModel& effect, double minValue, double maxValue) |
| { |
| @@ -270,6 +247,19 @@ public: |
| m_document->compositorPendingAnimations().update(false); |
| m_timeline->serviceAnimations(TimingUpdateForAnimationFrame); |
| } |
| + |
| + PassOwnPtr<CompositorAnimation> convertToCompositorAnimation(AnimatableValueKeyframeEffectModel& effect, double playerPlaybackRate) |
| + { |
| + Vector<OwnPtr<CompositorAnimation>> result; |
| + getAnimationOnCompositor(m_timing, effect, result, playerPlaybackRate); |
| + DCHECK_EQ(1U, result.size()); |
| + return adoptPtr(result[0].leakPtr()); |
|
jbroman
2016/06/01 14:51:28
Please avoid using leakPtr unless you need a raw p
loyso (OOO)
2016/06/02 02:16:46
Done.
|
| + } |
| + |
| + PassOwnPtr<CompositorAnimation> convertToCompositorAnimation(AnimatableValueKeyframeEffectModel& effect) |
| + { |
| + return convertToCompositorAnimation(effect, 1.0); |
| + } |
| }; |
| class LayoutObjectProxy : public LayoutObject { |
| @@ -656,41 +646,26 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimation) |
| AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel( |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0), |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(1.0, animation->iterations()); |
| + EXPECT_EQ(0, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::NORMAL, animation->getDirection()); |
| + EXPECT_EQ(1.0, animation->playbackRate()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(2UL, keyframes.size()); |
| + |
| + EXPECT_EQ(0, keyframes[0].time); |
| + EXPECT_EQ(2.0f, keyframes[0].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(0)); |
| + |
| + EXPECT_EQ(1.0, keyframes[1].time); |
| + EXPECT_EQ(5.0f, keyframes[1].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE, keyframedFloatCurve->getKeyframeEaseTypeForTesting(1)); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration) |
| @@ -700,42 +675,16 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration) |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0), |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); |
| - m_timing.iterationDuration = 10.0; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(10.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + const double duration = 10.0; |
| + m_timing.iterationDuration = duration; |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(2UL, keyframes.size()); |
| + |
| + EXPECT_EQ(duration, keyframes[1].time); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimationLinear) |
| @@ -750,44 +699,34 @@ TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation |
| m_timing.iterationCount = 5; |
| m_timing.direction = Timing::PlaybackDirectionAlternate; |
| m_timing.playbackRate = 2.0; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock(); |
| - ExpectationSet usesMockCurve; |
| - |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.25, -1.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.5, 20.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // KeyframeEffect is created |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(5)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::ALTERNATE_NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(2.0)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(5.0, animation->iterations()); |
| + EXPECT_EQ(0, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::ALTERNATE_NORMAL, animation->getDirection()); |
| + EXPECT_EQ(2.0, animation->playbackRate()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(4UL, keyframes.size()); |
| + |
| + EXPECT_EQ(0, keyframes[0].time); |
| + EXPECT_EQ(2.0f, keyframes[0].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(0)); |
| + |
| + EXPECT_EQ(0.25, keyframes[1].time); |
| + EXPECT_EQ(-1.0f, keyframes[1].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(1)); |
| + |
| + EXPECT_EQ(0.5, keyframes[2].time); |
| + EXPECT_EQ(20.0f, keyframes[2].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(2)); |
| + |
| + EXPECT_EQ(1.0, keyframes[3].time); |
| + EXPECT_EQ(5.0f, keyframes[3].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE, keyframedFloatCurve->getKeyframeEaseTypeForTesting(3)); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationStartDelay) |
| @@ -797,44 +736,25 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationStartDelay |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0), |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); |
| + const double startDelay = 3.25; |
| + |
| m_timing.iterationCount = 5.0; |
| m_timing.iterationDuration = 1.75; |
| - m_timing.startDelay = 3.25; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.75, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(5)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(-3.25)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + m_timing.startDelay = startDelay; |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(5.0, animation->iterations()); |
| + EXPECT_EQ(-startDelay, animation->timeOffset()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(2UL, keyframes.size()); |
| + |
| + EXPECT_EQ(1.75, keyframes[1].time); |
| + EXPECT_EQ(5.0f, keyframes[1].value); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimationChained) |
| @@ -854,44 +774,34 @@ TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation |
| m_timing.iterationDuration = 2.0; |
| m_timing.iterationCount = 10; |
| m_timing.direction = Timing::PlaybackDirectionAlternate; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock(); |
| - ExpectationSet usesMockCurve; |
| - |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(0.0, 2.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.5, -1.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 20.0), 1.0, 2.0, 3.0, 4.0)); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(2.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // KeyframeEffect is created |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(10)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::ALTERNATE_NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(10.0, animation->iterations()); |
| + EXPECT_EQ(0, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::ALTERNATE_NORMAL, animation->getDirection()); |
| + EXPECT_EQ(1.0, animation->playbackRate()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(4UL, keyframes.size()); |
| + |
| + EXPECT_EQ(0, keyframes[0].time); |
| + EXPECT_EQ(2.0f, keyframes[0].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE, keyframedFloatCurve->getKeyframeEaseTypeForTesting(0)); |
| + |
| + EXPECT_EQ(0.5, keyframes[1].time); |
| + EXPECT_EQ(-1.0f, keyframes[1].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(1)); |
| + |
| + EXPECT_EQ(1.0, keyframes[2].time); |
| + EXPECT_EQ(20.0f, keyframes[2].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::CUSTOM, keyframedFloatCurve->getKeyframeEaseTypeForTesting(2)); |
| + |
| + EXPECT_EQ(2.0, keyframes[3].time); |
| + EXPECT_EQ(5.0f, keyframes[3].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE, keyframedFloatCurve->getKeyframeEaseTypeForTesting(3)); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation) |
| @@ -912,44 +822,36 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation) |
| m_timing.timingFunction = m_linearTimingFunction.get(); |
| m_timing.iterationCount = 10; |
| m_timing.direction = Timing::PlaybackDirectionAlternateReverse; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock(); |
| - ExpectationSet usesMockCurve; |
| - |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(0.0, 2.0), CubicBezierTimingFunction::EaseType::EASE_IN)); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.25, -1.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(0.5, 20.0), 0.0, 0.0, 0.0, 1.0)); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create the animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(10)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::ALTERNATE_REVERSE)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(10.0, animation->iterations()); |
| + EXPECT_EQ(0, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::ALTERNATE_REVERSE, animation->getDirection()); |
| + EXPECT_EQ(1.0, animation->playbackRate()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(4UL, keyframes.size()); |
| + |
| + EXPECT_TRUE(keyframedFloatCurve->curveHasLinearTimingFunctionForTesting()); |
| + |
| + EXPECT_EQ(0, keyframes[0].time); |
| + EXPECT_EQ(2.0f, keyframes[0].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE_IN, keyframedFloatCurve->getKeyframeEaseTypeForTesting(0)); |
| + |
| + EXPECT_EQ(0.25, keyframes[1].time); |
| + EXPECT_EQ(-1.0f, keyframes[1].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(1)); |
| + |
| + EXPECT_EQ(0.5, keyframes[2].time); |
| + EXPECT_EQ(20.0f, keyframes[2].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::CUSTOM, keyframedFloatCurve->getKeyframeEaseTypeForTesting(2)); |
| + |
| + EXPECT_EQ(1.0, keyframes[3].time); |
| + EXPECT_EQ(5.0f, keyframes[3].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE, keyframedFloatCurve->getKeyframeEaseTypeForTesting(3)); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegativeStartDelay) |
| @@ -959,45 +861,24 @@ TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegative |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0), |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); |
| + const double negativeStartDelay = -3; |
| + |
| m_timing.iterationCount = 5.0; |
| m_timing.iterationDuration = 1.5; |
| - m_timing.startDelay = -3; |
| + m_timing.startDelay = negativeStartDelay; |
| m_timing.direction = Timing::PlaybackDirectionAlternateReverse; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.5, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(5)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(3.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::ALTERNATE_REVERSE)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(5.0, animation->iterations()); |
| + EXPECT_EQ(-negativeStartDelay, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::ALTERNATE_REVERSE, animation->getDirection()); |
| + EXPECT_EQ(1.0, animation->playbackRate()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(2UL, keyframes.size()); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRates) |
| @@ -1007,43 +888,22 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRa |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0), |
| createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); |
| - m_timing.playbackRate = 2; |
| - // -- |
| - |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(-3)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - // Set player plaback rate also |
| - getAnimationOnCompositor(m_timing, *effect, result, -1.5); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + const double playbackRate = 2; |
| + const double playerPlaybackRate = -1.5; |
| + |
| + m_timing.playbackRate = playbackRate; |
| + |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect, playerPlaybackRate); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(1.0, animation->iterations()); |
| + EXPECT_EQ(0, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::NORMAL, animation->getDirection()); |
| + EXPECT_EQ(playbackRate * playerPlaybackRate, animation->playbackRate()); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(2UL, keyframes.size()); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNone) |
| @@ -1055,40 +915,8 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNo |
| m_timing.fillMode = Timing::FillModeNone; |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setFillMode(CompositorAnimation::FillMode::NONE)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorAnimation::FillMode::NONE, animation->getFillMode()); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAuto) |
| @@ -1100,40 +928,13 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAu |
| m_timing.fillMode = Timing::FillModeAuto; |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setFillMode(CompositorAnimation::FillMode::NONE)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + EXPECT_EQ(CompositorTargetProperty::OPACITY, animation->targetProperty()); |
| + EXPECT_EQ(1.0, animation->iterations()); |
| + EXPECT_EQ(0, animation->timeOffset()); |
| + EXPECT_EQ(CompositorAnimation::Direction::NORMAL, animation->getDirection()); |
| + EXPECT_EQ(1.0, animation->playbackRate()); |
| + EXPECT_EQ(CompositorAnimation::FillMode::NONE, animation->getFillMode()); |
| } |
| TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTimingFunction) |
| @@ -1145,43 +946,25 @@ TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTiming |
| m_timing.timingFunction = m_cubicCustomTimingFunction; |
| - // Curve is created |
| - WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; |
| - ExpectationSet usesMockCurve; |
| - EXPECT_CALL(*m_mockCompositorFactory, createFloatAnimationCurve()) |
| - .WillOnce(Return(mockCurvePtr)); |
| - |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addLinearKeyframe(CompositorFloatKeyframe(0.0, 2.0))); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, addCubicBezierKeyframe(CompositorFloatKeyframe(1.0, 5.0), CubicBezierTimingFunction::EaseType::EASE)); |
| - usesMockCurve += EXPECT_CALL(*mockCurvePtr, setCubicBezierTimingFunction(1, 2, 3, 4)); |
| - |
| - // Create animation |
| - WebCompositorAnimationMock* mockAnimationPtr = new WebCompositorAnimationMock(CompositorTargetProperty::OPACITY); |
| - ExpectationSet usesMockAnimation; |
| - |
| - usesMockCurve += EXPECT_CALL(*m_mockCompositorFactory, createAnimation(Ref(*mockCurvePtr), CompositorTargetProperty::OPACITY, _, _)) |
| - .WillOnce(Return(mockAnimationPtr)); |
| - |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setDirection(CompositorAnimation::Direction::NORMAL)); |
| - usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setPlaybackRate(1)); |
| - |
| - EXPECT_CALL(*mockAnimationPtr, delete_()) |
| - .Times(1) |
| - .After(usesMockAnimation); |
| - EXPECT_CALL(*mockCurvePtr, delete_()) |
| - .Times(1) |
| - .After(usesMockCurve); |
| - |
| - // Go! |
| - Vector<OwnPtr<CompositorAnimation>> result; |
| - getAnimationOnCompositor(m_timing, *effect, result); |
| - EXPECT_EQ(1U, result.size()); |
| - result[0].reset(); |
| + OwnPtr<CompositorAnimation> animation = convertToCompositorAnimation(*effect); |
| + |
| + OwnPtr<CompositorFloatAnimationCurve> keyframedFloatCurve = animation->floatCurveForTesting(); |
| + |
| + Vector<CompositorFloatKeyframe> keyframes = keyframedFloatCurve->keyframesForTesting(); |
| + ASSERT_EQ(2UL, keyframes.size()); |
| + |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::CUSTOM, keyframedFloatCurve->getCurveEaseTypeForTesting()); |
| + |
| + EXPECT_EQ(0, keyframes[0].time); |
| + EXPECT_EQ(2.0f, keyframes[0].value); |
| + EXPECT_TRUE(keyframedFloatCurve->keyframeHasLinearTimingFunctionForTesting(0)); |
| + |
| + EXPECT_EQ(1.0, keyframes[1].time); |
| + EXPECT_EQ(5.0f, keyframes[1].value); |
| + EXPECT_EQ(CubicBezierTimingFunction::EaseType::EASE, keyframedFloatCurve->getKeyframeEaseTypeForTesting(1)); |
| } |
| -TEST_F(AnimationCompositorAnimationsTest, CancelIncompatibleCompositorAnimations) |
| +TEST_F(AnimationCompositorAnimationsTest, cancelIncompatibleCompositorAnimations) |
| { |
| Persistent<Element> element = m_document->createElement("shared", ASSERT_NO_EXCEPTION); |