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

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

Issue 1698813002: CC Animation: Expose TargetProperty enum to be aliased in Blink Platform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use custom hash in unordered_set. Created 4 years, 10 months 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
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 <stdint.h> 7 #include <stdint.h>
8 8
9 #include "cc/animation/animation_curve.h" 9 #include "cc/animation/animation_curve.h"
10 #include "cc/animation/layer_animation_controller.h" 10 #include "cc/animation/layer_animation_controller.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 PostAddInstantAnimationToMainThread(layer_tree_host()->root_layer()); 129 PostAddInstantAnimationToMainThread(layer_tree_host()->root_layer());
130 } 130 }
131 131
132 void UpdateAnimationState(LayerTreeHostImpl* host_impl, 132 void UpdateAnimationState(LayerTreeHostImpl* host_impl,
133 bool has_unfinished_animation) override { 133 bool has_unfinished_animation) override {
134 EXPECT_FALSE(has_unfinished_animation); 134 EXPECT_FALSE(has_unfinished_animation);
135 update_animation_state_was_called_ = true; 135 update_animation_state_was_called_ = true;
136 } 136 }
137 137
138 void NotifyAnimationStarted(base::TimeTicks monotonic_time, 138 void NotifyAnimationStarted(base::TimeTicks monotonic_time,
139 Animation::TargetProperty target_property, 139 AnimationTargetProperty target_property,
140 int group) override { 140 int group) override {
141 EXPECT_LT(base::TimeTicks(), monotonic_time); 141 EXPECT_LT(base::TimeTicks(), monotonic_time);
142 142
143 LayerAnimationController* controller = 143 LayerAnimationController* controller =
144 layer_tree_host()->root_layer()->layer_animation_controller(); 144 layer_tree_host()->root_layer()->layer_animation_controller();
145 Animation* animation = controller->GetAnimation(Animation::OPACITY); 145 Animation* animation =
146 controller->GetAnimation(AnimationTargetProperty::OPACITY);
146 if (animation) 147 if (animation)
147 controller->RemoveAnimation(animation->id()); 148 controller->RemoveAnimation(animation->id());
148 149
149 EndTest(); 150 EndTest();
150 } 151 }
151 152
152 void AfterTest() override { EXPECT_TRUE(update_animation_state_was_called_); } 153 void AfterTest() override { EXPECT_TRUE(update_animation_state_was_called_); }
153 154
154 private: 155 private:
155 bool update_animation_state_was_called_; 156 bool update_animation_state_was_called_;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 if (!started_animating_ && have_animations) { 214 if (!started_animating_ && have_animations) {
214 started_animating_ = true; 215 started_animating_ = true;
215 return; 216 return;
216 } 217 }
217 218
218 if (started_animating_ && !have_animations) 219 if (started_animating_ && !have_animations)
219 EndTest(); 220 EndTest();
220 } 221 }
221 222
222 void NotifyAnimationFinished(base::TimeTicks monotonic_time, 223 void NotifyAnimationFinished(base::TimeTicks monotonic_time,
223 Animation::TargetProperty target_property, 224 AnimationTargetProperty target_property,
224 int group) override { 225 int group) override {
225 // Animations on the impl-side controller only get deleted during a commit, 226 // Animations on the impl-side controller only get deleted during a commit,
226 // so we need to schedule a commit. 227 // so we need to schedule a commit.
227 layer_tree_host()->SetNeedsCommit(); 228 layer_tree_host()->SetNeedsCommit();
228 } 229 }
229 230
230 void AfterTest() override {} 231 void AfterTest() override {}
231 232
232 private: 233 private:
233 bool started_animating_; 234 bool started_animating_;
(...skipping 17 matching lines...) Expand all
251 252
252 void AnimateLayers(LayerTreeHostImpl* host_impl, 253 void AnimateLayers(LayerTreeHostImpl* host_impl,
253 base::TimeTicks monotonic_time) override { 254 base::TimeTicks monotonic_time) override {
254 // TODO(ajuma): This test only checks the active tree. Add checks for 255 // TODO(ajuma): This test only checks the active tree. Add checks for
255 // pending tree too. 256 // pending tree too.
256 if (!host_impl->active_tree()->root_layer()) 257 if (!host_impl->active_tree()->root_layer())
257 return; 258 return;
258 LayerAnimationController* controller_impl = 259 LayerAnimationController* controller_impl =
259 host_impl->active_tree()->root_layer()->children()[0]-> 260 host_impl->active_tree()->root_layer()->children()[0]->
260 layer_animation_controller(); 261 layer_animation_controller();
261 Animation* animation = controller_impl->GetAnimation(Animation::OPACITY); 262 Animation* animation =
263 controller_impl->GetAnimation(AnimationTargetProperty::OPACITY);
262 if (!animation) 264 if (!animation)
263 return; 265 return;
264 266
265 const FloatAnimationCurve* curve = 267 const FloatAnimationCurve* curve =
266 animation->curve()->ToFloatAnimationCurve(); 268 animation->curve()->ToFloatAnimationCurve();
267 float start_opacity = curve->GetValue(base::TimeDelta()); 269 float start_opacity = curve->GetValue(base::TimeDelta());
268 float end_opacity = curve->GetValue(curve->Duration()); 270 float end_opacity = curve->GetValue(curve->Duration());
269 float linearly_interpolated_opacity = 271 float linearly_interpolated_opacity =
270 0.25f * end_opacity + 0.75f * start_opacity; 272 0.25f * end_opacity + 0.75f * start_opacity;
271 base::TimeDelta time = TimeUtil::Scale(curve->Duration(), 0.25f); 273 base::TimeDelta time = TimeUtil::Scale(curve->Duration(), 0.25f);
(...skipping 24 matching lines...) Expand all
296 picture_ = FakePictureLayer::Create(layer_settings(), &client_); 298 picture_ = FakePictureLayer::Create(layer_settings(), &client_);
297 picture_->SetBounds(gfx::Size(4, 4)); 299 picture_->SetBounds(gfx::Size(4, 4));
298 client_.set_bounds(picture_->bounds()); 300 client_.set_bounds(picture_->bounds());
299 picture_->set_layer_animation_delegate(this); 301 picture_->set_layer_animation_delegate(this);
300 layer_tree_host()->root_layer()->AddChild(picture_); 302 layer_tree_host()->root_layer()->AddChild(picture_);
301 } 303 }
302 304
303 void BeginTest() override { PostAddAnimationToMainThread(picture_.get()); } 305 void BeginTest() override { PostAddAnimationToMainThread(picture_.get()); }
304 306
305 void NotifyAnimationStarted(base::TimeTicks monotonic_time, 307 void NotifyAnimationStarted(base::TimeTicks monotonic_time,
306 Animation::TargetProperty target_property, 308 AnimationTargetProperty target_property,
307 int group) override { 309 int group) override {
308 LayerAnimationController* controller = 310 LayerAnimationController* controller =
309 layer_tree_host()->root_layer()->children()[0]-> 311 layer_tree_host()->root_layer()->children()[0]->
310 layer_animation_controller(); 312 layer_animation_controller();
311 Animation* animation = controller->GetAnimation(Animation::OPACITY); 313 Animation* animation =
314 controller->GetAnimation(AnimationTargetProperty::OPACITY);
312 main_start_time_ = animation->start_time(); 315 main_start_time_ = animation->start_time();
313 controller->RemoveAnimation(animation->id()); 316 controller->RemoveAnimation(animation->id());
314 EndTest(); 317 EndTest();
315 } 318 }
316 319
317 void UpdateAnimationState(LayerTreeHostImpl* impl_host, 320 void UpdateAnimationState(LayerTreeHostImpl* impl_host,
318 bool has_unfinished_animation) override { 321 bool has_unfinished_animation) override {
319 LayerAnimationController* controller = 322 LayerAnimationController* controller =
320 impl_host->active_tree()->root_layer()->children()[0]-> 323 impl_host->active_tree()->root_layer()->children()[0]->
321 layer_animation_controller(); 324 layer_animation_controller();
322 Animation* animation = controller->GetAnimation(Animation::OPACITY); 325 Animation* animation =
326 controller->GetAnimation(AnimationTargetProperty::OPACITY);
323 if (!animation) 327 if (!animation)
324 return; 328 return;
325 329
326 impl_start_time_ = animation->start_time(); 330 impl_start_time_ = animation->start_time();
327 } 331 }
328 332
329 void AfterTest() override { 333 void AfterTest() override {
330 EXPECT_EQ(impl_start_time_, main_start_time_); 334 EXPECT_EQ(impl_start_time_, main_start_time_);
331 EXPECT_LT(base::TimeTicks(), impl_start_time_); 335 EXPECT_LT(base::TimeTicks(), impl_start_time_);
332 } 336 }
(...skipping 10 matching lines...) Expand all
343 347
344 // Ensures that notify animation finished is called. 348 // Ensures that notify animation finished is called.
345 class LayerTreeHostAnimationTestAnimationFinishedEvents 349 class LayerTreeHostAnimationTestAnimationFinishedEvents
346 : public LayerTreeHostAnimationTest { 350 : public LayerTreeHostAnimationTest {
347 public: 351 public:
348 void BeginTest() override { 352 void BeginTest() override {
349 PostAddInstantAnimationToMainThread(layer_tree_host()->root_layer()); 353 PostAddInstantAnimationToMainThread(layer_tree_host()->root_layer());
350 } 354 }
351 355
352 void NotifyAnimationFinished(base::TimeTicks monotonic_time, 356 void NotifyAnimationFinished(base::TimeTicks monotonic_time,
353 Animation::TargetProperty target_property, 357 AnimationTargetProperty target_property,
354 int group) override { 358 int group) override {
355 LayerAnimationController* controller = 359 LayerAnimationController* controller =
356 layer_tree_host()->root_layer()->layer_animation_controller(); 360 layer_tree_host()->root_layer()->layer_animation_controller();
357 Animation* animation = controller->GetAnimation(Animation::OPACITY); 361 Animation* animation =
362 controller->GetAnimation(AnimationTargetProperty::OPACITY);
358 if (animation) 363 if (animation)
359 controller->RemoveAnimation(animation->id()); 364 controller->RemoveAnimation(animation->id());
360 EndTest(); 365 EndTest();
361 } 366 }
362 367
363 void AfterTest() override {} 368 void AfterTest() override {}
364 }; 369 };
365 370
366 SINGLE_AND_MULTI_THREAD_TEST_F( 371 SINGLE_AND_MULTI_THREAD_TEST_F(
367 LayerTreeHostAnimationTestAnimationFinishedEvents); 372 LayerTreeHostAnimationTestAnimationFinishedEvents);
(...skipping 15 matching lines...) Expand all
383 } 388 }
384 389
385 void BeginTest() override { 390 void BeginTest() override {
386 PostAddAnimationToMainThread(update_check_layer_.get()); 391 PostAddAnimationToMainThread(update_check_layer_.get());
387 } 392 }
388 393
389 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { 394 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override {
390 LayerAnimationController* controller_impl = 395 LayerAnimationController* controller_impl =
391 host_impl->active_tree()->root_layer()->layer_animation_controller(); 396 host_impl->active_tree()->root_layer()->layer_animation_controller();
392 Animation* animation_impl = 397 Animation* animation_impl =
393 controller_impl->GetAnimation(Animation::OPACITY); 398 controller_impl->GetAnimation(AnimationTargetProperty::OPACITY);
394 controller_impl->RemoveAnimation(animation_impl->id()); 399 controller_impl->RemoveAnimation(animation_impl->id());
395 EndTest(); 400 EndTest();
396 } 401 }
397 402
398 void AfterTest() override { 403 void AfterTest() override {
399 // Update() should have been called once, proving that the layer was not 404 // Update() should have been called once, proving that the layer was not
400 // skipped. 405 // skipped.
401 EXPECT_EQ(1, update_check_layer_->update_count()); 406 EXPECT_EQ(1, update_check_layer_->update_count());
402 407
403 // clear update_check_layer_ so LayerTreeHost dies. 408 // clear update_check_layer_ so LayerTreeHost dies.
(...skipping 15 matching lines...) Expand all
419 public: 424 public:
420 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 425 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
421 426
422 void DidCommit() override { 427 void DidCommit() override {
423 if (layer_tree_host()->source_frame_number() == 1) { 428 if (layer_tree_host()->source_frame_number() == 1) {
424 scoped_refptr<Layer> layer = Layer::Create(layer_settings()); 429 scoped_refptr<Layer> layer = Layer::Create(layer_settings());
425 layer->set_layer_animation_delegate(this); 430 layer->set_layer_animation_delegate(this);
426 431
427 // Any valid AnimationCurve will do here. 432 // Any valid AnimationCurve will do here.
428 scoped_ptr<AnimationCurve> curve(new FakeFloatAnimationCurve()); 433 scoped_ptr<AnimationCurve> curve(new FakeFloatAnimationCurve());
429 scoped_ptr<Animation> animation( 434 scoped_ptr<Animation> animation(Animation::Create(
430 Animation::Create(std::move(curve), 1, 1, Animation::OPACITY)); 435 std::move(curve), 1, 1, AnimationTargetProperty::OPACITY));
431 layer->layer_animation_controller()->AddAnimation(std::move(animation)); 436 layer->layer_animation_controller()->AddAnimation(std::move(animation));
432 437
433 // We add the animation *before* attaching the layer to the tree. 438 // We add the animation *before* attaching the layer to the tree.
434 layer_tree_host()->root_layer()->AddChild(layer); 439 layer_tree_host()->root_layer()->AddChild(layer);
435 } 440 }
436 } 441 }
437 442
438 void AnimateLayers(LayerTreeHostImpl* impl_host, 443 void AnimateLayers(LayerTreeHostImpl* impl_host,
439 base::TimeTicks monotonic_time) override { 444 base::TimeTicks monotonic_time) override {
440 EndTest(); 445 EndTest();
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 AddOpacityTransitionToLayer(picture_.get(), 0.1, 0.2f, 0.8f, false); 614 AddOpacityTransitionToLayer(picture_.get(), 0.1, 0.2f, 0.8f, false);
610 break; 615 break;
611 case 2: 616 case 2:
612 // This second animation will not be drawn so it should not start. 617 // This second animation will not be drawn so it should not start.
613 AddAnimatedTransformToLayer(picture_.get(), 0.1, 5, 5); 618 AddAnimatedTransformToLayer(picture_.get(), 0.1, 5, 5);
614 break; 619 break;
615 } 620 }
616 } 621 }
617 622
618 void NotifyAnimationStarted(base::TimeTicks monotonic_time, 623 void NotifyAnimationStarted(base::TimeTicks monotonic_time,
619 Animation::TargetProperty target_property, 624 AnimationTargetProperty target_property,
620 int group) override { 625 int group) override {
621 if (TestEnded()) 626 if (TestEnded())
622 return; 627 return;
623 started_times_++; 628 started_times_++;
624 } 629 }
625 630
626 void AfterTest() override { 631 void AfterTest() override {
627 // Make sure we tried to draw the second animation but failed. 632 // Make sure we tried to draw the second animation but failed.
628 EXPECT_LT(0, prevented_draw_); 633 EXPECT_LT(0, prevented_draw_);
629 // The first animation should be started, but the second should not because 634 // The first animation should be started, but the second should not because
(...skipping 30 matching lines...) Expand all
660 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 665 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
661 666
662 void DidCommit() override { 667 void DidCommit() override {
663 switch (layer_tree_host()->source_frame_number()) { 668 switch (layer_tree_host()->source_frame_number()) {
664 case 1: { 669 case 1: {
665 scoped_ptr<ScrollOffsetAnimationCurve> curve( 670 scoped_ptr<ScrollOffsetAnimationCurve> curve(
666 ScrollOffsetAnimationCurve::Create( 671 ScrollOffsetAnimationCurve::Create(
667 gfx::ScrollOffset(500.f, 550.f), 672 gfx::ScrollOffset(500.f, 550.f),
668 EaseInOutTimingFunction::Create())); 673 EaseInOutTimingFunction::Create()));
669 scoped_ptr<Animation> animation(Animation::Create( 674 scoped_ptr<Animation> animation(Animation::Create(
670 std::move(curve), 1, 0, Animation::SCROLL_OFFSET)); 675 std::move(curve), 1, 0, AnimationTargetProperty::SCROLL_OFFSET));
671 animation->set_needs_synchronized_start_time(true); 676 animation->set_needs_synchronized_start_time(true);
672 bool animation_added = 677 bool animation_added =
673 scroll_layer_->AddAnimation(std::move(animation)); 678 scroll_layer_->AddAnimation(std::move(animation));
674 bool impl_scrolling_supported = 679 bool impl_scrolling_supported =
675 layer_tree_host()->proxy()->SupportsImplScrolling(); 680 layer_tree_host()->proxy()->SupportsImplScrolling();
676 EXPECT_EQ(impl_scrolling_supported, animation_added); 681 EXPECT_EQ(impl_scrolling_supported, animation_added);
677 if (!impl_scrolling_supported) 682 if (!impl_scrolling_supported)
678 EndTest(); 683 EndTest();
679 break; 684 break;
680 } 685 }
(...skipping 30 matching lines...) Expand all
711 scroll_layer_ = FakePictureLayer::Create(layer_settings(), &client_); 716 scroll_layer_ = FakePictureLayer::Create(layer_settings(), &client_);
712 scroll_layer_->SetScrollClipLayerId(layer_tree_host()->root_layer()->id()); 717 scroll_layer_->SetScrollClipLayerId(layer_tree_host()->root_layer()->id());
713 scroll_layer_->SetBounds(gfx::Size(10000, 10000)); 718 scroll_layer_->SetBounds(gfx::Size(10000, 10000));
714 client_.set_bounds(scroll_layer_->bounds()); 719 client_.set_bounds(scroll_layer_->bounds());
715 scroll_layer_->SetScrollOffset(gfx::ScrollOffset(100.0, 200.0)); 720 scroll_layer_->SetScrollOffset(gfx::ScrollOffset(100.0, 200.0));
716 layer_tree_host()->root_layer()->AddChild(scroll_layer_); 721 layer_tree_host()->root_layer()->AddChild(scroll_layer_);
717 722
718 scoped_ptr<ScrollOffsetAnimationCurve> curve( 723 scoped_ptr<ScrollOffsetAnimationCurve> curve(
719 ScrollOffsetAnimationCurve::Create(gfx::ScrollOffset(6500.f, 7500.f), 724 ScrollOffsetAnimationCurve::Create(gfx::ScrollOffset(6500.f, 7500.f),
720 EaseInOutTimingFunction::Create())); 725 EaseInOutTimingFunction::Create()));
721 scoped_ptr<Animation> animation( 726 scoped_ptr<Animation> animation(Animation::Create(
722 Animation::Create(std::move(curve), 1, 0, Animation::SCROLL_OFFSET)); 727 std::move(curve), 1, 0, AnimationTargetProperty::SCROLL_OFFSET));
723 animation->set_needs_synchronized_start_time(true); 728 animation->set_needs_synchronized_start_time(true);
724 scroll_layer_->AddAnimation(std::move(animation)); 729 scroll_layer_->AddAnimation(std::move(animation));
725 } 730 }
726 731
727 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 732 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
728 733
729 void BeginMainFrame(const BeginFrameArgs& args) override { 734 void BeginMainFrame(const BeginFrameArgs& args) override {
730 switch (layer_tree_host()->source_frame_number()) { 735 switch (layer_tree_host()->source_frame_number()) {
731 case 0: 736 case 0:
732 break; 737 break;
733 case 1: { 738 case 1: {
734 Animation* animation = 739 Animation* animation =
735 scroll_layer_->layer_animation_controller()->GetAnimation( 740 scroll_layer_->layer_animation_controller()->GetAnimation(
736 Animation::SCROLL_OFFSET); 741 AnimationTargetProperty::SCROLL_OFFSET);
737 scroll_layer_->layer_animation_controller()->RemoveAnimation( 742 scroll_layer_->layer_animation_controller()->RemoveAnimation(
738 animation->id()); 743 animation->id());
739 scroll_layer_->SetScrollOffset(final_postion_); 744 scroll_layer_->SetScrollOffset(final_postion_);
740 break; 745 break;
741 } 746 }
742 default: 747 default:
743 EXPECT_EQ(final_postion_, scroll_layer_->scroll_offset()); 748 EXPECT_EQ(final_postion_, scroll_layer_->scroll_offset());
744 } 749 }
745 } 750 }
746 751
747 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override { 752 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override {
748 host_impl->BlockNotifyReadyToActivateForTesting(true); 753 host_impl->BlockNotifyReadyToActivateForTesting(true);
749 } 754 }
750 755
751 void WillBeginImplFrameOnThread(LayerTreeHostImpl* host_impl, 756 void WillBeginImplFrameOnThread(LayerTreeHostImpl* host_impl,
752 const BeginFrameArgs& args) override { 757 const BeginFrameArgs& args) override {
753 if (!host_impl->pending_tree()) 758 if (!host_impl->pending_tree())
754 return; 759 return;
755 760
756 if (!host_impl->active_tree()->root_layer()) { 761 if (!host_impl->active_tree()->root_layer()) {
757 host_impl->BlockNotifyReadyToActivateForTesting(false); 762 host_impl->BlockNotifyReadyToActivateForTesting(false);
758 return; 763 return;
759 } 764 }
760 765
761 LayerImpl* scroll_layer_impl = 766 LayerImpl* scroll_layer_impl =
762 host_impl->active_tree()->root_layer()->children()[0].get(); 767 host_impl->active_tree()->root_layer()->children()[0].get();
763 Animation* animation = 768 Animation* animation =
764 scroll_layer_impl->layer_animation_controller()->GetAnimation( 769 scroll_layer_impl->layer_animation_controller()->GetAnimation(
765 Animation::SCROLL_OFFSET); 770 AnimationTargetProperty::SCROLL_OFFSET);
766 771
767 if (!animation || animation->run_state() != Animation::RUNNING) { 772 if (!animation || animation->run_state() != Animation::RUNNING) {
768 host_impl->BlockNotifyReadyToActivateForTesting(false); 773 host_impl->BlockNotifyReadyToActivateForTesting(false);
769 return; 774 return;
770 } 775 }
771 776
772 // Block activation until the running animation has a chance to produce a 777 // Block activation until the running animation has a chance to produce a
773 // scroll delta. 778 // scroll delta.
774 gfx::Vector2dF scroll_delta = scroll_layer_impl->ScrollDelta(); 779 gfx::Vector2dF scroll_delta = scroll_layer_impl->ScrollDelta();
775 if (scroll_delta.x() < 1.f || scroll_delta.y() < 1.f) 780 if (scroll_delta.x() < 1.f || scroll_delta.y() < 1.f)
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 if (frame_count_with_pending_tree_ == 2) { 862 if (frame_count_with_pending_tree_ == 2) {
858 host_impl->BlockNotifyReadyToActivateForTesting(false); 863 host_impl->BlockNotifyReadyToActivateForTesting(false);
859 } 864 }
860 } 865 }
861 866
862 void UpdateAnimationState(LayerTreeHostImpl* host_impl, 867 void UpdateAnimationState(LayerTreeHostImpl* host_impl,
863 bool has_unfinished_animation) override { 868 bool has_unfinished_animation) override {
864 LayerAnimationController* root_controller_impl = 869 LayerAnimationController* root_controller_impl =
865 host_impl->active_tree()->root_layer()->layer_animation_controller(); 870 host_impl->active_tree()->root_layer()->layer_animation_controller();
866 Animation* root_animation = 871 Animation* root_animation =
867 root_controller_impl->GetAnimation(Animation::OPACITY); 872 root_controller_impl->GetAnimation(AnimationTargetProperty::OPACITY);
868 if (!root_animation || root_animation->run_state() != Animation::RUNNING) 873 if (!root_animation || root_animation->run_state() != Animation::RUNNING)
869 return; 874 return;
870 875
871 LayerAnimationController* child_controller_impl = 876 LayerAnimationController* child_controller_impl =
872 host_impl->active_tree()->root_layer()->children() 877 host_impl->active_tree()->root_layer()->children()
873 [0]->layer_animation_controller(); 878 [0]->layer_animation_controller();
874 Animation* child_animation = 879 Animation* child_animation =
875 child_controller_impl->GetAnimation(Animation::OPACITY); 880 child_controller_impl->GetAnimation(AnimationTargetProperty::OPACITY);
876 EXPECT_EQ(Animation::RUNNING, child_animation->run_state()); 881 EXPECT_EQ(Animation::RUNNING, child_animation->run_state());
877 EXPECT_EQ(root_animation->start_time(), child_animation->start_time()); 882 EXPECT_EQ(root_animation->start_time(), child_animation->start_time());
878 root_controller_impl->AbortAnimations(Animation::OPACITY); 883 root_controller_impl->AbortAnimations(AnimationTargetProperty::OPACITY);
879 root_controller_impl->AbortAnimations(Animation::TRANSFORM); 884 root_controller_impl->AbortAnimations(AnimationTargetProperty::TRANSFORM);
880 child_controller_impl->AbortAnimations(Animation::OPACITY); 885 child_controller_impl->AbortAnimations(AnimationTargetProperty::OPACITY);
881 EndTest(); 886 EndTest();
882 } 887 }
883 888
884 void AfterTest() override {} 889 void AfterTest() override {}
885 890
886 private: 891 private:
887 int frame_count_with_pending_tree_; 892 int frame_count_with_pending_tree_;
888 }; 893 };
889 894
890 // This test blocks activation which is not supported for single thread mode. 895 // This test blocks activation which is not supported for single thread mode.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 930
926 // After checking this on the sync tree, we will activate, which will cause 931 // After checking this on the sync tree, we will activate, which will cause
927 // PrepareTiles to happen again (which races with the test exiting). 932 // PrepareTiles to happen again (which races with the test exiting).
928 if (TestEnded()) 933 if (TestEnded())
929 return; 934 return;
930 935
931 LayerImpl* root = host_impl->sync_tree()->root_layer(); 936 LayerImpl* root = host_impl->sync_tree()->root_layer();
932 LayerImpl* child = root->children()[0].get(); 937 LayerImpl* child = root->children()[0].get();
933 LayerAnimationController* controller_impl = 938 LayerAnimationController* controller_impl =
934 child->layer_animation_controller(); 939 child->layer_animation_controller();
935 Animation* animation = controller_impl->GetAnimation(Animation::TRANSFORM); 940 Animation* animation =
941 controller_impl->GetAnimation(AnimationTargetProperty::TRANSFORM);
936 942
937 // The animation should be starting for the first frame. 943 // The animation should be starting for the first frame.
938 EXPECT_EQ(Animation::STARTING, animation->run_state()); 944 EXPECT_EQ(Animation::STARTING, animation->run_state());
939 945
940 // And the transform should be propogated to the sync tree layer, at its 946 // And the transform should be propogated to the sync tree layer, at its
941 // starting state which is 6,7. 947 // starting state which is 6,7.
942 gfx::Transform expected_transform; 948 gfx::Transform expected_transform;
943 expected_transform.Translate(6.0, 7.0); 949 expected_transform.Translate(6.0, 7.0);
944 EXPECT_EQ(expected_transform, child->DrawTransform()); 950 EXPECT_EQ(expected_transform, child->DrawTransform());
945 // And the sync tree layer should know it is animating. 951 // And the sync tree layer should know it is animating.
946 EXPECT_TRUE(child->screen_space_transform_is_animating()); 952 EXPECT_TRUE(child->screen_space_transform_is_animating());
947 953
948 controller_impl->AbortAnimations(Animation::TRANSFORM); 954 controller_impl->AbortAnimations(AnimationTargetProperty::TRANSFORM);
949 EndTest(); 955 EndTest();
950 } 956 }
951 957
952 void AfterTest() override {} 958 void AfterTest() override {}
953 959
954 FakeContentLayerClient client_; 960 FakeContentLayerClient client_;
955 scoped_refptr<Layer> layer_; 961 scoped_refptr<Layer> layer_;
956 }; 962 };
957 963
958 SINGLE_AND_MULTI_THREAD_TEST_F( 964 SINGLE_AND_MULTI_THREAD_TEST_F(
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 // start times. 1045 // start times.
1040 if (host_impl->active_tree()->source_frame_number() < 2) 1046 if (host_impl->active_tree()->source_frame_number() < 2)
1041 return; 1047 return;
1042 AnimationRegistrar::AnimationControllerMap controllers_copy = 1048 AnimationRegistrar::AnimationControllerMap controllers_copy =
1043 host_impl->animation_registrar() 1049 host_impl->animation_registrar()
1044 ->active_animation_controllers_for_testing(); 1050 ->active_animation_controllers_for_testing();
1045 EXPECT_EQ(2u, controllers_copy.size()); 1051 EXPECT_EQ(2u, controllers_copy.size());
1046 for (auto& it : controllers_copy) { 1052 for (auto& it : controllers_copy) {
1047 int id = it.first; 1053 int id = it.first;
1048 if (id == host_impl->RootLayer()->id()) { 1054 if (id == host_impl->RootLayer()->id()) {
1049 Animation* anim = it.second->GetAnimation(Animation::TRANSFORM); 1055 Animation* anim =
1056 it.second->GetAnimation(AnimationTargetProperty::TRANSFORM);
1050 EXPECT_GT((anim->start_time() - base::TimeTicks()).InSecondsF(), 0); 1057 EXPECT_GT((anim->start_time() - base::TimeTicks()).InSecondsF(), 0);
1051 } else if (id == host_impl->RootLayer()->children()[0]->id()) { 1058 } else if (id == host_impl->RootLayer()->children()[0]->id()) {
1052 Animation* anim = it.second->GetAnimation(Animation::OPACITY); 1059 Animation* anim =
1060 it.second->GetAnimation(AnimationTargetProperty::OPACITY);
1053 EXPECT_GT((anim->start_time() - base::TimeTicks()).InSecondsF(), 0); 1061 EXPECT_GT((anim->start_time() - base::TimeTicks()).InSecondsF(), 0);
1054 } 1062 }
1055 EndTest(); 1063 EndTest();
1056 } 1064 }
1057 } 1065 }
1058 1066
1059 void AfterTest() override {} 1067 void AfterTest() override {}
1060 1068
1061 private: 1069 private:
1062 scoped_refptr<Layer> layer_; 1070 scoped_refptr<Layer> layer_;
(...skipping 16 matching lines...) Expand all
1079 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 1087 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
1080 1088
1081 void DidCommit() override { 1089 void DidCommit() override {
1082 switch (layer_tree_host()->source_frame_number()) { 1090 switch (layer_tree_host()->source_frame_number()) {
1083 case 1: 1091 case 1:
1084 AddAnimatedTransformToLayer(layer_.get(), 1.0, 5, 5); 1092 AddAnimatedTransformToLayer(layer_.get(), 1.0, 5, 5);
1085 break; 1093 break;
1086 case 2: 1094 case 2:
1087 LayerAnimationController* controller = 1095 LayerAnimationController* controller =
1088 layer_->layer_animation_controller(); 1096 layer_->layer_animation_controller();
1089 Animation* animation = controller->GetAnimation(Animation::TRANSFORM); 1097 Animation* animation =
1098 controller->GetAnimation(AnimationTargetProperty::TRANSFORM);
1090 layer_->RemoveAnimation(animation->id()); 1099 layer_->RemoveAnimation(animation->id());
1091 gfx::Transform transform; 1100 gfx::Transform transform;
1092 transform.Translate(10.f, 10.f); 1101 transform.Translate(10.f, 10.f);
1093 layer_->SetTransform(transform); 1102 layer_->SetTransform(transform);
1094 1103
1095 // Do something that causes property trees to get rebuilt. This is 1104 // Do something that causes property trees to get rebuilt. This is
1096 // intended to simulate the conditions that caused the bug whose fix 1105 // intended to simulate the conditions that caused the bug whose fix
1097 // this is testing (the test will pass without it but won't test what 1106 // this is testing (the test will pass without it but won't test what
1098 // we want it to). We were updating the wrong transform node at the end 1107 // we want it to). We were updating the wrong transform node at the end
1099 // of an animation (we were assuming the layer with the finished 1108 // of an animation (we were assuming the layer with the finished
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1155 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 1164 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
1156 1165
1157 void DidCommit() override { 1166 void DidCommit() override {
1158 switch (layer_tree_host()->source_frame_number()) { 1167 switch (layer_tree_host()->source_frame_number()) {
1159 case 1: 1168 case 1:
1160 AddAnimatedTransformToLayer(layer_.get(), 1.0, 5, 5); 1169 AddAnimatedTransformToLayer(layer_.get(), 1.0, 5, 5);
1161 break; 1170 break;
1162 case 2: 1171 case 2:
1163 LayerAnimationController* controller = 1172 LayerAnimationController* controller =
1164 layer_->layer_animation_controller(); 1173 layer_->layer_animation_controller();
1165 Animation* animation = controller->GetAnimation(Animation::TRANSFORM); 1174 Animation* animation =
1175 controller->GetAnimation(AnimationTargetProperty::TRANSFORM);
1166 layer_->RemoveAnimation(animation->id()); 1176 layer_->RemoveAnimation(animation->id());
1167 break; 1177 break;
1168 } 1178 }
1169 } 1179 }
1170 1180
1171 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { 1181 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
1172 LayerImpl* root = host_impl->sync_tree()->root_layer(); 1182 LayerImpl* root = host_impl->sync_tree()->root_layer();
1173 LayerImpl* child = root->children()[0].get(); 1183 LayerImpl* child = root->children()[0].get();
1174 switch (host_impl->sync_tree()->source_frame_number()) { 1184 switch (host_impl->sync_tree()->source_frame_number()) {
1175 case 0: 1185 case 0:
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 client_.set_bounds(picture_->bounds()); 1313 client_.set_bounds(picture_->bounds());
1304 picture_->set_layer_animation_delegate(this); 1314 picture_->set_layer_animation_delegate(this);
1305 layer_tree_host()->root_layer()->AddChild(picture_); 1315 layer_tree_host()->root_layer()->AddChild(picture_);
1306 } 1316 }
1307 1317
1308 void BeginTest() override { 1318 void BeginTest() override {
1309 PostAddLongAnimationToMainThread(picture_.get()); 1319 PostAddLongAnimationToMainThread(picture_.get());
1310 } 1320 }
1311 1321
1312 void NotifyAnimationStarted(base::TimeTicks monotonic_time, 1322 void NotifyAnimationStarted(base::TimeTicks monotonic_time,
1313 Animation::TargetProperty target_property, 1323 AnimationTargetProperty target_property,
1314 int group) override { 1324 int group) override {
1315 called_animation_started_ = true; 1325 called_animation_started_ = true;
1316 layer_tree_host()->AnimateLayers(base::TimeTicks::FromInternalValue( 1326 layer_tree_host()->AnimateLayers(base::TimeTicks::FromInternalValue(
1317 std::numeric_limits<int64_t>::max())); 1327 std::numeric_limits<int64_t>::max()));
1318 PostSetNeedsCommitToMainThread(); 1328 PostSetNeedsCommitToMainThread();
1319 } 1329 }
1320 1330
1321 void NotifyAnimationFinished(base::TimeTicks monotonic_time, 1331 void NotifyAnimationFinished(base::TimeTicks monotonic_time,
1322 Animation::TargetProperty target_property, 1332 AnimationTargetProperty target_property,
1323 int group) override { 1333 int group) override {
1324 called_animation_finished_ = true; 1334 called_animation_finished_ = true;
1325 EndTest(); 1335 EndTest();
1326 } 1336 }
1327 1337
1328 void AfterTest() override { 1338 void AfterTest() override {
1329 EXPECT_TRUE(called_animation_started_); 1339 EXPECT_TRUE(called_animation_started_);
1330 EXPECT_TRUE(called_animation_finished_); 1340 EXPECT_TRUE(called_animation_finished_);
1331 } 1341 }
1332 1342
1333 private: 1343 private:
1334 bool called_animation_started_; 1344 bool called_animation_started_;
1335 bool called_animation_finished_; 1345 bool called_animation_finished_;
1336 FakeContentLayerClient client_; 1346 FakeContentLayerClient client_;
1337 scoped_refptr<FakePictureLayer> picture_; 1347 scoped_refptr<FakePictureLayer> picture_;
1338 }; 1348 };
1339 1349
1340 SINGLE_AND_MULTI_THREAD_TEST_F( 1350 SINGLE_AND_MULTI_THREAD_TEST_F(
1341 LayerTreeHostAnimationTestNotifyAnimationFinished); 1351 LayerTreeHostAnimationTestNotifyAnimationFinished);
1342 1352
1343 } // namespace 1353 } // namespace
1344 } // namespace cc 1354 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698