| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/animation/layer_animation_controller.h" | 5 #include "cc/animation/layer_animation_controller.h" |
| 6 | 6 |
| 7 #include "cc/animation/animation.h" | 7 #include "cc/animation/animation.h" |
| 8 #include "cc/animation/animation_curve.h" | 8 #include "cc/animation/animation_curve.h" |
| 9 #include "cc/animation/animation_delegate.h" | 9 #include "cc/animation/animation_delegate.h" |
| 10 #include "cc/animation/animation_registrar.h" | 10 #include "cc/animation/animation_registrar.h" |
| (...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 826 EXPECT_FALSE(event); | 826 EXPECT_FALSE(event); |
| 827 | 827 |
| 828 controller_impl->Animate(kInitialTickTime + duration); | 828 controller_impl->Animate(kInitialTickTime + duration); |
| 829 controller_impl->UpdateState(true, events.get()); | 829 controller_impl->UpdateState(true, events.get()); |
| 830 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset()); | 830 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset()); |
| 831 EXPECT_FALSE(controller_impl->HasActiveAnimation()); | 831 EXPECT_FALSE(controller_impl->HasActiveAnimation()); |
| 832 event = GetMostRecentPropertyUpdateEvent(events.get()); | 832 event = GetMostRecentPropertyUpdateEvent(events.get()); |
| 833 EXPECT_FALSE(event); | 833 EXPECT_FALSE(event); |
| 834 } | 834 } |
| 835 | 835 |
| 836 TEST(LayerAnimationControllerTest, ScrollOffsetRemovalNotifiesObserver) { | 836 TEST(LayerAnimationControllerTest, ScrollOffsetRemovalClearsScrollDelta) { |
| 837 FakeLayerAnimationValueObserver dummy_impl; |
| 838 FakeLayerAnimationValueProvider dummy_provider_impl; |
| 839 scoped_refptr<LayerAnimationController> controller_impl( |
| 840 LayerAnimationController::Create(0)); |
| 841 controller_impl->AddValueObserver(&dummy_impl); |
| 842 controller_impl->set_value_provider(&dummy_provider_impl); |
| 843 scoped_ptr<AnimationEventsVector> events( |
| 844 make_scoped_ptr(new AnimationEventsVector)); |
| 837 FakeLayerAnimationValueObserver dummy; | 845 FakeLayerAnimationValueObserver dummy; |
| 846 FakeLayerAnimationValueProvider dummy_provider; |
| 838 scoped_refptr<LayerAnimationController> controller( | 847 scoped_refptr<LayerAnimationController> controller( |
| 839 LayerAnimationController::Create(0)); | 848 LayerAnimationController::Create(0)); |
| 840 controller->AddValueObserver(&dummy); | 849 controller->AddValueObserver(&dummy); |
| 850 controller->set_value_provider(&dummy_provider); |
| 841 | 851 |
| 842 // First test the 1-argument version of RemoveAnimation. | 852 // First test the 1-argument version of RemoveAnimation. |
| 843 gfx::ScrollOffset target_value(300.f, 200.f); | 853 gfx::ScrollOffset target_value(300.f, 200.f); |
| 844 scoped_ptr<ScrollOffsetAnimationCurve> curve( | 854 scoped_ptr<ScrollOffsetAnimationCurve> curve( |
| 845 ScrollOffsetAnimationCurve::Create( | 855 ScrollOffsetAnimationCurve::Create( |
| 846 target_value, EaseInOutTimingFunction::Create().Pass())); | 856 target_value, EaseInOutTimingFunction::Create().Pass())); |
| 847 | 857 |
| 848 int animation_id = 1; | 858 int animation_id = 1; |
| 849 scoped_ptr<Animation> animation(Animation::Create( | 859 scoped_ptr<Animation> animation(Animation::Create( |
| 850 curve.Pass(), animation_id, 0, Animation::ScrollOffset)); | 860 curve.Pass(), animation_id, 0, Animation::ScrollOffset)); |
| 861 animation->set_needs_synchronized_start_time(true); |
| 851 controller->AddAnimation(animation.Pass()); | 862 controller->AddAnimation(animation.Pass()); |
| 863 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 864 controller_impl->ActivateAnimations(); |
| 865 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 866 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 852 | 867 |
| 853 controller->RemoveAnimation(animation_id); | 868 controller->RemoveAnimation(animation_id); |
| 854 EXPECT_TRUE(dummy.scroll_offset_animation_removed()); | 869 EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted()); |
| 870 |
| 871 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 872 EXPECT_TRUE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 873 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 874 |
| 875 controller_impl->ActivateAnimations(); |
| 876 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 855 | 877 |
| 856 // Now, test the 2-argument version of RemoveAnimation. | 878 // Now, test the 2-argument version of RemoveAnimation. |
| 857 dummy.reset_scroll_offset_animation_removed(); | |
| 858 curve = ScrollOffsetAnimationCurve::Create( | 879 curve = ScrollOffsetAnimationCurve::Create( |
| 859 target_value, EaseInOutTimingFunction::Create().Pass()); | 880 target_value, EaseInOutTimingFunction::Create().Pass()); |
| 860 animation = | 881 animation = |
| 861 Animation::Create(curve.Pass(), animation_id, 0, Animation::ScrollOffset); | 882 Animation::Create(curve.Pass(), animation_id, 0, Animation::ScrollOffset); |
| 883 animation->set_needs_synchronized_start_time(true); |
| 862 controller->AddAnimation(animation.Pass()); | 884 controller->AddAnimation(animation.Pass()); |
| 885 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 886 controller_impl->ActivateAnimations(); |
| 887 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 888 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 863 | 889 |
| 864 controller->RemoveAnimation(animation_id, Animation::ScrollOffset); | 890 controller->RemoveAnimation(animation_id); |
| 865 EXPECT_TRUE(dummy.scroll_offset_animation_removed()); | 891 EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted()); |
| 866 | 892 |
| 867 // Check that removing non-scroll-offset animations does not cause the | 893 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 868 // observer to get notified. | 894 EXPECT_TRUE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 869 dummy.reset_scroll_offset_animation_removed(); | 895 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 896 |
| 897 controller_impl->ActivateAnimations(); |
| 898 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 899 |
| 900 // Check that removing non-scroll-offset animations does not cause |
| 901 // scroll_offset_animation_was_interrupted() to get set. |
| 870 animation_id = AddAnimatedTransformToController(controller.get(), 1.0, 1, 2); | 902 animation_id = AddAnimatedTransformToController(controller.get(), 1.0, 1, 2); |
| 903 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 904 controller_impl->ActivateAnimations(); |
| 905 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 906 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 907 |
| 871 controller->RemoveAnimation(animation_id); | 908 controller->RemoveAnimation(animation_id); |
| 872 EXPECT_FALSE(dummy.scroll_offset_animation_removed()); | 909 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 873 | 910 |
| 874 dummy.reset_scroll_offset_animation_removed(); | 911 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 912 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 913 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 914 |
| 915 controller_impl->ActivateAnimations(); |
| 916 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 917 |
| 875 animation_id = | 918 animation_id = |
| 876 AddAnimatedFilterToController(controller.get(), 1.0, 0.1f, 0.2f); | 919 AddAnimatedFilterToController(controller.get(), 1.0, 0.1f, 0.2f); |
| 877 controller->RemoveAnimation(animation_id, Animation::Filter); | 920 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 878 EXPECT_FALSE(dummy.scroll_offset_animation_removed()); | 921 controller_impl->ActivateAnimations(); |
| 922 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 923 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 924 |
| 925 controller->RemoveAnimation(animation_id); |
| 926 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 927 |
| 928 controller->PushAnimationUpdatesTo(controller_impl.get()); |
| 929 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 930 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
| 931 |
| 932 controller_impl->ActivateAnimations(); |
| 933 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
| 879 } | 934 } |
| 880 | 935 |
| 881 class FakeAnimationDelegate : public AnimationDelegate { | 936 class FakeAnimationDelegate : public AnimationDelegate { |
| 882 public: | 937 public: |
| 883 FakeAnimationDelegate() | 938 FakeAnimationDelegate() |
| 884 : started_(false), | 939 : started_(false), |
| 885 finished_(false) {} | 940 finished_(false) {} |
| 886 | 941 |
| 887 void NotifyAnimationStarted(TimeTicks monotonic_time, | 942 void NotifyAnimationStarted(TimeTicks monotonic_time, |
| 888 Animation::TargetProperty target_property, | 943 Animation::TargetProperty target_property, |
| (...skipping 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2351 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Opacity)); | 2406 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Opacity)); |
| 2352 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Filter)); | 2407 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Filter)); |
| 2353 | 2408 |
| 2354 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 2409 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
| 2355 controller->UpdateState(true, nullptr); | 2410 controller->UpdateState(true, nullptr); |
| 2356 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::Opacity)); | 2411 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::Opacity)); |
| 2357 } | 2412 } |
| 2358 | 2413 |
| 2359 } // namespace | 2414 } // namespace |
| 2360 } // namespace cc | 2415 } // namespace cc |
| OLD | NEW |