| Index: cc/animation/layer_animation_controller_unittest.cc
|
| diff --git a/cc/animation/layer_animation_controller_unittest.cc b/cc/animation/layer_animation_controller_unittest.cc
|
| index 7c2dc457a68b2ebe521e71b382425f0a7a8d0b4a..ba639b385a631c803b5d19151498fa5b3190595b 100644
|
| --- a/cc/animation/layer_animation_controller_unittest.cc
|
| +++ b/cc/animation/layer_animation_controller_unittest.cc
|
| @@ -833,11 +833,21 @@ TEST(LayerAnimationControllerTest, ScrollOffsetTransitionOnImplOnly) {
|
| EXPECT_FALSE(event);
|
| }
|
|
|
| -TEST(LayerAnimationControllerTest, ScrollOffsetRemovalNotifiesObserver) {
|
| +TEST(LayerAnimationControllerTest, ScrollOffsetRemovalClearsScrollDelta) {
|
| + FakeLayerAnimationValueObserver dummy_impl;
|
| + FakeLayerAnimationValueProvider dummy_provider_impl;
|
| + scoped_refptr<LayerAnimationController> controller_impl(
|
| + LayerAnimationController::Create(0));
|
| + controller_impl->AddValueObserver(&dummy_impl);
|
| + controller_impl->set_value_provider(&dummy_provider_impl);
|
| + scoped_ptr<AnimationEventsVector> events(
|
| + make_scoped_ptr(new AnimationEventsVector));
|
| FakeLayerAnimationValueObserver dummy;
|
| + FakeLayerAnimationValueProvider dummy_provider;
|
| scoped_refptr<LayerAnimationController> controller(
|
| LayerAnimationController::Create(0));
|
| controller->AddValueObserver(&dummy);
|
| + controller->set_value_provider(&dummy_provider);
|
|
|
| // First test the 1-argument version of RemoveAnimation.
|
| gfx::ScrollOffset target_value(300.f, 200.f);
|
| @@ -848,34 +858,79 @@ TEST(LayerAnimationControllerTest, ScrollOffsetRemovalNotifiesObserver) {
|
| int animation_id = 1;
|
| scoped_ptr<Animation> animation(Animation::Create(
|
| curve.Pass(), animation_id, 0, Animation::ScrollOffset));
|
| + animation->set_needs_synchronized_start_time(true);
|
| controller->AddAnimation(animation.Pass());
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
|
|
| controller->RemoveAnimation(animation_id);
|
| - EXPECT_TRUE(dummy.scroll_offset_animation_removed());
|
| + EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + EXPECT_TRUE(controller_impl->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
|
|
| // Now, test the 2-argument version of RemoveAnimation.
|
| - dummy.reset_scroll_offset_animation_removed();
|
| curve = ScrollOffsetAnimationCurve::Create(
|
| target_value, EaseInOutTimingFunction::Create().Pass());
|
| animation =
|
| Animation::Create(curve.Pass(), animation_id, 0, Animation::ScrollOffset);
|
| + animation->set_needs_synchronized_start_time(true);
|
| controller->AddAnimation(animation.Pass());
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
|
|
| - controller->RemoveAnimation(animation_id, Animation::ScrollOffset);
|
| - EXPECT_TRUE(dummy.scroll_offset_animation_removed());
|
| + controller->RemoveAnimation(animation_id);
|
| + EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + EXPECT_TRUE(controller_impl->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
|
|
| - // Check that removing non-scroll-offset animations does not cause the
|
| - // observer to get notified.
|
| - dummy.reset_scroll_offset_animation_removed();
|
| + // Check that removing non-scroll-offset animations does not cause
|
| + // scroll_offset_animation_was_interrupted() to get set.
|
| animation_id = AddAnimatedTransformToController(controller.get(), 1.0, 1, 2);
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
| +
|
| controller->RemoveAnimation(animation_id);
|
| - EXPECT_FALSE(dummy.scroll_offset_animation_removed());
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
|
|
| - dummy.reset_scroll_offset_animation_removed();
|
| animation_id =
|
| AddAnimatedFilterToController(controller.get(), 1.0, 0.1f, 0.2f);
|
| - controller->RemoveAnimation(animation_id, Animation::Filter);
|
| - EXPECT_FALSE(dummy.scroll_offset_animation_removed());
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller->RemoveAnimation(animation_id);
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller->PushAnimationUpdatesTo(controller_impl.get());
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
| + EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted());
|
| +
|
| + controller_impl->ActivateAnimations();
|
| + EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted());
|
| }
|
|
|
| class FakeAnimationDelegate : public AnimationDelegate {
|
|
|