| 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..f3edcabd8a1c3662b3bcccdf670a79819e49cee7 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 std::move(result[0]);
|
| + }
|
| +
|
| + 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);
|
|
|
|
|