Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(559)

Side by Side Diff: cc/trees/layer_tree_host_unittest_animation.cc

Issue 99733003: Add monotonic time and target property to cc::AnimationDelegate notifications (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include "cc/animation/animation_curve.h" 7 #include "cc/animation/animation_curve.h"
8 #include "cc/animation/layer_animation_controller.h" 8 #include "cc/animation/layer_animation_controller.h"
9 #include "cc/animation/timing_function.h" 9 #include "cc/animation/timing_function.h"
10 #include "cc/layers/layer.h" 10 #include "cc/layers/layer.h"
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 host_impl->active_tree()->root_layer()->layer_animation_controller(); 141 host_impl->active_tree()->root_layer()->layer_animation_controller();
142 Animation* animation_impl = 142 Animation* animation_impl =
143 controller_impl->GetAnimation(Animation::Opacity); 143 controller_impl->GetAnimation(Animation::Opacity);
144 if (animation_impl) 144 if (animation_impl)
145 controller_impl->RemoveAnimation(animation_impl->id()); 145 controller_impl->RemoveAnimation(animation_impl->id());
146 146
147 EndTest(); 147 EndTest();
148 } 148 }
149 } 149 }
150 150
151 virtual void NotifyAnimationStarted(double wall_clock_time) OVERRIDE { 151 virtual void NotifyAnimationStarted(
152 double wall_clock_time,
153 double monotonic_time,
154 Animation::TargetProperty target_property) OVERRIDE {
152 received_animation_started_notification_ = true; 155 received_animation_started_notification_ = true;
153 start_time_ = wall_clock_time; 156 start_time_ = monotonic_time;
154 if (num_animates_) { 157 if (num_animates_) {
155 EXPECT_LT(0.0, start_time_); 158 EXPECT_LT(0.0, start_time_);
156 159
157 LayerAnimationController* controller = 160 LayerAnimationController* controller =
158 layer_tree_host()->root_layer()->layer_animation_controller(); 161 layer_tree_host()->root_layer()->layer_animation_controller();
159 Animation* animation = 162 Animation* animation =
160 controller->GetAnimation(Animation::Opacity); 163 controller->GetAnimation(Animation::Opacity);
161 if (animation) 164 if (animation)
162 controller->RemoveAnimation(animation->id()); 165 controller->RemoveAnimation(animation->id());
163 166
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 active_animation_controllers().empty(); 235 active_animation_controllers().empty();
233 if (!started_animating_ && have_animations) { 236 if (!started_animating_ && have_animations) {
234 started_animating_ = true; 237 started_animating_ = true;
235 return; 238 return;
236 } 239 }
237 240
238 if (started_animating_ && !have_animations) 241 if (started_animating_ && !have_animations)
239 EndTest(); 242 EndTest();
240 } 243 }
241 244
242 virtual void NotifyAnimationFinished(double time) OVERRIDE { 245 virtual void NotifyAnimationFinished(
246 double wall_clock_time,
247 double monotonic_time,
248 Animation::TargetProperty target_property) OVERRIDE {
243 // Animations on the impl-side controller only get deleted during a commit, 249 // Animations on the impl-side controller only get deleted during a commit,
244 // so we need to schedule a commit. 250 // so we need to schedule a commit.
245 layer_tree_host()->SetNeedsCommit(); 251 layer_tree_host()->SetNeedsCommit();
246 } 252 }
247 253
248 virtual void AfterTest() OVERRIDE {} 254 virtual void AfterTest() OVERRIDE {}
249 255
250 private: 256 private:
251 bool started_animating_; 257 bool started_animating_;
252 }; 258 };
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 : active_tree_was_animated_(false) {} 308 : active_tree_was_animated_(false) {}
303 309
304 virtual base::TimeDelta LowFrequencyAnimationInterval() const OVERRIDE { 310 virtual base::TimeDelta LowFrequencyAnimationInterval() const OVERRIDE {
305 return base::TimeDelta::FromMilliseconds(4); 311 return base::TimeDelta::FromMilliseconds(4);
306 } 312 }
307 313
308 virtual void BeginTest() OVERRIDE { 314 virtual void BeginTest() OVERRIDE {
309 PostAddAnimationToMainThread(layer_tree_host()->root_layer()); 315 PostAddAnimationToMainThread(layer_tree_host()->root_layer());
310 } 316 }
311 317
312 virtual void NotifyAnimationFinished(double time) OVERRIDE { 318 virtual void NotifyAnimationFinished(
319 double wall_clock_time,
320 double monotonic_time,
321 Animation::TargetProperty target_property) OVERRIDE {
313 // Replace animated commits with an empty tree. 322 // Replace animated commits with an empty tree.
314 layer_tree_host()->SetRootLayer(make_scoped_refptr<Layer>(NULL)); 323 layer_tree_host()->SetRootLayer(make_scoped_refptr<Layer>(NULL));
315 } 324 }
316 325
317 virtual void DidCommit() OVERRIDE { 326 virtual void DidCommit() OVERRIDE {
318 // This alternates setting an empty tree and a non-empty tree with an 327 // This alternates setting an empty tree and a non-empty tree with an
319 // animation. 328 // animation.
320 switch (layer_tree_host()->source_frame_number()) { 329 switch (layer_tree_host()->source_frame_number()) {
321 case 1: 330 case 1:
322 // Wait for NotifyAnimationFinished to commit an empty tree. 331 // Wait for NotifyAnimationFinished to commit an empty tree.
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 content_ = FakeContentLayer::Create(&client_); 501 content_ = FakeContentLayer::Create(&client_);
493 content_->SetBounds(gfx::Size(4, 4)); 502 content_->SetBounds(gfx::Size(4, 4));
494 content_->set_layer_animation_delegate(this); 503 content_->set_layer_animation_delegate(this);
495 layer_tree_host()->root_layer()->AddChild(content_); 504 layer_tree_host()->root_layer()->AddChild(content_);
496 } 505 }
497 506
498 virtual void BeginTest() OVERRIDE { 507 virtual void BeginTest() OVERRIDE {
499 PostAddAnimationToMainThread(content_.get()); 508 PostAddAnimationToMainThread(content_.get());
500 } 509 }
501 510
502 virtual void NotifyAnimationStarted(double time) OVERRIDE { 511 virtual void NotifyAnimationStarted(
512 double wall_clock_time,
513 double monotonic_time,
514 Animation::TargetProperty target_property) OVERRIDE {
503 LayerAnimationController* controller = 515 LayerAnimationController* controller =
504 layer_tree_host()->root_layer()->children()[0]-> 516 layer_tree_host()->root_layer()->children()[0]->
505 layer_animation_controller(); 517 layer_animation_controller();
506 Animation* animation = 518 Animation* animation =
507 controller->GetAnimation(Animation::Opacity); 519 controller->GetAnimation(Animation::Opacity);
508 main_start_time_ = animation->start_time(); 520 main_start_time_ = animation->start_time();
509 controller->RemoveAnimation(animation->id()); 521 controller->RemoveAnimation(animation->id());
510 522
511 if (impl_start_time_ > 0.0) 523 if (impl_start_time_ > 0.0)
512 EndTest(); 524 EndTest();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 // Ensures that notify animation finished is called. 559 // Ensures that notify animation finished is called.
548 class LayerTreeHostAnimationTestAnimationFinishedEvents 560 class LayerTreeHostAnimationTestAnimationFinishedEvents
549 : public LayerTreeHostAnimationTest { 561 : public LayerTreeHostAnimationTest {
550 public: 562 public:
551 LayerTreeHostAnimationTestAnimationFinishedEvents() {} 563 LayerTreeHostAnimationTestAnimationFinishedEvents() {}
552 564
553 virtual void BeginTest() OVERRIDE { 565 virtual void BeginTest() OVERRIDE {
554 PostAddInstantAnimationToMainThread(layer_tree_host()->root_layer()); 566 PostAddInstantAnimationToMainThread(layer_tree_host()->root_layer());
555 } 567 }
556 568
557 virtual void NotifyAnimationFinished(double time) OVERRIDE { 569 virtual void NotifyAnimationFinished(
570 double wall_clock_time,
571 double monotonic_time,
572 Animation::TargetProperty target_property) OVERRIDE {
558 LayerAnimationController* controller = 573 LayerAnimationController* controller =
559 layer_tree_host()->root_layer()->layer_animation_controller(); 574 layer_tree_host()->root_layer()->layer_animation_controller();
560 Animation* animation = 575 Animation* animation =
561 controller->GetAnimation(Animation::Opacity); 576 controller->GetAnimation(Animation::Opacity);
562 if (animation) 577 if (animation)
563 controller->RemoveAnimation(animation->id()); 578 controller->RemoveAnimation(animation->id());
564 EndTest(); 579 EndTest();
565 } 580 }
566 581
567 virtual void AfterTest() OVERRIDE {} 582 virtual void AfterTest() OVERRIDE {}
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 content_->SetBounds(gfx::Size(4, 4)); 778 content_->SetBounds(gfx::Size(4, 4));
764 content_->set_layer_animation_delegate(this); 779 content_->set_layer_animation_delegate(this);
765 layer_tree_host()->root_layer()->AddChild(content_); 780 layer_tree_host()->root_layer()->AddChild(content_);
766 } 781 }
767 782
768 virtual void BeginTest() OVERRIDE { 783 virtual void BeginTest() OVERRIDE {
769 layer_tree_host()->SetViewportSize(gfx::Size()); 784 layer_tree_host()->SetViewportSize(gfx::Size());
770 PostAddAnimationToMainThread(content_.get()); 785 PostAddAnimationToMainThread(content_.get());
771 } 786 }
772 787
773 virtual void NotifyAnimationStarted(double wall_clock_time) OVERRIDE { 788 virtual void NotifyAnimationStarted(
789 double wall_clock_time,
790 double monotonic_time,
791 Animation::TargetProperty target_property) OVERRIDE {
774 started_times_++; 792 started_times_++;
775 } 793 }
776 794
777 virtual void NotifyAnimationFinished(double wall_clock_time) OVERRIDE { 795 virtual void NotifyAnimationFinished(
796 double wall_clock_time,
797 double monotonic_time,
798 Animation::TargetProperty target_property) OVERRIDE {
778 EndTest(); 799 EndTest();
779 } 800 }
780 801
781 virtual void AfterTest() OVERRIDE { 802 virtual void AfterTest() OVERRIDE {
782 EXPECT_EQ(1, started_times_); 803 EXPECT_EQ(1, started_times_);
783 } 804 }
784 805
785 private: 806 private:
786 int started_times_; 807 int started_times_;
787 FakeContentLayerClient client_; 808 FakeContentLayerClient client_;
(...skipping 21 matching lines...) Expand all
809 virtual void BeginTest() OVERRIDE { 830 virtual void BeginTest() OVERRIDE {
810 visible_ = true; 831 visible_ = true;
811 PostAddAnimationToMainThread(content_.get()); 832 PostAddAnimationToMainThread(content_.get());
812 } 833 }
813 834
814 virtual void DidCommit() OVERRIDE { 835 virtual void DidCommit() OVERRIDE {
815 visible_ = false; 836 visible_ = false;
816 layer_tree_host()->SetVisible(false); 837 layer_tree_host()->SetVisible(false);
817 } 838 }
818 839
819 virtual void NotifyAnimationStarted(double wall_clock_time) OVERRIDE { 840 virtual void NotifyAnimationStarted(
841 double wall_clock_time,
842 double monotonic_time,
843 Animation::TargetProperty target_property) OVERRIDE {
820 EXPECT_FALSE(visible_); 844 EXPECT_FALSE(visible_);
821 started_times_++; 845 started_times_++;
822 } 846 }
823 847
824 virtual void NotifyAnimationFinished(double wall_clock_time) OVERRIDE { 848 virtual void NotifyAnimationFinished(
849 double wall_clock_time,
850 double monotonic_time,
851 Animation::TargetProperty target_property) OVERRIDE {
825 EXPECT_FALSE(visible_); 852 EXPECT_FALSE(visible_);
826 EXPECT_EQ(1, started_times_); 853 EXPECT_EQ(1, started_times_);
827 EndTest(); 854 EndTest();
828 } 855 }
829 856
830 virtual void AfterTest() OVERRIDE {} 857 virtual void AfterTest() OVERRIDE {}
831 858
832 private: 859 private:
833 bool visible_; 860 bool visible_;
834 int started_times_; 861 int started_times_;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 added_animations_++; 913 added_animations_++;
887 break; 914 break;
888 case 2: 915 case 2:
889 // This second animation will not be drawn so it should not start. 916 // This second animation will not be drawn so it should not start.
890 AddAnimatedTransformToLayer(content_.get(), 0.1, 5, 5); 917 AddAnimatedTransformToLayer(content_.get(), 0.1, 5, 5);
891 added_animations_++; 918 added_animations_++;
892 break; 919 break;
893 } 920 }
894 } 921 }
895 922
896 virtual void NotifyAnimationStarted(double wall_clock_time) OVERRIDE { 923 virtual void NotifyAnimationStarted(
924 double wall_clock_time,
925 double monotonic_time,
926 Animation::TargetProperty target_property) OVERRIDE {
897 if (TestEnded()) 927 if (TestEnded())
898 return; 928 return;
899 started_times_++; 929 started_times_++;
900 } 930 }
901 931
902 virtual void NotifyAnimationFinished(double wall_clock_time) OVERRIDE { 932 virtual void NotifyAnimationFinished(
933 double wall_clock_time,
934 double monotonic_time,
935 Animation::TargetProperty target_property) OVERRIDE {
903 // We should be checkerboarding already, but it should still finish the 936 // We should be checkerboarding already, but it should still finish the
904 // first animation. 937 // first animation.
905 EXPECT_EQ(2, added_animations_); 938 EXPECT_EQ(2, added_animations_);
906 finished_times_++; 939 finished_times_++;
907 EndTest(); 940 EndTest();
908 } 941 }
909 942
910 virtual void AfterTest() OVERRIDE { 943 virtual void AfterTest() OVERRIDE {
911 // Make sure we tried to draw the second animation but failed. 944 // Make sure we tried to draw the second animation but failed.
912 EXPECT_LT(0, prevented_draw_); 945 EXPECT_LT(0, prevented_draw_);
(...skipping 10 matching lines...) Expand all
923 int finished_times_; 956 int finished_times_;
924 FakeContentLayerClient client_; 957 FakeContentLayerClient client_;
925 scoped_refptr<FakeContentLayer> content_; 958 scoped_refptr<FakeContentLayer> content_;
926 }; 959 };
927 960
928 MULTI_THREAD_TEST_F( 961 MULTI_THREAD_TEST_F(
929 LayerTreeHostAnimationTestCheckerboardDoesntStartAnimations); 962 LayerTreeHostAnimationTestCheckerboardDoesntStartAnimations);
930 963
931 } // namespace 964 } // namespace
932 } // namespace cc 965 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698