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

Side by Side Diff: cc/animation/element_animations_unittest.cc

Issue 1922833002: CC Animation: Start replacing int layer_id with ElementId element_id. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « cc/animation/element_animations.cc ('k') | cc/test/animation_timelines_test_common.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/element_animations.h" 5 #include "cc/animation/element_animations.h"
6 6
7 #include "cc/animation/animation_delegate.h" 7 #include "cc/animation/animation_delegate.h"
8 #include "cc/animation/animation_host.h" 8 #include "cc/animation/animation_host.h"
9 #include "cc/animation/animation_id_provider.h" 9 #include "cc/animation/animation_id_provider.h"
10 #include "cc/animation/animation_player.h" 10 #include "cc/animation/animation_player.h"
(...skipping 25 matching lines...) Expand all
36 public: 36 public:
37 ElementAnimationsTest() {} 37 ElementAnimationsTest() {}
38 ~ElementAnimationsTest() override {} 38 ~ElementAnimationsTest() override {}
39 }; 39 };
40 40
41 // See animation_player_unittest.cc for integration with AnimationPlayer. 41 // See animation_player_unittest.cc for integration with AnimationPlayer.
42 42
43 TEST_F(ElementAnimationsTest, AttachToLayerInActiveTree) { 43 TEST_F(ElementAnimationsTest, AttachToLayerInActiveTree) {
44 // Set up the layer which is in active tree for main thread and not 44 // Set up the layer which is in active tree for main thread and not
45 // yet passed onto the impl thread. 45 // yet passed onto the impl thread.
46 client_.RegisterLayer(layer_id_, LayerTreeType::ACTIVE); 46 client_.RegisterLayer(element_id_, LayerTreeType::ACTIVE);
47 client_impl_.RegisterLayer(layer_id_, LayerTreeType::PENDING); 47 client_impl_.RegisterLayer(element_id_, LayerTreeType::PENDING);
48 48
49 EXPECT_TRUE(client_.IsLayerInTree(layer_id_, LayerTreeType::ACTIVE)); 49 EXPECT_TRUE(client_.IsLayerInTree(element_id_, LayerTreeType::ACTIVE));
50 EXPECT_FALSE(client_.IsLayerInTree(layer_id_, LayerTreeType::PENDING)); 50 EXPECT_FALSE(client_.IsLayerInTree(element_id_, LayerTreeType::PENDING));
51 51
52 host_->AddAnimationTimeline(timeline_); 52 host_->AddAnimationTimeline(timeline_);
53 53
54 timeline_->AttachPlayer(player_); 54 timeline_->AttachPlayer(player_);
55 player_->AttachLayer(layer_id_); 55 player_->AttachLayer(element_id_);
56 56
57 scoped_refptr<ElementAnimations> element_animations = 57 scoped_refptr<ElementAnimations> element_animations =
58 player_->element_animations(); 58 player_->element_animations();
59 EXPECT_TRUE(element_animations); 59 EXPECT_TRUE(element_animations);
60 60
61 EXPECT_TRUE(element_animations->has_element_in_active_list()); 61 EXPECT_TRUE(element_animations->has_element_in_active_list());
62 EXPECT_FALSE(element_animations->has_element_in_pending_list()); 62 EXPECT_FALSE(element_animations->has_element_in_pending_list());
63 63
64 host_->PushPropertiesTo(host_impl_); 64 host_->PushPropertiesTo(host_impl_);
65 65
66 GetImplTimelineAndPlayerByID(); 66 GetImplTimelineAndPlayerByID();
67 67
68 scoped_refptr<ElementAnimations> element_animations_impl = 68 scoped_refptr<ElementAnimations> element_animations_impl =
69 player_impl_->element_animations(); 69 player_impl_->element_animations();
70 EXPECT_TRUE(element_animations_impl); 70 EXPECT_TRUE(element_animations_impl);
71 71
72 EXPECT_FALSE(element_animations_impl->has_element_in_active_list()); 72 EXPECT_FALSE(element_animations_impl->has_element_in_active_list());
73 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list()); 73 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list());
74 74
75 // Create the layer in the impl active tree. 75 // Create the layer in the impl active tree.
76 client_impl_.RegisterLayer(layer_id_, LayerTreeType::ACTIVE); 76 client_impl_.RegisterLayer(element_id_, LayerTreeType::ACTIVE);
77 EXPECT_TRUE(element_animations_impl->has_element_in_active_list()); 77 EXPECT_TRUE(element_animations_impl->has_element_in_active_list());
78 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list()); 78 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list());
79 79
80 EXPECT_TRUE(client_impl_.IsLayerInTree(layer_id_, LayerTreeType::ACTIVE)); 80 EXPECT_TRUE(client_impl_.IsLayerInTree(element_id_, LayerTreeType::ACTIVE));
81 EXPECT_TRUE(client_impl_.IsLayerInTree(layer_id_, LayerTreeType::PENDING)); 81 EXPECT_TRUE(client_impl_.IsLayerInTree(element_id_, LayerTreeType::PENDING));
82 82
83 // kill layer on main thread. 83 // kill layer on main thread.
84 client_.UnregisterLayer(layer_id_, LayerTreeType::ACTIVE); 84 client_.UnregisterLayer(element_id_, LayerTreeType::ACTIVE);
85 EXPECT_EQ(element_animations, player_->element_animations()); 85 EXPECT_EQ(element_animations, player_->element_animations());
86 EXPECT_FALSE(element_animations->has_element_in_active_list()); 86 EXPECT_FALSE(element_animations->has_element_in_active_list());
87 EXPECT_FALSE(element_animations->has_element_in_pending_list()); 87 EXPECT_FALSE(element_animations->has_element_in_pending_list());
88 88
89 // Sync doesn't detach LayerImpl. 89 // Sync doesn't detach LayerImpl.
90 host_->PushPropertiesTo(host_impl_); 90 host_->PushPropertiesTo(host_impl_);
91 EXPECT_EQ(element_animations_impl, player_impl_->element_animations()); 91 EXPECT_EQ(element_animations_impl, player_impl_->element_animations());
92 EXPECT_TRUE(element_animations_impl->has_element_in_active_list()); 92 EXPECT_TRUE(element_animations_impl->has_element_in_active_list());
93 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list()); 93 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list());
94 94
95 // Kill layer on impl thread in pending tree. 95 // Kill layer on impl thread in pending tree.
96 client_impl_.UnregisterLayer(layer_id_, LayerTreeType::PENDING); 96 client_impl_.UnregisterLayer(element_id_, LayerTreeType::PENDING);
97 EXPECT_EQ(element_animations_impl, player_impl_->element_animations()); 97 EXPECT_EQ(element_animations_impl, player_impl_->element_animations());
98 EXPECT_TRUE(element_animations_impl->has_element_in_active_list()); 98 EXPECT_TRUE(element_animations_impl->has_element_in_active_list());
99 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list()); 99 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list());
100 100
101 // Kill layer on impl thread in active tree. 101 // Kill layer on impl thread in active tree.
102 client_impl_.UnregisterLayer(layer_id_, LayerTreeType::ACTIVE); 102 client_impl_.UnregisterLayer(element_id_, LayerTreeType::ACTIVE);
103 EXPECT_EQ(element_animations_impl, player_impl_->element_animations()); 103 EXPECT_EQ(element_animations_impl, player_impl_->element_animations());
104 EXPECT_FALSE(element_animations_impl->has_element_in_active_list()); 104 EXPECT_FALSE(element_animations_impl->has_element_in_active_list());
105 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list()); 105 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list());
106 106
107 // Sync doesn't change anything. 107 // Sync doesn't change anything.
108 host_->PushPropertiesTo(host_impl_); 108 host_->PushPropertiesTo(host_impl_);
109 EXPECT_EQ(element_animations_impl, player_impl_->element_animations()); 109 EXPECT_EQ(element_animations_impl, player_impl_->element_animations());
110 EXPECT_FALSE(element_animations_impl->has_element_in_active_list()); 110 EXPECT_FALSE(element_animations_impl->has_element_in_active_list());
111 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list()); 111 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list());
112 112
113 player_->DetachLayer(); 113 player_->DetachLayer();
114 EXPECT_FALSE(player_->element_animations()); 114 EXPECT_FALSE(player_->element_animations());
115 115
116 // Release ptrs now to test the order of destruction. 116 // Release ptrs now to test the order of destruction.
117 ReleaseRefPtrs(); 117 ReleaseRefPtrs();
118 } 118 }
119 119
120 TEST_F(ElementAnimationsTest, AttachToNotYetCreatedLayer) { 120 TEST_F(ElementAnimationsTest, AttachToNotYetCreatedLayer) {
121 host_->AddAnimationTimeline(timeline_); 121 host_->AddAnimationTimeline(timeline_);
122 timeline_->AttachPlayer(player_); 122 timeline_->AttachPlayer(player_);
123 123
124 host_->PushPropertiesTo(host_impl_); 124 host_->PushPropertiesTo(host_impl_);
125 125
126 GetImplTimelineAndPlayerByID(); 126 GetImplTimelineAndPlayerByID();
127 127
128 player_->AttachLayer(layer_id_); 128 player_->AttachLayer(element_id_);
129 129
130 scoped_refptr<ElementAnimations> element_animations = 130 scoped_refptr<ElementAnimations> element_animations =
131 player_->element_animations(); 131 player_->element_animations();
132 EXPECT_TRUE(element_animations); 132 EXPECT_TRUE(element_animations);
133 133
134 EXPECT_FALSE(element_animations->has_element_in_active_list()); 134 EXPECT_FALSE(element_animations->has_element_in_active_list());
135 EXPECT_FALSE(element_animations->has_element_in_pending_list()); 135 EXPECT_FALSE(element_animations->has_element_in_pending_list());
136 136
137 host_->PushPropertiesTo(host_impl_); 137 host_->PushPropertiesTo(host_impl_);
138 138
139 scoped_refptr<ElementAnimations> element_animations_impl = 139 scoped_refptr<ElementAnimations> element_animations_impl =
140 player_impl_->element_animations(); 140 player_impl_->element_animations();
141 EXPECT_TRUE(element_animations_impl); 141 EXPECT_TRUE(element_animations_impl);
142 142
143 EXPECT_FALSE(element_animations_impl->has_element_in_active_list()); 143 EXPECT_FALSE(element_animations_impl->has_element_in_active_list());
144 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list()); 144 EXPECT_FALSE(element_animations_impl->has_element_in_pending_list());
145 145
146 // Create layer. 146 // Create layer.
147 client_.RegisterLayer(layer_id_, LayerTreeType::ACTIVE); 147 client_.RegisterLayer(element_id_, LayerTreeType::ACTIVE);
148 EXPECT_TRUE(element_animations->has_element_in_active_list()); 148 EXPECT_TRUE(element_animations->has_element_in_active_list());
149 EXPECT_FALSE(element_animations->has_element_in_pending_list()); 149 EXPECT_FALSE(element_animations->has_element_in_pending_list());
150 150
151 client_impl_.RegisterLayer(layer_id_, LayerTreeType::PENDING); 151 client_impl_.RegisterLayer(element_id_, LayerTreeType::PENDING);
152 EXPECT_FALSE(element_animations_impl->has_element_in_active_list()); 152 EXPECT_FALSE(element_animations_impl->has_element_in_active_list());
153 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list()); 153 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list());
154 154
155 client_impl_.RegisterLayer(layer_id_, LayerTreeType::ACTIVE); 155 client_impl_.RegisterLayer(element_id_, LayerTreeType::ACTIVE);
156 EXPECT_TRUE(element_animations_impl->has_element_in_active_list()); 156 EXPECT_TRUE(element_animations_impl->has_element_in_active_list());
157 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list()); 157 EXPECT_TRUE(element_animations_impl->has_element_in_pending_list());
158 } 158 }
159 159
160 TEST_F(ElementAnimationsTest, AddRemovePlayers) { 160 TEST_F(ElementAnimationsTest, AddRemovePlayers) {
161 host_->AddAnimationTimeline(timeline_); 161 host_->AddAnimationTimeline(timeline_);
162 timeline_->AttachPlayer(player_); 162 timeline_->AttachPlayer(player_);
163 player_->AttachLayer(layer_id_); 163 player_->AttachLayer(element_id_);
164 164
165 scoped_refptr<ElementAnimations> element_animations = 165 scoped_refptr<ElementAnimations> element_animations =
166 player_->element_animations(); 166 player_->element_animations();
167 EXPECT_TRUE(element_animations); 167 EXPECT_TRUE(element_animations);
168 168
169 scoped_refptr<AnimationPlayer> player1 = 169 scoped_refptr<AnimationPlayer> player1 =
170 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId()); 170 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId());
171 scoped_refptr<AnimationPlayer> player2 = 171 scoped_refptr<AnimationPlayer> player2 =
172 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId()); 172 AnimationPlayer::Create(AnimationIdProvider::NextPlayerId());
173 173
174 timeline_->AttachPlayer(player1); 174 timeline_->AttachPlayer(player1);
175 timeline_->AttachPlayer(player2); 175 timeline_->AttachPlayer(player2);
176 176
177 // Attach players to the same layer. 177 // Attach players to the same layer.
178 player1->AttachLayer(layer_id_); 178 player1->AttachLayer(element_id_);
179 player2->AttachLayer(layer_id_); 179 player2->AttachLayer(element_id_);
180 180
181 EXPECT_EQ(element_animations, player1->element_animations()); 181 EXPECT_EQ(element_animations, player1->element_animations());
182 EXPECT_EQ(element_animations, player2->element_animations()); 182 EXPECT_EQ(element_animations, player2->element_animations());
183 183
184 host_->PushPropertiesTo(host_impl_); 184 host_->PushPropertiesTo(host_impl_);
185 GetImplTimelineAndPlayerByID(); 185 GetImplTimelineAndPlayerByID();
186 186
187 scoped_refptr<ElementAnimations> element_animations_impl = 187 scoped_refptr<ElementAnimations> element_animations_impl =
188 player_impl_->element_animations(); 188 player_impl_->element_animations();
189 EXPECT_TRUE(element_animations_impl); 189 EXPECT_TRUE(element_animations_impl);
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 493
494 animations->Animate(time); 494 animations->Animate(time);
495 animations->UpdateState(true, nullptr); 495 animations->UpdateState(true, nullptr);
496 animations->NotifyAnimationStarted(events->events_[0]); 496 animations->NotifyAnimationStarted(events->events_[0]);
497 497
498 EXPECT_EQ(Animation::RUNNING, 498 EXPECT_EQ(Animation::RUNNING,
499 animations_impl->GetAnimationById(animation_id)->run_state()); 499 animations_impl->GetAnimationById(animation_id)->run_state());
500 EXPECT_EQ(Animation::RUNNING, 500 EXPECT_EQ(Animation::RUNNING,
501 animations->GetAnimationById(animation_id)->run_state()); 501 animations->GetAnimationById(animation_id)->run_state());
502 502
503 EXPECT_EQ(0.3f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 503 EXPECT_EQ(0.3f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
504 EXPECT_EQ(0.3f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 504 EXPECT_EQ(0.3f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
505 505
506 EXPECT_EQ(kInitialTickTime, 506 EXPECT_EQ(kInitialTickTime,
507 animations->GetAnimationById(animation_id)->start_time()); 507 animations->GetAnimationById(animation_id)->start_time());
508 EXPECT_EQ(kInitialTickTime, 508 EXPECT_EQ(kInitialTickTime,
509 animations_impl->GetAnimationById(animation_id)->start_time()); 509 animations_impl->GetAnimationById(animation_id)->start_time());
510 510
511 // Pause the animation at the middle of the second range so the offset 511 // Pause the animation at the middle of the second range so the offset
512 // delays animation until the middle of the third range. 512 // delays animation until the middle of the third range.
513 animations->PauseAnimation(animation_id, TimeDelta::FromSecondsD(1.5)); 513 animations->PauseAnimation(animation_id, TimeDelta::FromSecondsD(1.5));
514 EXPECT_EQ(Animation::PAUSED, 514 EXPECT_EQ(Animation::PAUSED,
515 animations->GetAnimationById(animation_id)->run_state()); 515 animations->GetAnimationById(animation_id)->run_state());
516 516
517 // The pause run state change should make it to the impl thread animations. 517 // The pause run state change should make it to the impl thread animations.
518 animations->PushPropertiesTo(animations_impl.get()); 518 animations->PushPropertiesTo(animations_impl.get());
519 animations_impl->ActivateAnimations(); 519 animations_impl->ActivateAnimations();
520 520
521 // Advance time so it stays within the first range. 521 // Advance time so it stays within the first range.
522 time += TimeDelta::FromMilliseconds(10); 522 time += TimeDelta::FromMilliseconds(10);
523 animations->Animate(time); 523 animations->Animate(time);
524 animations_impl->Animate(time); 524 animations_impl->Animate(time);
525 525
526 EXPECT_EQ(Animation::PAUSED, 526 EXPECT_EQ(Animation::PAUSED,
527 animations_impl->GetAnimationById(animation_id)->run_state()); 527 animations_impl->GetAnimationById(animation_id)->run_state());
528 528
529 // Opacity value doesn't depend on time if paused at specified time offset. 529 // Opacity value doesn't depend on time if paused at specified time offset.
530 EXPECT_EQ(0.4f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 530 EXPECT_EQ(0.4f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
531 EXPECT_EQ(0.4f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 531 EXPECT_EQ(0.4f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
532 } 532 }
533 533
534 TEST_F(ElementAnimationsTest, DoNotSyncFinishedAnimation) { 534 TEST_F(ElementAnimationsTest, DoNotSyncFinishedAnimation) {
535 CreateTestLayer(true, false); 535 CreateTestLayer(true, false);
536 AttachTimelinePlayerLayer(); 536 AttachTimelinePlayerLayer();
537 CreateImplTimelineAndPlayer(); 537 CreateImplTimelineAndPlayer();
538 538
539 scoped_refptr<ElementAnimations> animations = element_animations(); 539 scoped_refptr<ElementAnimations> animations = element_animations();
540 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 540 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
541 541
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 675 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
676 1, TargetProperty::OPACITY)); 676 1, TargetProperty::OPACITY));
677 677
678 EXPECT_FALSE(animations->needs_to_start_animations_for_testing()); 678 EXPECT_FALSE(animations->needs_to_start_animations_for_testing());
679 animations->AddAnimation(std::move(to_add)); 679 animations->AddAnimation(std::move(to_add));
680 EXPECT_TRUE(animations->needs_to_start_animations_for_testing()); 680 EXPECT_TRUE(animations->needs_to_start_animations_for_testing());
681 animations->Animate(kInitialTickTime); 681 animations->Animate(kInitialTickTime);
682 EXPECT_FALSE(animations->needs_to_start_animations_for_testing()); 682 EXPECT_FALSE(animations->needs_to_start_animations_for_testing());
683 animations->UpdateState(true, events.get()); 683 animations->UpdateState(true, events.get());
684 EXPECT_TRUE(animations->HasActiveAnimation()); 684 EXPECT_TRUE(animations->HasActiveAnimation());
685 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 685 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
686 // A non-impl-only animation should not generate property updates. 686 // A non-impl-only animation should not generate property updates.
687 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 687 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
688 EXPECT_FALSE(event); 688 EXPECT_FALSE(event);
689 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 689 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
690 animations->UpdateState(true, events.get()); 690 animations->UpdateState(true, events.get());
691 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 691 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
692 EXPECT_FALSE(animations->HasActiveAnimation()); 692 EXPECT_FALSE(animations->HasActiveAnimation());
693 event = GetMostRecentPropertyUpdateEvent(events.get()); 693 event = GetMostRecentPropertyUpdateEvent(events.get());
694 EXPECT_FALSE(event); 694 EXPECT_FALSE(event);
695 } 695 }
696 696
697 TEST_F(ElementAnimationsTest, TrivialTransitionOnImpl) { 697 TEST_F(ElementAnimationsTest, TrivialTransitionOnImpl) {
698 CreateTestLayer(true, false); 698 CreateTestLayer(true, false);
699 AttachTimelinePlayerLayer(); 699 AttachTimelinePlayerLayer();
700 CreateImplTimelineAndPlayer(); 700 CreateImplTimelineAndPlayer();
701 701
702 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 702 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
703 703
704 auto events = host_impl_->CreateEvents(); 704 auto events = host_impl_->CreateEvents();
705 705
706 std::unique_ptr<Animation> to_add(CreateAnimation( 706 std::unique_ptr<Animation> to_add(CreateAnimation(
707 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 707 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
708 1, TargetProperty::OPACITY)); 708 1, TargetProperty::OPACITY));
709 to_add->set_is_impl_only(true); 709 to_add->set_is_impl_only(true);
710 710
711 animations_impl->AddAnimation(std::move(to_add)); 711 animations_impl->AddAnimation(std::move(to_add));
712 animations_impl->Animate(kInitialTickTime); 712 animations_impl->Animate(kInitialTickTime);
713 animations_impl->UpdateState(true, events.get()); 713 animations_impl->UpdateState(true, events.get());
714 EXPECT_TRUE(animations_impl->HasActiveAnimation()); 714 EXPECT_TRUE(animations_impl->HasActiveAnimation());
715 EXPECT_EQ(0.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 715 EXPECT_EQ(0.f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
716 EXPECT_EQ(1u, events->events_.size()); 716 EXPECT_EQ(1u, events->events_.size());
717 const AnimationEvent* start_opacity_event = 717 const AnimationEvent* start_opacity_event =
718 GetMostRecentPropertyUpdateEvent(events.get()); 718 GetMostRecentPropertyUpdateEvent(events.get());
719 EXPECT_EQ(0.f, start_opacity_event->opacity); 719 EXPECT_EQ(0.f, start_opacity_event->opacity);
720 720
721 animations_impl->Animate(kInitialTickTime + 721 animations_impl->Animate(kInitialTickTime +
722 TimeDelta::FromMilliseconds(1000)); 722 TimeDelta::FromMilliseconds(1000));
723 animations_impl->UpdateState(true, events.get()); 723 animations_impl->UpdateState(true, events.get());
724 EXPECT_EQ(1.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 724 EXPECT_EQ(1.f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
725 EXPECT_FALSE(animations_impl->HasActiveAnimation()); 725 EXPECT_FALSE(animations_impl->HasActiveAnimation());
726 EXPECT_EQ(2u, events->events_.size()); 726 EXPECT_EQ(2u, events->events_.size());
727 const AnimationEvent* end_opacity_event = 727 const AnimationEvent* end_opacity_event =
728 GetMostRecentPropertyUpdateEvent(events.get()); 728 GetMostRecentPropertyUpdateEvent(events.get());
729 EXPECT_EQ(1.f, end_opacity_event->opacity); 729 EXPECT_EQ(1.f, end_opacity_event->opacity);
730 } 730 }
731 731
732 TEST_F(ElementAnimationsTest, TrivialTransformOnImpl) { 732 TEST_F(ElementAnimationsTest, TrivialTransformOnImpl) {
733 CreateTestLayer(true, false); 733 CreateTestLayer(true, false);
734 AttachTimelinePlayerLayer(); 734 AttachTimelinePlayerLayer();
(...skipping 22 matching lines...) Expand all
757 std::unique_ptr<Animation> animation( 757 std::unique_ptr<Animation> animation(
758 Animation::Create(std::move(curve), 1, 0, TargetProperty::TRANSFORM)); 758 Animation::Create(std::move(curve), 1, 0, TargetProperty::TRANSFORM));
759 animation->set_is_impl_only(true); 759 animation->set_is_impl_only(true);
760 animations_impl->AddAnimation(std::move(animation)); 760 animations_impl->AddAnimation(std::move(animation));
761 761
762 // Run animation. 762 // Run animation.
763 animations_impl->Animate(kInitialTickTime); 763 animations_impl->Animate(kInitialTickTime);
764 animations_impl->UpdateState(true, events.get()); 764 animations_impl->UpdateState(true, events.get());
765 EXPECT_TRUE(animations_impl->HasActiveAnimation()); 765 EXPECT_TRUE(animations_impl->HasActiveAnimation());
766 EXPECT_EQ(gfx::Transform(), 766 EXPECT_EQ(gfx::Transform(),
767 client_impl_.GetTransform(layer_id_, LayerTreeType::ACTIVE)); 767 client_impl_.GetTransform(element_id_, LayerTreeType::ACTIVE));
768 EXPECT_EQ(1u, events->events_.size()); 768 EXPECT_EQ(1u, events->events_.size());
769 const AnimationEvent* start_transform_event = 769 const AnimationEvent* start_transform_event =
770 GetMostRecentPropertyUpdateEvent(events.get()); 770 GetMostRecentPropertyUpdateEvent(events.get());
771 ASSERT_TRUE(start_transform_event); 771 ASSERT_TRUE(start_transform_event);
772 EXPECT_EQ(gfx::Transform(), start_transform_event->transform); 772 EXPECT_EQ(gfx::Transform(), start_transform_event->transform);
773 EXPECT_TRUE(start_transform_event->is_impl_only); 773 EXPECT_TRUE(start_transform_event->is_impl_only);
774 774
775 gfx::Transform expected_transform; 775 gfx::Transform expected_transform;
776 expected_transform.Translate(delta_x, delta_y); 776 expected_transform.Translate(delta_x, delta_y);
777 777
778 animations_impl->Animate(kInitialTickTime + 778 animations_impl->Animate(kInitialTickTime +
779 TimeDelta::FromMilliseconds(1000)); 779 TimeDelta::FromMilliseconds(1000));
780 animations_impl->UpdateState(true, events.get()); 780 animations_impl->UpdateState(true, events.get());
781 EXPECT_EQ(expected_transform, 781 EXPECT_EQ(expected_transform,
782 client_impl_.GetTransform(layer_id_, LayerTreeType::ACTIVE)); 782 client_impl_.GetTransform(element_id_, LayerTreeType::ACTIVE));
783 EXPECT_FALSE(animations_impl->HasActiveAnimation()); 783 EXPECT_FALSE(animations_impl->HasActiveAnimation());
784 EXPECT_EQ(2u, events->events_.size()); 784 EXPECT_EQ(2u, events->events_.size());
785 const AnimationEvent* end_transform_event = 785 const AnimationEvent* end_transform_event =
786 GetMostRecentPropertyUpdateEvent(events.get()); 786 GetMostRecentPropertyUpdateEvent(events.get());
787 EXPECT_EQ(expected_transform, end_transform_event->transform); 787 EXPECT_EQ(expected_transform, end_transform_event->transform);
788 EXPECT_TRUE(end_transform_event->is_impl_only); 788 EXPECT_TRUE(end_transform_event->is_impl_only);
789 } 789 }
790 790
791 TEST_F(ElementAnimationsTest, FilterTransition) { 791 TEST_F(ElementAnimationsTest, FilterTransition) {
792 CreateTestLayer(true, false); 792 CreateTestLayer(true, false);
(...skipping 16 matching lines...) Expand all
809 end_filters, nullptr)); 809 end_filters, nullptr));
810 810
811 std::unique_ptr<Animation> animation( 811 std::unique_ptr<Animation> animation(
812 Animation::Create(std::move(curve), 1, 0, TargetProperty::FILTER)); 812 Animation::Create(std::move(curve), 1, 0, TargetProperty::FILTER));
813 animations->AddAnimation(std::move(animation)); 813 animations->AddAnimation(std::move(animation));
814 814
815 animations->Animate(kInitialTickTime); 815 animations->Animate(kInitialTickTime);
816 animations->UpdateState(true, events.get()); 816 animations->UpdateState(true, events.get());
817 EXPECT_TRUE(animations->HasActiveAnimation()); 817 EXPECT_TRUE(animations->HasActiveAnimation());
818 EXPECT_EQ(start_filters, 818 EXPECT_EQ(start_filters,
819 client_.GetFilters(layer_id_, LayerTreeType::ACTIVE)); 819 client_.GetFilters(element_id_, LayerTreeType::ACTIVE));
820 // A non-impl-only animation should not generate property updates. 820 // A non-impl-only animation should not generate property updates.
821 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 821 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
822 EXPECT_FALSE(event); 822 EXPECT_FALSE(event);
823 823
824 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); 824 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500));
825 animations->UpdateState(true, events.get()); 825 animations->UpdateState(true, events.get());
826 EXPECT_EQ(1u, client_.GetFilters(layer_id_, LayerTreeType::ACTIVE).size()); 826 EXPECT_EQ(1u, client_.GetFilters(element_id_, LayerTreeType::ACTIVE).size());
827 EXPECT_EQ(FilterOperation::CreateBrightnessFilter(1.5f), 827 EXPECT_EQ(FilterOperation::CreateBrightnessFilter(1.5f),
828 client_.GetFilters(layer_id_, LayerTreeType::ACTIVE).at(0)); 828 client_.GetFilters(element_id_, LayerTreeType::ACTIVE).at(0));
829 event = GetMostRecentPropertyUpdateEvent(events.get()); 829 event = GetMostRecentPropertyUpdateEvent(events.get());
830 EXPECT_FALSE(event); 830 EXPECT_FALSE(event);
831 831
832 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 832 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
833 animations->UpdateState(true, events.get()); 833 animations->UpdateState(true, events.get());
834 EXPECT_EQ(end_filters, client_.GetFilters(layer_id_, LayerTreeType::ACTIVE)); 834 EXPECT_EQ(end_filters,
835 client_.GetFilters(element_id_, LayerTreeType::ACTIVE));
835 EXPECT_FALSE(animations->HasActiveAnimation()); 836 EXPECT_FALSE(animations->HasActiveAnimation());
836 event = GetMostRecentPropertyUpdateEvent(events.get()); 837 event = GetMostRecentPropertyUpdateEvent(events.get());
837 EXPECT_FALSE(event); 838 EXPECT_FALSE(event);
838 } 839 }
839 840
840 TEST_F(ElementAnimationsTest, FilterTransitionOnImplOnly) { 841 TEST_F(ElementAnimationsTest, FilterTransitionOnImplOnly) {
841 CreateTestLayer(true, false); 842 CreateTestLayer(true, false);
842 AttachTimelinePlayerLayer(); 843 AttachTimelinePlayerLayer();
843 CreateImplTimelineAndPlayer(); 844 CreateImplTimelineAndPlayer();
844 845
(...skipping 17 matching lines...) Expand all
862 std::unique_ptr<Animation> animation( 863 std::unique_ptr<Animation> animation(
863 Animation::Create(std::move(curve), 1, 0, TargetProperty::FILTER)); 864 Animation::Create(std::move(curve), 1, 0, TargetProperty::FILTER));
864 animation->set_is_impl_only(true); 865 animation->set_is_impl_only(true);
865 animations_impl->AddAnimation(std::move(animation)); 866 animations_impl->AddAnimation(std::move(animation));
866 867
867 // Run animation. 868 // Run animation.
868 animations_impl->Animate(kInitialTickTime); 869 animations_impl->Animate(kInitialTickTime);
869 animations_impl->UpdateState(true, events.get()); 870 animations_impl->UpdateState(true, events.get());
870 EXPECT_TRUE(animations_impl->HasActiveAnimation()); 871 EXPECT_TRUE(animations_impl->HasActiveAnimation());
871 EXPECT_EQ(start_filters, 872 EXPECT_EQ(start_filters,
872 client_impl_.GetFilters(layer_id_, LayerTreeType::ACTIVE)); 873 client_impl_.GetFilters(element_id_, LayerTreeType::ACTIVE));
873 EXPECT_EQ(1u, events->events_.size()); 874 EXPECT_EQ(1u, events->events_.size());
874 const AnimationEvent* start_filter_event = 875 const AnimationEvent* start_filter_event =
875 GetMostRecentPropertyUpdateEvent(events.get()); 876 GetMostRecentPropertyUpdateEvent(events.get());
876 EXPECT_TRUE(start_filter_event); 877 EXPECT_TRUE(start_filter_event);
877 EXPECT_EQ(start_filters, start_filter_event->filters); 878 EXPECT_EQ(start_filters, start_filter_event->filters);
878 EXPECT_TRUE(start_filter_event->is_impl_only); 879 EXPECT_TRUE(start_filter_event->is_impl_only);
879 880
880 animations_impl->Animate(kInitialTickTime + 881 animations_impl->Animate(kInitialTickTime +
881 TimeDelta::FromMilliseconds(1000)); 882 TimeDelta::FromMilliseconds(1000));
882 animations_impl->UpdateState(true, events.get()); 883 animations_impl->UpdateState(true, events.get());
883 EXPECT_EQ(end_filters, 884 EXPECT_EQ(end_filters,
884 client_impl_.GetFilters(layer_id_, LayerTreeType::ACTIVE)); 885 client_impl_.GetFilters(element_id_, LayerTreeType::ACTIVE));
885 EXPECT_FALSE(animations_impl->HasActiveAnimation()); 886 EXPECT_FALSE(animations_impl->HasActiveAnimation());
886 EXPECT_EQ(2u, events->events_.size()); 887 EXPECT_EQ(2u, events->events_.size());
887 const AnimationEvent* end_filter_event = 888 const AnimationEvent* end_filter_event =
888 GetMostRecentPropertyUpdateEvent(events.get()); 889 GetMostRecentPropertyUpdateEvent(events.get());
889 EXPECT_TRUE(end_filter_event); 890 EXPECT_TRUE(end_filter_event);
890 EXPECT_EQ(end_filters, end_filter_event->filters); 891 EXPECT_EQ(end_filters, end_filter_event->filters);
891 EXPECT_TRUE(end_filter_event->is_impl_only); 892 EXPECT_TRUE(end_filter_event->is_impl_only);
892 } 893 }
893 894
894 TEST_F(ElementAnimationsTest, ScrollOffsetTransition) { 895 TEST_F(ElementAnimationsTest, ScrollOffsetTransition) {
(...skipping 26 matching lines...) Expand all
921 ->curve() 922 ->curve()
922 ->Duration(); 923 ->Duration();
923 EXPECT_EQ(duration, animations->GetAnimation(TargetProperty::SCROLL_OFFSET) 924 EXPECT_EQ(duration, animations->GetAnimation(TargetProperty::SCROLL_OFFSET)
924 ->curve() 925 ->curve()
925 ->Duration()); 926 ->Duration());
926 927
927 animations->Animate(kInitialTickTime); 928 animations->Animate(kInitialTickTime);
928 animations->UpdateState(true, nullptr); 929 animations->UpdateState(true, nullptr);
929 EXPECT_TRUE(animations->HasActiveAnimation()); 930 EXPECT_TRUE(animations->HasActiveAnimation());
930 EXPECT_EQ(initial_value, 931 EXPECT_EQ(initial_value,
931 client_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 932 client_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
932 933
933 animations_impl->Animate(kInitialTickTime); 934 animations_impl->Animate(kInitialTickTime);
934 animations_impl->UpdateState(true, events.get()); 935 animations_impl->UpdateState(true, events.get());
935 EXPECT_TRUE(animations_impl->HasActiveAnimation()); 936 EXPECT_TRUE(animations_impl->HasActiveAnimation());
936 EXPECT_EQ(initial_value, 937 EXPECT_EQ(initial_value,
937 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 938 client_impl_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
938 // Scroll offset animations should not generate property updates. 939 // Scroll offset animations should not generate property updates.
939 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 940 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
940 EXPECT_FALSE(event); 941 EXPECT_FALSE(event);
941 942
942 animations->NotifyAnimationStarted(events->events_[0]); 943 animations->NotifyAnimationStarted(events->events_[0]);
943 animations->Animate(kInitialTickTime + duration / 2); 944 animations->Animate(kInitialTickTime + duration / 2);
944 animations->UpdateState(true, nullptr); 945 animations->UpdateState(true, nullptr);
945 EXPECT_TRUE(animations->HasActiveAnimation()); 946 EXPECT_TRUE(animations->HasActiveAnimation());
946 EXPECT_VECTOR2DF_EQ( 947 EXPECT_VECTOR2DF_EQ(
947 gfx::Vector2dF(200.f, 250.f), 948 gfx::Vector2dF(200.f, 250.f),
948 client_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 949 client_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
949 950
950 animations_impl->Animate(kInitialTickTime + duration / 2); 951 animations_impl->Animate(kInitialTickTime + duration / 2);
951 animations_impl->UpdateState(true, events.get()); 952 animations_impl->UpdateState(true, events.get());
952 EXPECT_VECTOR2DF_EQ( 953 EXPECT_VECTOR2DF_EQ(
953 gfx::Vector2dF(200.f, 250.f), 954 gfx::Vector2dF(200.f, 250.f),
954 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 955 client_impl_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
955 event = GetMostRecentPropertyUpdateEvent(events.get()); 956 event = GetMostRecentPropertyUpdateEvent(events.get());
956 EXPECT_FALSE(event); 957 EXPECT_FALSE(event);
957 958
958 animations_impl->Animate(kInitialTickTime + duration); 959 animations_impl->Animate(kInitialTickTime + duration);
959 animations_impl->UpdateState(true, events.get()); 960 animations_impl->UpdateState(true, events.get());
960 EXPECT_VECTOR2DF_EQ(target_value, client_impl_.GetScrollOffset( 961 EXPECT_VECTOR2DF_EQ(target_value, client_impl_.GetScrollOffset(
961 layer_id_, LayerTreeType::ACTIVE)); 962 element_id_, LayerTreeType::ACTIVE));
962 EXPECT_FALSE(animations_impl->HasActiveAnimation()); 963 EXPECT_FALSE(animations_impl->HasActiveAnimation());
963 event = GetMostRecentPropertyUpdateEvent(events.get()); 964 event = GetMostRecentPropertyUpdateEvent(events.get());
964 EXPECT_FALSE(event); 965 EXPECT_FALSE(event);
965 966
966 animations->Animate(kInitialTickTime + duration); 967 animations->Animate(kInitialTickTime + duration);
967 animations->UpdateState(true, nullptr); 968 animations->UpdateState(true, nullptr);
968 EXPECT_VECTOR2DF_EQ( 969 EXPECT_VECTOR2DF_EQ(target_value, client_.GetScrollOffset(
969 target_value, client_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 970 element_id_, LayerTreeType::ACTIVE));
970 EXPECT_FALSE(animations->HasActiveAnimation()); 971 EXPECT_FALSE(animations->HasActiveAnimation());
971 } 972 }
972 973
973 TEST_F(ElementAnimationsTest, ScrollOffsetTransitionOnImplOnly) { 974 TEST_F(ElementAnimationsTest, ScrollOffsetTransitionOnImplOnly) {
974 CreateTestLayer(true, false); 975 CreateTestLayer(true, false);
975 AttachTimelinePlayerLayer(); 976 AttachTimelinePlayerLayer();
976 CreateImplTimelineAndPlayer(); 977 CreateImplTimelineAndPlayer();
977 978
978 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 979 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
979 980
980 auto events = host_impl_->CreateEvents(); 981 auto events = host_impl_->CreateEvents();
981 982
982 gfx::ScrollOffset initial_value(100.f, 300.f); 983 gfx::ScrollOffset initial_value(100.f, 300.f);
983 gfx::ScrollOffset target_value(300.f, 200.f); 984 gfx::ScrollOffset target_value(300.f, 200.f);
984 std::unique_ptr<ScrollOffsetAnimationCurve> curve( 985 std::unique_ptr<ScrollOffsetAnimationCurve> curve(
985 ScrollOffsetAnimationCurve::Create(target_value, 986 ScrollOffsetAnimationCurve::Create(target_value,
986 EaseInOutTimingFunction::Create())); 987 EaseInOutTimingFunction::Create()));
987 curve->SetInitialValue(initial_value); 988 curve->SetInitialValue(initial_value);
988 double duration_in_seconds = curve->Duration().InSecondsF(); 989 double duration_in_seconds = curve->Duration().InSecondsF();
989 990
990 std::unique_ptr<Animation> animation( 991 std::unique_ptr<Animation> animation(
991 Animation::Create(std::move(curve), 1, 0, TargetProperty::SCROLL_OFFSET)); 992 Animation::Create(std::move(curve), 1, 0, TargetProperty::SCROLL_OFFSET));
992 animation->set_is_impl_only(true); 993 animation->set_is_impl_only(true);
993 animations_impl->AddAnimation(std::move(animation)); 994 animations_impl->AddAnimation(std::move(animation));
994 995
995 animations_impl->Animate(kInitialTickTime); 996 animations_impl->Animate(kInitialTickTime);
996 animations_impl->UpdateState(true, events.get()); 997 animations_impl->UpdateState(true, events.get());
997 EXPECT_TRUE(animations_impl->HasActiveAnimation()); 998 EXPECT_TRUE(animations_impl->HasActiveAnimation());
998 EXPECT_EQ(initial_value, 999 EXPECT_EQ(initial_value,
999 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 1000 client_impl_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
1000 // Scroll offset animations should not generate property updates. 1001 // Scroll offset animations should not generate property updates.
1001 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 1002 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
1002 EXPECT_FALSE(event); 1003 EXPECT_FALSE(event);
1003 1004
1004 TimeDelta duration = TimeDelta::FromMicroseconds( 1005 TimeDelta duration = TimeDelta::FromMicroseconds(
1005 duration_in_seconds * base::Time::kMicrosecondsPerSecond); 1006 duration_in_seconds * base::Time::kMicrosecondsPerSecond);
1006 1007
1007 animations_impl->Animate(kInitialTickTime + duration / 2); 1008 animations_impl->Animate(kInitialTickTime + duration / 2);
1008 animations_impl->UpdateState(true, events.get()); 1009 animations_impl->UpdateState(true, events.get());
1009 EXPECT_VECTOR2DF_EQ( 1010 EXPECT_VECTOR2DF_EQ(
1010 gfx::Vector2dF(200.f, 250.f), 1011 gfx::Vector2dF(200.f, 250.f),
1011 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 1012 client_impl_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
1012 event = GetMostRecentPropertyUpdateEvent(events.get()); 1013 event = GetMostRecentPropertyUpdateEvent(events.get());
1013 EXPECT_FALSE(event); 1014 EXPECT_FALSE(event);
1014 1015
1015 animations_impl->Animate(kInitialTickTime + duration); 1016 animations_impl->Animate(kInitialTickTime + duration);
1016 animations_impl->UpdateState(true, events.get()); 1017 animations_impl->UpdateState(true, events.get());
1017 EXPECT_VECTOR2DF_EQ(target_value, client_impl_.GetScrollOffset( 1018 EXPECT_VECTOR2DF_EQ(target_value, client_impl_.GetScrollOffset(
1018 layer_id_, LayerTreeType::ACTIVE)); 1019 element_id_, LayerTreeType::ACTIVE));
1019 EXPECT_FALSE(animations_impl->HasActiveAnimation()); 1020 EXPECT_FALSE(animations_impl->HasActiveAnimation());
1020 event = GetMostRecentPropertyUpdateEvent(events.get()); 1021 event = GetMostRecentPropertyUpdateEvent(events.get());
1021 EXPECT_FALSE(event); 1022 EXPECT_FALSE(event);
1022 } 1023 }
1023 1024
1024 // Ensure that when the impl animations doesn't have a value provider, 1025 // Ensure that when the impl animations doesn't have a value provider,
1025 // the main-thread animations's value provider is used to obtain the intial 1026 // the main-thread animations's value provider is used to obtain the intial
1026 // scroll offset. 1027 // scroll offset.
1027 TEST_F(ElementAnimationsTest, ScrollOffsetTransitionNoImplProvider) { 1028 TEST_F(ElementAnimationsTest, ScrollOffsetTransitionNoImplProvider) {
1028 CreateTestLayer(false, false); 1029 CreateTestLayer(false, false);
(...skipping 30 matching lines...) Expand all
1059 ->Duration(); 1060 ->Duration();
1060 EXPECT_EQ(duration, animations->GetAnimation(TargetProperty::SCROLL_OFFSET) 1061 EXPECT_EQ(duration, animations->GetAnimation(TargetProperty::SCROLL_OFFSET)
1061 ->curve() 1062 ->curve()
1062 ->Duration()); 1063 ->Duration());
1063 1064
1064 animations->Animate(kInitialTickTime); 1065 animations->Animate(kInitialTickTime);
1065 animations->UpdateState(true, nullptr); 1066 animations->UpdateState(true, nullptr);
1066 1067
1067 EXPECT_TRUE(animations->HasActiveAnimation()); 1068 EXPECT_TRUE(animations->HasActiveAnimation());
1068 EXPECT_EQ(initial_value, 1069 EXPECT_EQ(initial_value,
1069 client_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 1070 client_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
1070 EXPECT_EQ(gfx::ScrollOffset(), 1071 EXPECT_EQ(gfx::ScrollOffset(),
1071 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::PENDING)); 1072 client_impl_.GetScrollOffset(element_id_, LayerTreeType::PENDING));
1072 1073
1073 animations_impl->Animate(kInitialTickTime); 1074 animations_impl->Animate(kInitialTickTime);
1074 1075
1075 EXPECT_TRUE(animations_impl->HasActiveAnimation()); 1076 EXPECT_TRUE(animations_impl->HasActiveAnimation());
1076 EXPECT_EQ(initial_value, 1077 EXPECT_EQ(initial_value,
1077 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::PENDING)); 1078 client_impl_.GetScrollOffset(element_id_, LayerTreeType::PENDING));
1078 1079
1079 CreateTestImplLayer(LayerTreeType::ACTIVE); 1080 CreateTestImplLayer(LayerTreeType::ACTIVE);
1080 1081
1081 animations_impl->UpdateState(true, events.get()); 1082 animations_impl->UpdateState(true, events.get());
1082 DCHECK_EQ(1UL, events->events_.size()); 1083 DCHECK_EQ(1UL, events->events_.size());
1083 1084
1084 // Scroll offset animations should not generate property updates. 1085 // Scroll offset animations should not generate property updates.
1085 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 1086 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
1086 EXPECT_FALSE(event); 1087 EXPECT_FALSE(event);
1087 1088
1088 animations->NotifyAnimationStarted(events->events_[0]); 1089 animations->NotifyAnimationStarted(events->events_[0]);
1089 animations->Animate(kInitialTickTime + duration / 2); 1090 animations->Animate(kInitialTickTime + duration / 2);
1090 animations->UpdateState(true, nullptr); 1091 animations->UpdateState(true, nullptr);
1091 EXPECT_TRUE(animations->HasActiveAnimation()); 1092 EXPECT_TRUE(animations->HasActiveAnimation());
1092 EXPECT_VECTOR2DF_EQ( 1093 EXPECT_VECTOR2DF_EQ(
1093 gfx::Vector2dF(400.f, 150.f), 1094 gfx::Vector2dF(400.f, 150.f),
1094 client_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 1095 client_.GetScrollOffset(element_id_, LayerTreeType::ACTIVE));
1095 1096
1096 animations_impl->Animate(kInitialTickTime + duration / 2); 1097 animations_impl->Animate(kInitialTickTime + duration / 2);
1097 animations_impl->UpdateState(true, events.get()); 1098 animations_impl->UpdateState(true, events.get());
1098 EXPECT_VECTOR2DF_EQ( 1099 EXPECT_VECTOR2DF_EQ(
1099 gfx::Vector2dF(400.f, 150.f), 1100 gfx::Vector2dF(400.f, 150.f),
1100 client_impl_.GetScrollOffset(layer_id_, LayerTreeType::PENDING)); 1101 client_impl_.GetScrollOffset(element_id_, LayerTreeType::PENDING));
1101 event = GetMostRecentPropertyUpdateEvent(events.get()); 1102 event = GetMostRecentPropertyUpdateEvent(events.get());
1102 EXPECT_FALSE(event); 1103 EXPECT_FALSE(event);
1103 1104
1104 animations_impl->Animate(kInitialTickTime + duration); 1105 animations_impl->Animate(kInitialTickTime + duration);
1105 animations_impl->UpdateState(true, events.get()); 1106 animations_impl->UpdateState(true, events.get());
1106 EXPECT_VECTOR2DF_EQ(target_value, client_impl_.GetScrollOffset( 1107 EXPECT_VECTOR2DF_EQ(target_value, client_impl_.GetScrollOffset(
1107 layer_id_, LayerTreeType::PENDING)); 1108 element_id_, LayerTreeType::PENDING));
1108 EXPECT_FALSE(animations_impl->HasActiveAnimation()); 1109 EXPECT_FALSE(animations_impl->HasActiveAnimation());
1109 event = GetMostRecentPropertyUpdateEvent(events.get()); 1110 event = GetMostRecentPropertyUpdateEvent(events.get());
1110 EXPECT_FALSE(event); 1111 EXPECT_FALSE(event);
1111 1112
1112 animations->Animate(kInitialTickTime + duration); 1113 animations->Animate(kInitialTickTime + duration);
1113 animations->UpdateState(true, nullptr); 1114 animations->UpdateState(true, nullptr);
1114 EXPECT_VECTOR2DF_EQ( 1115 EXPECT_VECTOR2DF_EQ(target_value, client_.GetScrollOffset(
1115 target_value, client_.GetScrollOffset(layer_id_, LayerTreeType::ACTIVE)); 1116 element_id_, LayerTreeType::ACTIVE));
1116 EXPECT_FALSE(animations->HasActiveAnimation()); 1117 EXPECT_FALSE(animations->HasActiveAnimation());
1117 } 1118 }
1118 1119
1119 TEST_F(ElementAnimationsTest, ScrollOffsetRemovalClearsScrollDelta) { 1120 TEST_F(ElementAnimationsTest, ScrollOffsetRemovalClearsScrollDelta) {
1120 CreateTestLayer(true, false); 1121 CreateTestLayer(true, false);
1121 AttachTimelinePlayerLayer(); 1122 AttachTimelinePlayerLayer();
1122 CreateImplTimelineAndPlayer(); 1123 CreateImplTimelineAndPlayer();
1123 1124
1124 scoped_refptr<ElementAnimations> animations = element_animations(); 1125 scoped_refptr<ElementAnimations> animations = element_animations();
1125 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 1126 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1304 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1304 1, TargetProperty::OPACITY)); 1305 1, TargetProperty::OPACITY));
1305 to_add->set_needs_synchronized_start_time(true); 1306 to_add->set_needs_synchronized_start_time(true);
1306 1307
1307 // We should pause at the first keyframe indefinitely waiting for that 1308 // We should pause at the first keyframe indefinitely waiting for that
1308 // animation to start. 1309 // animation to start.
1309 animations->AddAnimation(std::move(to_add)); 1310 animations->AddAnimation(std::move(to_add));
1310 animations->Animate(kInitialTickTime); 1311 animations->Animate(kInitialTickTime);
1311 animations->UpdateState(true, events.get()); 1312 animations->UpdateState(true, events.get());
1312 EXPECT_TRUE(animations->HasActiveAnimation()); 1313 EXPECT_TRUE(animations->HasActiveAnimation());
1313 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1314 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1314 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1315 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1315 animations->UpdateState(true, events.get()); 1316 animations->UpdateState(true, events.get());
1316 EXPECT_TRUE(animations->HasActiveAnimation()); 1317 EXPECT_TRUE(animations->HasActiveAnimation());
1317 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1318 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1318 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1319 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1319 animations->UpdateState(true, events.get()); 1320 animations->UpdateState(true, events.get());
1320 EXPECT_TRUE(animations->HasActiveAnimation()); 1321 EXPECT_TRUE(animations->HasActiveAnimation());
1321 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1322 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1322 1323
1323 // Send the synchronized start time. 1324 // Send the synchronized start time.
1324 animations->NotifyAnimationStarted( 1325 animations->NotifyAnimationStarted(
1325 AnimationEvent(AnimationEvent::STARTED, 0, 1, TargetProperty::OPACITY, 1326 AnimationEvent(AnimationEvent::STARTED, 0, 1, TargetProperty::OPACITY,
1326 kInitialTickTime + TimeDelta::FromMilliseconds(2000))); 1327 kInitialTickTime + TimeDelta::FromMilliseconds(2000)));
1327 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(5000)); 1328 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(5000));
1328 animations->UpdateState(true, events.get()); 1329 animations->UpdateState(true, events.get());
1329 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1330 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1330 EXPECT_FALSE(animations->HasActiveAnimation()); 1331 EXPECT_FALSE(animations->HasActiveAnimation());
1331 } 1332 }
1332 1333
1333 // Tests that two queued animations affecting the same property run in sequence. 1334 // Tests that two queued animations affecting the same property run in sequence.
1334 TEST_F(ElementAnimationsTest, TrivialQueuing) { 1335 TEST_F(ElementAnimationsTest, TrivialQueuing) {
1335 CreateTestLayer(false, false); 1336 CreateTestLayer(false, false);
1336 AttachTimelinePlayerLayer(); 1337 AttachTimelinePlayerLayer();
1337 1338
1338 scoped_refptr<ElementAnimations> animations = element_animations(); 1339 scoped_refptr<ElementAnimations> animations = element_animations();
1339 1340
(...skipping 10 matching lines...) Expand all
1350 1351
1351 EXPECT_TRUE(animations->needs_to_start_animations_for_testing()); 1352 EXPECT_TRUE(animations->needs_to_start_animations_for_testing());
1352 1353
1353 animations->Animate(kInitialTickTime); 1354 animations->Animate(kInitialTickTime);
1354 1355
1355 // The second animation still needs to be started. 1356 // The second animation still needs to be started.
1356 EXPECT_TRUE(animations->needs_to_start_animations_for_testing()); 1357 EXPECT_TRUE(animations->needs_to_start_animations_for_testing());
1357 1358
1358 animations->UpdateState(true, events.get()); 1359 animations->UpdateState(true, events.get());
1359 EXPECT_TRUE(animations->HasActiveAnimation()); 1360 EXPECT_TRUE(animations->HasActiveAnimation());
1360 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1361 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1361 1362
1362 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1363 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1363 EXPECT_TRUE(animations->needs_to_start_animations_for_testing()); 1364 EXPECT_TRUE(animations->needs_to_start_animations_for_testing());
1364 animations->UpdateState(true, events.get()); 1365 animations->UpdateState(true, events.get());
1365 EXPECT_FALSE(animations->needs_to_start_animations_for_testing()); 1366 EXPECT_FALSE(animations->needs_to_start_animations_for_testing());
1366 1367
1367 EXPECT_TRUE(animations->HasActiveAnimation()); 1368 EXPECT_TRUE(animations->HasActiveAnimation());
1368 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1369 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1369 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1370 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1370 animations->UpdateState(true, events.get()); 1371 animations->UpdateState(true, events.get());
1371 EXPECT_EQ(0.5f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1372 EXPECT_EQ(0.5f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1372 EXPECT_FALSE(animations->HasActiveAnimation()); 1373 EXPECT_FALSE(animations->HasActiveAnimation());
1373 } 1374 }
1374 1375
1375 // Tests interrupting a transition with another transition. 1376 // Tests interrupting a transition with another transition.
1376 TEST_F(ElementAnimationsTest, Interrupt) { 1377 TEST_F(ElementAnimationsTest, Interrupt) {
1377 CreateTestLayer(false, false); 1378 CreateTestLayer(false, false);
1378 AttachTimelinePlayerLayer(); 1379 AttachTimelinePlayerLayer();
1379 1380
1380 scoped_refptr<ElementAnimations> animations = element_animations(); 1381 scoped_refptr<ElementAnimations> animations = element_animations();
1381 1382
1382 auto events = host_impl_->CreateEvents(); 1383 auto events = host_impl_->CreateEvents();
1383 1384
1384 animations->AddAnimation(CreateAnimation( 1385 animations->AddAnimation(CreateAnimation(
1385 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1386 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1386 1, TargetProperty::OPACITY)); 1387 1, TargetProperty::OPACITY));
1387 animations->Animate(kInitialTickTime); 1388 animations->Animate(kInitialTickTime);
1388 animations->UpdateState(true, events.get()); 1389 animations->UpdateState(true, events.get());
1389 EXPECT_TRUE(animations->HasActiveAnimation()); 1390 EXPECT_TRUE(animations->HasActiveAnimation());
1390 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1391 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1391 1392
1392 std::unique_ptr<Animation> to_add(CreateAnimation( 1393 std::unique_ptr<Animation> to_add(CreateAnimation(
1393 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)), 1394 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)),
1394 2, TargetProperty::OPACITY)); 1395 2, TargetProperty::OPACITY));
1395 animations->AbortAnimations(TargetProperty::OPACITY); 1396 animations->AbortAnimations(TargetProperty::OPACITY);
1396 animations->AddAnimation(std::move(to_add)); 1397 animations->AddAnimation(std::move(to_add));
1397 1398
1398 // Since the previous animation was aborted, the new animation should start 1399 // Since the previous animation was aborted, the new animation should start
1399 // right in this call to animate. 1400 // right in this call to animate.
1400 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); 1401 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500));
1401 animations->UpdateState(true, events.get()); 1402 animations->UpdateState(true, events.get());
1402 EXPECT_TRUE(animations->HasActiveAnimation()); 1403 EXPECT_TRUE(animations->HasActiveAnimation());
1403 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1404 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1404 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1500)); 1405 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1500));
1405 animations->UpdateState(true, events.get()); 1406 animations->UpdateState(true, events.get());
1406 EXPECT_EQ(0.5f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1407 EXPECT_EQ(0.5f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1407 EXPECT_FALSE(animations->HasActiveAnimation()); 1408 EXPECT_FALSE(animations->HasActiveAnimation());
1408 } 1409 }
1409 1410
1410 // Tests scheduling two animations to run together when only one property is 1411 // Tests scheduling two animations to run together when only one property is
1411 // free. 1412 // free.
1412 TEST_F(ElementAnimationsTest, ScheduleTogetherWhenAPropertyIsBlocked) { 1413 TEST_F(ElementAnimationsTest, ScheduleTogetherWhenAPropertyIsBlocked) {
1413 CreateTestLayer(false, false); 1414 CreateTestLayer(false, false);
1414 AttachTimelinePlayerLayer(); 1415 AttachTimelinePlayerLayer();
1415 1416
1416 scoped_refptr<ElementAnimations> animations = element_animations(); 1417 scoped_refptr<ElementAnimations> animations = element_animations();
1417 1418
1418 auto events = host_impl_->CreateEvents(); 1419 auto events = host_impl_->CreateEvents();
1419 1420
1420 animations->AddAnimation(CreateAnimation( 1421 animations->AddAnimation(CreateAnimation(
1421 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1)), 1, 1422 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1)), 1,
1422 TargetProperty::TRANSFORM)); 1423 TargetProperty::TRANSFORM));
1423 animations->AddAnimation(CreateAnimation( 1424 animations->AddAnimation(CreateAnimation(
1424 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1)), 2, 1425 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1)), 2,
1425 TargetProperty::TRANSFORM)); 1426 TargetProperty::TRANSFORM));
1426 animations->AddAnimation(CreateAnimation( 1427 animations->AddAnimation(CreateAnimation(
1427 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1428 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1428 2, TargetProperty::OPACITY)); 1429 2, TargetProperty::OPACITY));
1429 1430
1430 animations->Animate(kInitialTickTime); 1431 animations->Animate(kInitialTickTime);
1431 animations->UpdateState(true, events.get()); 1432 animations->UpdateState(true, events.get());
1432 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1433 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1433 EXPECT_TRUE(animations->HasActiveAnimation()); 1434 EXPECT_TRUE(animations->HasActiveAnimation());
1434 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1435 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1435 animations->UpdateState(true, events.get()); 1436 animations->UpdateState(true, events.get());
1436 // Should not have started the float transition yet. 1437 // Should not have started the float transition yet.
1437 EXPECT_TRUE(animations->HasActiveAnimation()); 1438 EXPECT_TRUE(animations->HasActiveAnimation());
1438 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1439 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1439 // The float animation should have started at time 1 and should be done. 1440 // The float animation should have started at time 1 and should be done.
1440 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1441 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1441 animations->UpdateState(true, events.get()); 1442 animations->UpdateState(true, events.get());
1442 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1443 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1443 EXPECT_FALSE(animations->HasActiveAnimation()); 1444 EXPECT_FALSE(animations->HasActiveAnimation());
1444 } 1445 }
1445 1446
1446 // Tests scheduling two animations to run together with different lengths and 1447 // Tests scheduling two animations to run together with different lengths and
1447 // another animation queued to start when the shorter animation finishes (should 1448 // another animation queued to start when the shorter animation finishes (should
1448 // wait for both to finish). 1449 // wait for both to finish).
1449 TEST_F(ElementAnimationsTest, ScheduleTogetherWithAnAnimWaiting) { 1450 TEST_F(ElementAnimationsTest, ScheduleTogetherWithAnAnimWaiting) {
1450 CreateTestLayer(false, false); 1451 CreateTestLayer(false, false);
1451 AttachTimelinePlayerLayer(); 1452 AttachTimelinePlayerLayer();
1452 1453
1453 scoped_refptr<ElementAnimations> animations = element_animations(); 1454 scoped_refptr<ElementAnimations> animations = element_animations();
1454 1455
1455 auto events = host_impl_->CreateEvents(); 1456 auto events = host_impl_->CreateEvents();
1456 1457
1457 animations->AddAnimation(CreateAnimation( 1458 animations->AddAnimation(CreateAnimation(
1458 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(2)), 1, 1459 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(2)), 1,
1459 TargetProperty::TRANSFORM)); 1460 TargetProperty::TRANSFORM));
1460 animations->AddAnimation(CreateAnimation( 1461 animations->AddAnimation(CreateAnimation(
1461 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1462 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1462 1, TargetProperty::OPACITY)); 1463 1, TargetProperty::OPACITY));
1463 animations->AddAnimation(CreateAnimation( 1464 animations->AddAnimation(CreateAnimation(
1464 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)), 1465 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)),
1465 2, TargetProperty::OPACITY)); 1466 2, TargetProperty::OPACITY));
1466 1467
1467 // Animations with id 1 should both start now. 1468 // Animations with id 1 should both start now.
1468 animations->Animate(kInitialTickTime); 1469 animations->Animate(kInitialTickTime);
1469 animations->UpdateState(true, events.get()); 1470 animations->UpdateState(true, events.get());
1470 EXPECT_TRUE(animations->HasActiveAnimation()); 1471 EXPECT_TRUE(animations->HasActiveAnimation());
1471 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1472 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1472 // The opacity animation should have finished at time 1, but the group 1473 // The opacity animation should have finished at time 1, but the group
1473 // of animations with id 1 don't finish until time 2 because of the length 1474 // of animations with id 1 don't finish until time 2 because of the length
1474 // of the transform animation. 1475 // of the transform animation.
1475 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1476 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1476 animations->UpdateState(true, events.get()); 1477 animations->UpdateState(true, events.get());
1477 // Should not have started the float transition yet. 1478 // Should not have started the float transition yet.
1478 EXPECT_TRUE(animations->HasActiveAnimation()); 1479 EXPECT_TRUE(animations->HasActiveAnimation());
1479 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1480 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1480 1481
1481 // The second opacity animation should start at time 2 and should be done by 1482 // The second opacity animation should start at time 2 and should be done by
1482 // time 3. 1483 // time 3.
1483 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); 1484 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000));
1484 animations->UpdateState(true, events.get()); 1485 animations->UpdateState(true, events.get());
1485 EXPECT_EQ(0.5f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1486 EXPECT_EQ(0.5f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1486 EXPECT_FALSE(animations->HasActiveAnimation()); 1487 EXPECT_FALSE(animations->HasActiveAnimation());
1487 } 1488 }
1488 1489
1489 // Test that a looping animation loops and for the correct number of iterations. 1490 // Test that a looping animation loops and for the correct number of iterations.
1490 TEST_F(ElementAnimationsTest, TrivialLooping) { 1491 TEST_F(ElementAnimationsTest, TrivialLooping) {
1491 CreateTestLayer(false, false); 1492 CreateTestLayer(false, false);
1492 AttachTimelinePlayerLayer(); 1493 AttachTimelinePlayerLayer();
1493 1494
1494 scoped_refptr<ElementAnimations> animations = element_animations(); 1495 scoped_refptr<ElementAnimations> animations = element_animations();
1495 1496
1496 auto events = host_impl_->CreateEvents(); 1497 auto events = host_impl_->CreateEvents();
1497 1498
1498 std::unique_ptr<Animation> to_add(CreateAnimation( 1499 std::unique_ptr<Animation> to_add(CreateAnimation(
1499 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1500 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1500 1, TargetProperty::OPACITY)); 1501 1, TargetProperty::OPACITY));
1501 to_add->set_iterations(3); 1502 to_add->set_iterations(3);
1502 animations->AddAnimation(std::move(to_add)); 1503 animations->AddAnimation(std::move(to_add));
1503 1504
1504 animations->Animate(kInitialTickTime); 1505 animations->Animate(kInitialTickTime);
1505 animations->UpdateState(true, events.get()); 1506 animations->UpdateState(true, events.get());
1506 EXPECT_TRUE(animations->HasActiveAnimation()); 1507 EXPECT_TRUE(animations->HasActiveAnimation());
1507 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1508 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1508 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250)); 1509 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250));
1509 animations->UpdateState(true, events.get()); 1510 animations->UpdateState(true, events.get());
1510 EXPECT_TRUE(animations->HasActiveAnimation()); 1511 EXPECT_TRUE(animations->HasActiveAnimation());
1511 EXPECT_EQ(0.25f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1512 EXPECT_EQ(0.25f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1512 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1750)); 1513 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1750));
1513 animations->UpdateState(true, events.get()); 1514 animations->UpdateState(true, events.get());
1514 EXPECT_TRUE(animations->HasActiveAnimation()); 1515 EXPECT_TRUE(animations->HasActiveAnimation());
1515 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1516 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1516 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2250)); 1517 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2250));
1517 animations->UpdateState(true, events.get()); 1518 animations->UpdateState(true, events.get());
1518 EXPECT_TRUE(animations->HasActiveAnimation()); 1519 EXPECT_TRUE(animations->HasActiveAnimation());
1519 EXPECT_EQ(0.25f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1520 EXPECT_EQ(0.25f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1520 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2750)); 1521 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2750));
1521 animations->UpdateState(true, events.get()); 1522 animations->UpdateState(true, events.get());
1522 EXPECT_TRUE(animations->HasActiveAnimation()); 1523 EXPECT_TRUE(animations->HasActiveAnimation());
1523 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1524 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1524 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); 1525 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000));
1525 animations->UpdateState(true, events.get()); 1526 animations->UpdateState(true, events.get());
1526 EXPECT_FALSE(animations->HasActiveAnimation()); 1527 EXPECT_FALSE(animations->HasActiveAnimation());
1527 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1528 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1528 1529
1529 // Just be extra sure. 1530 // Just be extra sure.
1530 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(4000)); 1531 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(4000));
1531 animations->UpdateState(true, events.get()); 1532 animations->UpdateState(true, events.get());
1532 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1533 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1533 } 1534 }
1534 1535
1535 // Test that an infinitely looping animation does indeed go until aborted. 1536 // Test that an infinitely looping animation does indeed go until aborted.
1536 TEST_F(ElementAnimationsTest, InfiniteLooping) { 1537 TEST_F(ElementAnimationsTest, InfiniteLooping) {
1537 CreateTestLayer(false, false); 1538 CreateTestLayer(false, false);
1538 AttachTimelinePlayerLayer(); 1539 AttachTimelinePlayerLayer();
1539 1540
1540 scoped_refptr<ElementAnimations> animations = element_animations(); 1541 scoped_refptr<ElementAnimations> animations = element_animations();
1541 1542
1542 auto events = host_impl_->CreateEvents(); 1543 auto events = host_impl_->CreateEvents();
1543 1544
1544 std::unique_ptr<Animation> to_add(CreateAnimation( 1545 std::unique_ptr<Animation> to_add(CreateAnimation(
1545 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1546 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1546 1, TargetProperty::OPACITY)); 1547 1, TargetProperty::OPACITY));
1547 to_add->set_iterations(-1); 1548 to_add->set_iterations(-1);
1548 animations->AddAnimation(std::move(to_add)); 1549 animations->AddAnimation(std::move(to_add));
1549 1550
1550 animations->Animate(kInitialTickTime); 1551 animations->Animate(kInitialTickTime);
1551 animations->UpdateState(true, events.get()); 1552 animations->UpdateState(true, events.get());
1552 EXPECT_TRUE(animations->HasActiveAnimation()); 1553 EXPECT_TRUE(animations->HasActiveAnimation());
1553 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1554 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1554 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250)); 1555 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250));
1555 animations->UpdateState(true, events.get()); 1556 animations->UpdateState(true, events.get());
1556 EXPECT_TRUE(animations->HasActiveAnimation()); 1557 EXPECT_TRUE(animations->HasActiveAnimation());
1557 EXPECT_EQ(0.25f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1558 EXPECT_EQ(0.25f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1558 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1750)); 1559 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1750));
1559 animations->UpdateState(true, events.get()); 1560 animations->UpdateState(true, events.get());
1560 EXPECT_TRUE(animations->HasActiveAnimation()); 1561 EXPECT_TRUE(animations->HasActiveAnimation());
1561 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1562 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1562 1563
1563 animations->Animate(kInitialTickTime + 1564 animations->Animate(kInitialTickTime +
1564 TimeDelta::FromMilliseconds(1073741824250)); 1565 TimeDelta::FromMilliseconds(1073741824250));
1565 animations->UpdateState(true, events.get()); 1566 animations->UpdateState(true, events.get());
1566 EXPECT_TRUE(animations->HasActiveAnimation()); 1567 EXPECT_TRUE(animations->HasActiveAnimation());
1567 EXPECT_EQ(0.25f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1568 EXPECT_EQ(0.25f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1568 animations->Animate(kInitialTickTime + 1569 animations->Animate(kInitialTickTime +
1569 TimeDelta::FromMilliseconds(1073741824750)); 1570 TimeDelta::FromMilliseconds(1073741824750));
1570 animations->UpdateState(true, events.get()); 1571 animations->UpdateState(true, events.get());
1571 EXPECT_TRUE(animations->HasActiveAnimation()); 1572 EXPECT_TRUE(animations->HasActiveAnimation());
1572 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1573 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1573 1574
1574 EXPECT_TRUE(animations->GetAnimation(TargetProperty::OPACITY)); 1575 EXPECT_TRUE(animations->GetAnimation(TargetProperty::OPACITY));
1575 animations->GetAnimation(TargetProperty::OPACITY) 1576 animations->GetAnimation(TargetProperty::OPACITY)
1576 ->SetRunState(Animation::ABORTED, 1577 ->SetRunState(Animation::ABORTED,
1577 kInitialTickTime + TimeDelta::FromMilliseconds(750)); 1578 kInitialTickTime + TimeDelta::FromMilliseconds(750));
1578 EXPECT_FALSE(animations->HasActiveAnimation()); 1579 EXPECT_FALSE(animations->HasActiveAnimation());
1579 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1580 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1580 } 1581 }
1581 1582
1582 // Test that pausing and resuming work as expected. 1583 // Test that pausing and resuming work as expected.
1583 TEST_F(ElementAnimationsTest, PauseResume) { 1584 TEST_F(ElementAnimationsTest, PauseResume) {
1584 CreateTestLayer(false, false); 1585 CreateTestLayer(false, false);
1585 AttachTimelinePlayerLayer(); 1586 AttachTimelinePlayerLayer();
1586 1587
1587 scoped_refptr<ElementAnimations> animations = element_animations(); 1588 scoped_refptr<ElementAnimations> animations = element_animations();
1588 1589
1589 auto events = host_impl_->CreateEvents(); 1590 auto events = host_impl_->CreateEvents();
1590 1591
1591 animations->AddAnimation(CreateAnimation( 1592 animations->AddAnimation(CreateAnimation(
1592 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1593 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)),
1593 1, TargetProperty::OPACITY)); 1594 1, TargetProperty::OPACITY));
1594 1595
1595 animations->Animate(kInitialTickTime); 1596 animations->Animate(kInitialTickTime);
1596 animations->UpdateState(true, events.get()); 1597 animations->UpdateState(true, events.get());
1597 EXPECT_TRUE(animations->HasActiveAnimation()); 1598 EXPECT_TRUE(animations->HasActiveAnimation());
1598 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1599 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1599 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); 1600 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500));
1600 animations->UpdateState(true, events.get()); 1601 animations->UpdateState(true, events.get());
1601 EXPECT_TRUE(animations->HasActiveAnimation()); 1602 EXPECT_TRUE(animations->HasActiveAnimation());
1602 EXPECT_EQ(0.5f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1603 EXPECT_EQ(0.5f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1603 1604
1604 EXPECT_TRUE(animations->GetAnimation(TargetProperty::OPACITY)); 1605 EXPECT_TRUE(animations->GetAnimation(TargetProperty::OPACITY));
1605 animations->GetAnimation(TargetProperty::OPACITY) 1606 animations->GetAnimation(TargetProperty::OPACITY)
1606 ->SetRunState(Animation::PAUSED, 1607 ->SetRunState(Animation::PAUSED,
1607 kInitialTickTime + TimeDelta::FromMilliseconds(500)); 1608 kInitialTickTime + TimeDelta::FromMilliseconds(500));
1608 1609
1609 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024000)); 1610 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024000));
1610 animations->UpdateState(true, events.get()); 1611 animations->UpdateState(true, events.get());
1611 EXPECT_TRUE(animations->HasActiveAnimation()); 1612 EXPECT_TRUE(animations->HasActiveAnimation());
1612 EXPECT_EQ(0.5f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1613 EXPECT_EQ(0.5f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1613 1614
1614 EXPECT_TRUE(animations->GetAnimation(TargetProperty::OPACITY)); 1615 EXPECT_TRUE(animations->GetAnimation(TargetProperty::OPACITY));
1615 animations->GetAnimation(TargetProperty::OPACITY) 1616 animations->GetAnimation(TargetProperty::OPACITY)
1616 ->SetRunState(Animation::RUNNING, 1617 ->SetRunState(Animation::RUNNING,
1617 kInitialTickTime + TimeDelta::FromMilliseconds(1024000)); 1618 kInitialTickTime + TimeDelta::FromMilliseconds(1024000));
1618 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024250)); 1619 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024250));
1619 animations->UpdateState(true, events.get()); 1620 animations->UpdateState(true, events.get());
1620 EXPECT_TRUE(animations->HasActiveAnimation()); 1621 EXPECT_TRUE(animations->HasActiveAnimation());
1621 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1622 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1622 1623
1623 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024500)); 1624 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024500));
1624 animations->UpdateState(true, events.get()); 1625 animations->UpdateState(true, events.get());
1625 EXPECT_FALSE(animations->HasActiveAnimation()); 1626 EXPECT_FALSE(animations->HasActiveAnimation());
1626 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1627 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1627 } 1628 }
1628 1629
1629 TEST_F(ElementAnimationsTest, AbortAGroupedAnimation) { 1630 TEST_F(ElementAnimationsTest, AbortAGroupedAnimation) {
1630 CreateTestLayer(false, false); 1631 CreateTestLayer(false, false);
1631 AttachTimelinePlayerLayer(); 1632 AttachTimelinePlayerLayer();
1632 1633
1633 scoped_refptr<ElementAnimations> animations = element_animations(); 1634 scoped_refptr<ElementAnimations> animations = element_animations();
1634 1635
1635 auto events = host_impl_->CreateEvents(); 1636 auto events = host_impl_->CreateEvents();
1636 1637
1637 const int animation_id = 2; 1638 const int animation_id = 2;
1638 animations->AddAnimation(Animation::Create( 1639 animations->AddAnimation(Animation::Create(
1639 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1)), 1, 1, 1640 std::unique_ptr<AnimationCurve>(new FakeTransformTransition(1)), 1, 1,
1640 TargetProperty::TRANSFORM)); 1641 TargetProperty::TRANSFORM));
1641 animations->AddAnimation(Animation::Create( 1642 animations->AddAnimation(Animation::Create(
1642 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)), 1643 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)),
1643 animation_id, 1, TargetProperty::OPACITY)); 1644 animation_id, 1, TargetProperty::OPACITY));
1644 animations->AddAnimation(Animation::Create( 1645 animations->AddAnimation(Animation::Create(
1645 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.75f)), 1646 std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.75f)),
1646 3, 2, TargetProperty::OPACITY)); 1647 3, 2, TargetProperty::OPACITY));
1647 1648
1648 animations->Animate(kInitialTickTime); 1649 animations->Animate(kInitialTickTime);
1649 animations->UpdateState(true, events.get()); 1650 animations->UpdateState(true, events.get());
1650 EXPECT_TRUE(animations->HasActiveAnimation()); 1651 EXPECT_TRUE(animations->HasActiveAnimation());
1651 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1652 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1652 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1653 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1653 animations->UpdateState(true, events.get()); 1654 animations->UpdateState(true, events.get());
1654 EXPECT_TRUE(animations->HasActiveAnimation()); 1655 EXPECT_TRUE(animations->HasActiveAnimation());
1655 EXPECT_EQ(0.5f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1656 EXPECT_EQ(0.5f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1656 1657
1657 EXPECT_TRUE(animations->GetAnimationById(animation_id)); 1658 EXPECT_TRUE(animations->GetAnimationById(animation_id));
1658 animations->GetAnimationById(animation_id) 1659 animations->GetAnimationById(animation_id)
1659 ->SetRunState(Animation::ABORTED, 1660 ->SetRunState(Animation::ABORTED,
1660 kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1661 kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1661 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1662 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1662 animations->UpdateState(true, events.get()); 1663 animations->UpdateState(true, events.get());
1663 EXPECT_TRUE(animations->HasActiveAnimation()); 1664 EXPECT_TRUE(animations->HasActiveAnimation());
1664 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1665 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1665 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1666 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1666 animations->UpdateState(true, events.get()); 1667 animations->UpdateState(true, events.get());
1667 EXPECT_TRUE(!animations->HasActiveAnimation()); 1668 EXPECT_TRUE(!animations->HasActiveAnimation());
1668 EXPECT_EQ(0.75f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1669 EXPECT_EQ(0.75f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1669 } 1670 }
1670 1671
1671 TEST_F(ElementAnimationsTest, PushUpdatesWhenSynchronizedStartTimeNeeded) { 1672 TEST_F(ElementAnimationsTest, PushUpdatesWhenSynchronizedStartTimeNeeded) {
1672 CreateTestLayer(true, false); 1673 CreateTestLayer(true, false);
1673 AttachTimelinePlayerLayer(); 1674 AttachTimelinePlayerLayer();
1674 CreateImplTimelineAndPlayer(); 1675 CreateImplTimelineAndPlayer();
1675 1676
1676 scoped_refptr<ElementAnimations> animations = element_animations(); 1677 scoped_refptr<ElementAnimations> animations = element_animations();
1677 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 1678 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
1678 1679
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1731 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1732 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1732 events = host_impl_->CreateEvents(); 1733 events = host_impl_->CreateEvents();
1733 animations->UpdateState(true, events.get()); 1734 animations->UpdateState(true, events.get());
1734 1735
1735 // Should have one STARTED event and one FINISHED event. 1736 // Should have one STARTED event and one FINISHED event.
1736 EXPECT_EQ(2u, events->events_.size()); 1737 EXPECT_EQ(2u, events->events_.size());
1737 EXPECT_NE(events->events_[0].type, events->events_[1].type); 1738 EXPECT_NE(events->events_[0].type, events->events_[1].type);
1738 1739
1739 // The float transition should still be at its starting point. 1740 // The float transition should still be at its starting point.
1740 EXPECT_TRUE(animations->HasActiveAnimation()); 1741 EXPECT_TRUE(animations->HasActiveAnimation());
1741 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1742 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1742 1743
1743 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); 1744 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000));
1744 animations->UpdateState(true, events.get()); 1745 animations->UpdateState(true, events.get());
1745 1746
1746 // The float tranisition should now be done. 1747 // The float tranisition should now be done.
1747 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1748 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1748 EXPECT_FALSE(animations->HasActiveAnimation()); 1749 EXPECT_FALSE(animations->HasActiveAnimation());
1749 } 1750 }
1750 1751
1751 // Tests that an animation animations with only a pending observer gets ticked 1752 // Tests that an animation animations with only a pending observer gets ticked
1752 // but doesn't progress animations past the STARTING state. 1753 // but doesn't progress animations past the STARTING state.
1753 TEST_F(ElementAnimationsTest, InactiveObserverGetsTicked) { 1754 TEST_F(ElementAnimationsTest, InactiveObserverGetsTicked) {
1754 AttachTimelinePlayerLayer(); 1755 AttachTimelinePlayerLayer();
1755 CreateImplTimelineAndPlayer(); 1756 CreateImplTimelineAndPlayer();
1756 1757
1757 scoped_refptr<ElementAnimations> animations = element_animations_impl(); 1758 scoped_refptr<ElementAnimations> animations = element_animations_impl();
(...skipping 16 matching lines...) Expand all
1774 CreateTestImplLayer(LayerTreeType::PENDING); 1775 CreateTestImplLayer(LayerTreeType::PENDING);
1775 1776
1776 // With only a pending observer, the animation should progress to the 1777 // With only a pending observer, the animation should progress to the
1777 // STARTING state and get ticked at its starting point, but should not 1778 // STARTING state and get ticked at its starting point, but should not
1778 // progress to RUNNING. 1779 // progress to RUNNING.
1779 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 1780 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
1780 animations->UpdateState(true, events.get()); 1781 animations->UpdateState(true, events.get());
1781 EXPECT_EQ(0u, events->events_.size()); 1782 EXPECT_EQ(0u, events->events_.size());
1782 EXPECT_EQ(Animation::STARTING, 1783 EXPECT_EQ(Animation::STARTING,
1783 animations->GetAnimation(TargetProperty::OPACITY)->run_state()); 1784 animations->GetAnimation(TargetProperty::OPACITY)->run_state());
1784 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 1785 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
1785 1786
1786 // Even when already in the STARTING state, the animation should stay 1787 // Even when already in the STARTING state, the animation should stay
1787 // there, and shouldn't be ticked past its starting point. 1788 // there, and shouldn't be ticked past its starting point.
1788 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); 1789 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000));
1789 animations->UpdateState(true, events.get()); 1790 animations->UpdateState(true, events.get());
1790 EXPECT_EQ(0u, events->events_.size()); 1791 EXPECT_EQ(0u, events->events_.size());
1791 EXPECT_EQ(Animation::STARTING, 1792 EXPECT_EQ(Animation::STARTING,
1792 animations->GetAnimation(TargetProperty::OPACITY)->run_state()); 1793 animations->GetAnimation(TargetProperty::OPACITY)->run_state());
1793 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 1794 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
1794 1795
1795 CreateTestImplLayer(LayerTreeType::ACTIVE); 1796 CreateTestImplLayer(LayerTreeType::ACTIVE);
1796 1797
1797 // Now that an active observer has been added, the animation should still 1798 // Now that an active observer has been added, the animation should still
1798 // initially tick at its starting point, but should now progress to RUNNING. 1799 // initially tick at its starting point, but should now progress to RUNNING.
1799 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); 1800 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000));
1800 animations->UpdateState(true, events.get()); 1801 animations->UpdateState(true, events.get());
1801 EXPECT_EQ(1u, events->events_.size()); 1802 EXPECT_EQ(1u, events->events_.size());
1802 EXPECT_EQ(Animation::RUNNING, 1803 EXPECT_EQ(Animation::RUNNING,
1803 animations->GetAnimation(TargetProperty::OPACITY)->run_state()); 1804 animations->GetAnimation(TargetProperty::OPACITY)->run_state());
1804 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 1805 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
1805 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1806 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1806 1807
1807 // The animation should now tick past its starting point. 1808 // The animation should now tick past its starting point.
1808 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3500)); 1809 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3500));
1809 EXPECT_NE(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 1810 EXPECT_NE(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
1810 EXPECT_NE(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 1811 EXPECT_NE(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
1811 } 1812 }
1812 1813
1813 TEST_F(ElementAnimationsTest, TransformAnimationBounds) { 1814 TEST_F(ElementAnimationsTest, TransformAnimationBounds) {
1814 AttachTimelinePlayerLayer(); 1815 AttachTimelinePlayerLayer();
1815 CreateImplTimelineAndPlayer(); 1816 CreateImplTimelineAndPlayer();
1816 1817
1817 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 1818 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
1818 1819
1819 std::unique_ptr<KeyframedTransformAnimationCurve> curve1( 1820 std::unique_ptr<KeyframedTransformAnimationCurve> curve1(
1820 KeyframedTransformAnimationCurve::Create()); 1821 KeyframedTransformAnimationCurve::Create());
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after
2682 EXPECT_FALSE(animations_impl->needs_to_start_animations_for_testing()); 2683 EXPECT_FALSE(animations_impl->needs_to_start_animations_for_testing());
2683 animations_impl->UpdateState(true, events.get()); 2684 animations_impl->UpdateState(true, events.get());
2684 2685
2685 // Since the animation hasn't been activated, it should still be STARTING 2686 // Since the animation hasn't been activated, it should still be STARTING
2686 // rather than RUNNING. 2687 // rather than RUNNING.
2687 EXPECT_EQ(Animation::STARTING, 2688 EXPECT_EQ(Animation::STARTING,
2688 animations_impl->GetAnimationById(animation_id)->run_state()); 2689 animations_impl->GetAnimationById(animation_id)->run_state());
2689 2690
2690 // Since the animation hasn't been activated, only the pending observer 2691 // Since the animation hasn't been activated, only the pending observer
2691 // should have been ticked. 2692 // should have been ticked.
2692 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 2693 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
2693 EXPECT_EQ(0.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2694 EXPECT_EQ(0.f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2694 2695
2695 animations_impl->ActivateAnimations(); 2696 animations_impl->ActivateAnimations();
2696 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2697 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2697 ->affects_pending_elements()); 2698 ->affects_pending_elements());
2698 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2699 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2699 ->affects_active_elements()); 2700 ->affects_active_elements());
2700 2701
2701 animations_impl->Animate(kInitialTickTime + 2702 animations_impl->Animate(kInitialTickTime +
2702 TimeDelta::FromMilliseconds(1000)); 2703 TimeDelta::FromMilliseconds(1000));
2703 animations_impl->UpdateState(true, events.get()); 2704 animations_impl->UpdateState(true, events.get());
2704 2705
2705 // Since the animation has been activated, it should have reached the 2706 // Since the animation has been activated, it should have reached the
2706 // RUNNING state and the active observer should start to get ticked. 2707 // RUNNING state and the active observer should start to get ticked.
2707 EXPECT_EQ(Animation::RUNNING, 2708 EXPECT_EQ(Animation::RUNNING,
2708 animations_impl->GetAnimationById(animation_id)->run_state()); 2709 animations_impl->GetAnimationById(animation_id)->run_state());
2709 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 2710 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
2710 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2711 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2711 } 2712 }
2712 2713
2713 TEST_F(ElementAnimationsTest, ActivationBetweenAnimateAndUpdateState) { 2714 TEST_F(ElementAnimationsTest, ActivationBetweenAnimateAndUpdateState) {
2714 CreateTestLayer(true, true); 2715 CreateTestLayer(true, true);
2715 AttachTimelinePlayerLayer(); 2716 AttachTimelinePlayerLayer();
2716 CreateImplTimelineAndPlayer(); 2717 CreateImplTimelineAndPlayer();
2717 2718
2718 scoped_refptr<ElementAnimations> animations = element_animations(); 2719 scoped_refptr<ElementAnimations> animations = element_animations();
2719 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 2720 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
2720 2721
2721 auto events = host_impl_->CreateEvents(); 2722 auto events = host_impl_->CreateEvents();
2722 2723
2723 const int animation_id = AddOpacityTransitionToElementAnimations( 2724 const int animation_id = AddOpacityTransitionToElementAnimations(
2724 animations.get(), 1, 0.5f, 1.f, true); 2725 animations.get(), 1, 0.5f, 1.f, true);
2725 2726
2726 animations->PushPropertiesTo(animations_impl.get()); 2727 animations->PushPropertiesTo(animations_impl.get());
2727 2728
2728 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)); 2729 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id));
2729 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, 2730 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY,
2730 animations_impl->GetAnimationById(animation_id)->run_state()); 2731 animations_impl->GetAnimationById(animation_id)->run_state());
2731 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2732 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2732 ->affects_pending_elements()); 2733 ->affects_pending_elements());
2733 EXPECT_FALSE(animations_impl->GetAnimationById(animation_id) 2734 EXPECT_FALSE(animations_impl->GetAnimationById(animation_id)
2734 ->affects_active_elements()); 2735 ->affects_active_elements());
2735 2736
2736 animations_impl->Animate(kInitialTickTime); 2737 animations_impl->Animate(kInitialTickTime);
2737 2738
2738 // Since the animation hasn't been activated, only the pending observer 2739 // Since the animation hasn't been activated, only the pending observer
2739 // should have been ticked. 2740 // should have been ticked.
2740 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 2741 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
2741 EXPECT_EQ(0.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2742 EXPECT_EQ(0.f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2742 2743
2743 animations_impl->ActivateAnimations(); 2744 animations_impl->ActivateAnimations();
2744 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2745 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2745 ->affects_pending_elements()); 2746 ->affects_pending_elements());
2746 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2747 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2747 ->affects_active_elements()); 2748 ->affects_active_elements());
2748 2749
2749 animations_impl->UpdateState(true, events.get()); 2750 animations_impl->UpdateState(true, events.get());
2750 2751
2751 // Since the animation has been activated, it should have reached the 2752 // Since the animation has been activated, it should have reached the
2752 // RUNNING state. 2753 // RUNNING state.
2753 EXPECT_EQ(Animation::RUNNING, 2754 EXPECT_EQ(Animation::RUNNING,
2754 animations_impl->GetAnimationById(animation_id)->run_state()); 2755 animations_impl->GetAnimationById(animation_id)->run_state());
2755 2756
2756 animations_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); 2757 animations_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500));
2757 2758
2758 // Both elements should have been ticked. 2759 // Both elements should have been ticked.
2759 EXPECT_EQ(0.75f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 2760 EXPECT_EQ(0.75f,
2760 EXPECT_EQ(0.75f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2761 client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
2762 EXPECT_EQ(0.75f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2761 } 2763 }
2762 2764
2763 TEST_F(ElementAnimationsTest, 2765 TEST_F(ElementAnimationsTest,
2764 ObserverNotifiedWhenTransformIsPotentiallyAnimatingChanges) { 2766 ObserverNotifiedWhenTransformIsPotentiallyAnimatingChanges) {
2765 CreateTestLayer(true, true); 2767 CreateTestLayer(true, true);
2766 AttachTimelinePlayerLayer(); 2768 AttachTimelinePlayerLayer();
2767 CreateImplTimelineAndPlayer(); 2769 CreateImplTimelineAndPlayer();
2768 2770
2769 scoped_refptr<ElementAnimations> animations = element_animations(); 2771 scoped_refptr<ElementAnimations> animations = element_animations();
2770 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 2772 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
2771 2773
2772 auto events = host_impl_->CreateEvents(); 2774 auto events = host_impl_->CreateEvents();
2773 2775
2774 EXPECT_FALSE( 2776 EXPECT_FALSE(
2775 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2777 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2778 EXPECT_FALSE(client_impl_.GetTransformIsAnimating(element_id_,
2779 LayerTreeType::PENDING));
2776 EXPECT_FALSE( 2780 EXPECT_FALSE(
2777 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2781 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2778 EXPECT_FALSE(
2779 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2780 2782
2781 // Case 1: An animation that's allowed to run until its finish point. 2783 // Case 1: An animation that's allowed to run until its finish point.
2782 AddAnimatedTransformToElementAnimations(animations.get(), 1.0, 1, 1); 2784 AddAnimatedTransformToElementAnimations(animations.get(), 1.0, 1, 1);
2783 EXPECT_TRUE( 2785 EXPECT_TRUE(
2784 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2786 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2785 2787
2786 animations->PushPropertiesTo(animations_impl.get()); 2788 animations->PushPropertiesTo(animations_impl.get());
2787 EXPECT_TRUE( 2789 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2788 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2790 LayerTreeType::PENDING));
2789 EXPECT_FALSE( 2791 EXPECT_FALSE(
2790 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2792 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2791 2793
2792 animations_impl->ActivateAnimations(); 2794 animations_impl->ActivateAnimations();
2795 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2796 LayerTreeType::PENDING));
2793 EXPECT_TRUE( 2797 EXPECT_TRUE(
2794 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2798 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2795 EXPECT_TRUE(
2796 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2797 2799
2798 animations_impl->Animate(kInitialTickTime); 2800 animations_impl->Animate(kInitialTickTime);
2799 animations_impl->UpdateState(true, events.get()); 2801 animations_impl->UpdateState(true, events.get());
2800 2802
2801 animations->NotifyAnimationStarted(events->events_[0]); 2803 animations->NotifyAnimationStarted(events->events_[0]);
2802 events->events_.clear(); 2804 events->events_.clear();
2803 2805
2804 // Finish the animation. 2806 // Finish the animation.
2805 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 2807 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
2806 animations->UpdateState(true, nullptr); 2808 animations->UpdateState(true, nullptr);
2807 EXPECT_FALSE( 2809 EXPECT_FALSE(
2808 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2810 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2809 2811
2810 animations->PushPropertiesTo(animations_impl.get()); 2812 animations->PushPropertiesTo(animations_impl.get());
2811 2813
2812 // animations_impl hasn't yet ticked at/past the end of the animation. 2814 // animations_impl hasn't yet ticked at/past the end of the animation.
2815 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2816 LayerTreeType::PENDING));
2813 EXPECT_TRUE( 2817 EXPECT_TRUE(
2814 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2818 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2815 EXPECT_TRUE(
2816 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2817 2819
2818 animations_impl->Animate(kInitialTickTime + 2820 animations_impl->Animate(kInitialTickTime +
2819 TimeDelta::FromMilliseconds(1000)); 2821 TimeDelta::FromMilliseconds(1000));
2820 animations_impl->UpdateState(true, events.get()); 2822 animations_impl->UpdateState(true, events.get());
2823 EXPECT_FALSE(client_impl_.GetTransformIsAnimating(element_id_,
2824 LayerTreeType::PENDING));
2821 EXPECT_FALSE( 2825 EXPECT_FALSE(
2822 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2826 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2823 EXPECT_FALSE(
2824 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2825 2827
2826 animations->NotifyAnimationFinished(events->events_[0]); 2828 animations->NotifyAnimationFinished(events->events_[0]);
2827 events->events_.clear(); 2829 events->events_.clear();
2828 2830
2829 // Case 2: An animation that's removed before it finishes. 2831 // Case 2: An animation that's removed before it finishes.
2830 int animation_id = 2832 int animation_id =
2831 AddAnimatedTransformToElementAnimations(animations.get(), 10.0, 2, 2); 2833 AddAnimatedTransformToElementAnimations(animations.get(), 10.0, 2, 2);
2832 EXPECT_TRUE( 2834 EXPECT_TRUE(
2833 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2835 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2834 2836
2835 animations->PushPropertiesTo(animations_impl.get()); 2837 animations->PushPropertiesTo(animations_impl.get());
2836 EXPECT_TRUE( 2838 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2837 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2839 LayerTreeType::PENDING));
2838 EXPECT_FALSE( 2840 EXPECT_FALSE(
2839 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2841 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2840 2842
2841 animations_impl->ActivateAnimations(); 2843 animations_impl->ActivateAnimations();
2844 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2845 LayerTreeType::PENDING));
2842 EXPECT_TRUE( 2846 EXPECT_TRUE(
2843 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2847 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2844 EXPECT_TRUE(
2845 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2846 2848
2847 animations_impl->Animate(kInitialTickTime + 2849 animations_impl->Animate(kInitialTickTime +
2848 TimeDelta::FromMilliseconds(2000)); 2850 TimeDelta::FromMilliseconds(2000));
2849 animations_impl->UpdateState(true, events.get()); 2851 animations_impl->UpdateState(true, events.get());
2850 2852
2851 animations->NotifyAnimationStarted(events->events_[0]); 2853 animations->NotifyAnimationStarted(events->events_[0]);
2852 events->events_.clear(); 2854 events->events_.clear();
2853 2855
2854 animations->RemoveAnimation(animation_id); 2856 animations->RemoveAnimation(animation_id);
2855 EXPECT_FALSE( 2857 EXPECT_FALSE(
2856 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2858 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2857 2859
2858 animations->PushPropertiesTo(animations_impl.get()); 2860 animations->PushPropertiesTo(animations_impl.get());
2859 EXPECT_FALSE( 2861 EXPECT_FALSE(client_impl_.GetTransformIsAnimating(element_id_,
2860 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2862 LayerTreeType::PENDING));
2861 EXPECT_TRUE( 2863 EXPECT_TRUE(
2862 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2864 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2863 2865
2864 animations_impl->ActivateAnimations(); 2866 animations_impl->ActivateAnimations();
2867 EXPECT_FALSE(client_impl_.GetTransformIsAnimating(element_id_,
2868 LayerTreeType::PENDING));
2865 EXPECT_FALSE( 2869 EXPECT_FALSE(
2866 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2870 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2867 EXPECT_FALSE(
2868 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2869 2871
2870 // Case 3: An animation that's aborted before it finishes. 2872 // Case 3: An animation that's aborted before it finishes.
2871 animation_id = 2873 animation_id =
2872 AddAnimatedTransformToElementAnimations(animations.get(), 10.0, 3, 3); 2874 AddAnimatedTransformToElementAnimations(animations.get(), 10.0, 3, 3);
2873 EXPECT_TRUE( 2875 EXPECT_TRUE(
2874 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2876 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2875 2877
2876 animations->PushPropertiesTo(animations_impl.get()); 2878 animations->PushPropertiesTo(animations_impl.get());
2877 EXPECT_TRUE( 2879 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2878 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2880 LayerTreeType::PENDING));
2879 EXPECT_FALSE( 2881 EXPECT_FALSE(
2880 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2882 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2881 2883
2882 animations_impl->ActivateAnimations(); 2884 animations_impl->ActivateAnimations();
2885 EXPECT_TRUE(client_impl_.GetTransformIsAnimating(element_id_,
2886 LayerTreeType::PENDING));
2883 EXPECT_TRUE( 2887 EXPECT_TRUE(
2884 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2888 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2885 EXPECT_TRUE(
2886 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2887 2889
2888 animations_impl->Animate(kInitialTickTime + 2890 animations_impl->Animate(kInitialTickTime +
2889 TimeDelta::FromMilliseconds(3000)); 2891 TimeDelta::FromMilliseconds(3000));
2890 animations_impl->UpdateState(true, events.get()); 2892 animations_impl->UpdateState(true, events.get());
2891 2893
2892 animations->NotifyAnimationStarted(events->events_[0]); 2894 animations->NotifyAnimationStarted(events->events_[0]);
2893 events->events_.clear(); 2895 events->events_.clear();
2894 2896
2895 animations_impl->AbortAnimations(TargetProperty::TRANSFORM); 2897 animations_impl->AbortAnimations(TargetProperty::TRANSFORM);
2898 EXPECT_FALSE(client_impl_.GetTransformIsAnimating(element_id_,
2899 LayerTreeType::PENDING));
2896 EXPECT_FALSE( 2900 EXPECT_FALSE(
2897 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::PENDING)); 2901 client_impl_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2898 EXPECT_FALSE(
2899 client_impl_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE));
2900 2902
2901 animations_impl->Animate(kInitialTickTime + 2903 animations_impl->Animate(kInitialTickTime +
2902 TimeDelta::FromMilliseconds(4000)); 2904 TimeDelta::FromMilliseconds(4000));
2903 animations_impl->UpdateState(true, events.get()); 2905 animations_impl->UpdateState(true, events.get());
2904 2906
2905 animations->NotifyAnimationAborted(events->events_[0]); 2907 animations->NotifyAnimationAborted(events->events_[0]);
2906 EXPECT_FALSE( 2908 EXPECT_FALSE(
2907 client_.GetTransformIsAnimating(layer_id_, LayerTreeType::ACTIVE)); 2909 client_.GetTransformIsAnimating(element_id_, LayerTreeType::ACTIVE));
2908 } 2910 }
2909 2911
2910 TEST_F(ElementAnimationsTest, ClippedOpacityValues) { 2912 TEST_F(ElementAnimationsTest, ClippedOpacityValues) {
2911 CreateTestLayer(false, false); 2913 CreateTestLayer(false, false);
2912 AttachTimelinePlayerLayer(); 2914 AttachTimelinePlayerLayer();
2913 2915
2914 scoped_refptr<ElementAnimations> animations = element_animations(); 2916 scoped_refptr<ElementAnimations> animations = element_animations();
2915 2917
2916 AddOpacityTransitionToElementAnimations(animations.get(), 1, 1.f, 2.f, true); 2918 AddOpacityTransitionToElementAnimations(animations.get(), 1, 1.f, 2.f, true);
2917 2919
2918 animations->Animate(kInitialTickTime); 2920 animations->Animate(kInitialTickTime);
2919 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2921 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2920 2922
2921 // Opacity values are clipped [0,1] 2923 // Opacity values are clipped [0,1]
2922 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 2924 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
2923 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2925 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2924 } 2926 }
2925 2927
2926 TEST_F(ElementAnimationsTest, ClippedNegativeOpacityValues) { 2928 TEST_F(ElementAnimationsTest, ClippedNegativeOpacityValues) {
2927 CreateTestLayer(false, false); 2929 CreateTestLayer(false, false);
2928 AttachTimelinePlayerLayer(); 2930 AttachTimelinePlayerLayer();
2929 2931
2930 scoped_refptr<ElementAnimations> animations = element_animations(); 2932 scoped_refptr<ElementAnimations> animations = element_animations();
2931 2933
2932 AddOpacityTransitionToElementAnimations(animations.get(), 1, 0.f, -2.f, true); 2934 AddOpacityTransitionToElementAnimations(animations.get(), 1, 0.f, -2.f, true);
2933 2935
2934 animations->Animate(kInitialTickTime); 2936 animations->Animate(kInitialTickTime);
2935 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2937 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2936 2938
2937 // Opacity values are clipped [0,1] 2939 // Opacity values are clipped [0,1]
2938 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); 2940 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000));
2939 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2941 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2940 } 2942 }
2941 2943
2942 TEST_F(ElementAnimationsTest, PushedDeletedAnimationWaitsForActivation) { 2944 TEST_F(ElementAnimationsTest, PushedDeletedAnimationWaitsForActivation) {
2943 CreateTestLayer(true, true); 2945 CreateTestLayer(true, true);
2944 AttachTimelinePlayerLayer(); 2946 AttachTimelinePlayerLayer();
2945 CreateImplTimelineAndPlayer(); 2947 CreateImplTimelineAndPlayer();
2946 2948
2947 scoped_refptr<ElementAnimations> animations = element_animations(); 2949 scoped_refptr<ElementAnimations> animations = element_animations();
2948 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl(); 2950 scoped_refptr<ElementAnimations> animations_impl = element_animations_impl();
2949 2951
2950 auto events = host_impl_->CreateEvents(); 2952 auto events = host_impl_->CreateEvents();
2951 2953
2952 const int animation_id = AddOpacityTransitionToElementAnimations( 2954 const int animation_id = AddOpacityTransitionToElementAnimations(
2953 animations.get(), 1, 0.5f, 1.f, true); 2955 animations.get(), 1, 0.5f, 1.f, true);
2954 2956
2955 animations->PushPropertiesTo(animations_impl.get()); 2957 animations->PushPropertiesTo(animations_impl.get());
2956 animations_impl->ActivateAnimations(); 2958 animations_impl->ActivateAnimations();
2957 animations_impl->Animate(kInitialTickTime); 2959 animations_impl->Animate(kInitialTickTime);
2958 animations_impl->UpdateState(true, events.get()); 2960 animations_impl->UpdateState(true, events.get());
2959 EXPECT_EQ(Animation::RUNNING, 2961 EXPECT_EQ(Animation::RUNNING,
2960 animations_impl->GetAnimationById(animation_id)->run_state()); 2962 animations_impl->GetAnimationById(animation_id)->run_state());
2961 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 2963 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
2962 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2964 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2963 2965
2964 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2966 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2965 ->affects_pending_elements()); 2967 ->affects_pending_elements());
2966 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2968 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2967 ->affects_active_elements()); 2969 ->affects_active_elements());
2968 2970
2969 // Delete the animation on the main-thread animations. 2971 // Delete the animation on the main-thread animations.
2970 animations->RemoveAnimation( 2972 animations->RemoveAnimation(
2971 animations->GetAnimation(TargetProperty::OPACITY)->id()); 2973 animations->GetAnimation(TargetProperty::OPACITY)->id());
2972 animations->PushPropertiesTo(animations_impl.get()); 2974 animations->PushPropertiesTo(animations_impl.get());
2973 2975
2974 // The animation should no longer affect pending elements. 2976 // The animation should no longer affect pending elements.
2975 EXPECT_FALSE(animations_impl->GetAnimationById(animation_id) 2977 EXPECT_FALSE(animations_impl->GetAnimationById(animation_id)
2976 ->affects_pending_elements()); 2978 ->affects_pending_elements());
2977 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id) 2979 EXPECT_TRUE(animations_impl->GetAnimationById(animation_id)
2978 ->affects_active_elements()); 2980 ->affects_active_elements());
2979 2981
2980 animations_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); 2982 animations_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500));
2981 animations_impl->UpdateState(true, events.get()); 2983 animations_impl->UpdateState(true, events.get());
2982 2984
2983 // Only the active observer should have been ticked. 2985 // Only the active observer should have been ticked.
2984 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 2986 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
2985 EXPECT_EQ(0.75f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 2987 EXPECT_EQ(0.75f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
2986 2988
2987 animations_impl->ActivateAnimations(); 2989 animations_impl->ActivateAnimations();
2988 2990
2989 // Activation should cause the animation to be deleted. 2991 // Activation should cause the animation to be deleted.
2990 EXPECT_FALSE(animations_impl->has_any_animation()); 2992 EXPECT_FALSE(animations_impl->has_any_animation());
2991 } 2993 }
2992 2994
2993 // Tests that an animation that affects only active elements won't block 2995 // Tests that an animation that affects only active elements won't block
2994 // an animation that affects only pending elements from starting. 2996 // an animation that affects only pending elements from starting.
2995 TEST_F(ElementAnimationsTest, StartAnimationsAffectingDifferentObservers) { 2997 TEST_F(ElementAnimationsTest, StartAnimationsAffectingDifferentObservers) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3035 // The original animation should still be running, and the new animation 3037 // The original animation should still be running, and the new animation
3036 // should be starting. 3038 // should be starting.
3037 EXPECT_EQ(Animation::RUNNING, 3039 EXPECT_EQ(Animation::RUNNING,
3038 animations_impl->GetAnimationById(first_animation_id)->run_state()); 3040 animations_impl->GetAnimationById(first_animation_id)->run_state());
3039 EXPECT_EQ( 3041 EXPECT_EQ(
3040 Animation::STARTING, 3042 Animation::STARTING,
3041 animations_impl->GetAnimationById(second_animation_id)->run_state()); 3043 animations_impl->GetAnimationById(second_animation_id)->run_state());
3042 3044
3043 // The active observer should have been ticked by the original animation, 3045 // The active observer should have been ticked by the original animation,
3044 // and the pending observer should have been ticked by the new animation. 3046 // and the pending observer should have been ticked by the new animation.
3045 EXPECT_EQ(1.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 3047 EXPECT_EQ(1.f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
3046 EXPECT_EQ(0.5f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 3048 EXPECT_EQ(0.5f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
3047 3049
3048 animations_impl->ActivateAnimations(); 3050 animations_impl->ActivateAnimations();
3049 3051
3050 // The original animation should have been deleted, and the new animation 3052 // The original animation should have been deleted, and the new animation
3051 // should now affect both elements. 3053 // should now affect both elements.
3052 EXPECT_FALSE(animations_impl->GetAnimationById(first_animation_id)); 3054 EXPECT_FALSE(animations_impl->GetAnimationById(first_animation_id));
3053 EXPECT_TRUE(animations_impl->GetAnimationById(second_animation_id) 3055 EXPECT_TRUE(animations_impl->GetAnimationById(second_animation_id)
3054 ->affects_pending_elements()); 3056 ->affects_pending_elements());
3055 EXPECT_TRUE(animations_impl->GetAnimationById(second_animation_id) 3057 EXPECT_TRUE(animations_impl->GetAnimationById(second_animation_id)
3056 ->affects_active_elements()); 3058 ->affects_active_elements());
3057 3059
3058 animations_impl->Animate(kInitialTickTime + 3060 animations_impl->Animate(kInitialTickTime +
3059 TimeDelta::FromMilliseconds(1000)); 3061 TimeDelta::FromMilliseconds(1000));
3060 animations_impl->UpdateState(true, events.get()); 3062 animations_impl->UpdateState(true, events.get());
3061 3063
3062 // The new animation should be running, and the active observer should have 3064 // The new animation should be running, and the active observer should have
3063 // been ticked at the new animation's starting point. 3065 // been ticked at the new animation's starting point.
3064 EXPECT_EQ( 3066 EXPECT_EQ(
3065 Animation::RUNNING, 3067 Animation::RUNNING,
3066 animations_impl->GetAnimationById(second_animation_id)->run_state()); 3068 animations_impl->GetAnimationById(second_animation_id)->run_state());
3067 EXPECT_EQ(1.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::PENDING)); 3069 EXPECT_EQ(1.f, client_impl_.GetOpacity(element_id_, LayerTreeType::PENDING));
3068 EXPECT_EQ(1.f, client_impl_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 3070 EXPECT_EQ(1.f, client_impl_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
3069 } 3071 }
3070 3072
3071 TEST_F(ElementAnimationsTest, TestIsCurrentlyAnimatingProperty) { 3073 TEST_F(ElementAnimationsTest, TestIsCurrentlyAnimatingProperty) {
3072 CreateTestLayer(false, false); 3074 CreateTestLayer(false, false);
3073 AttachTimelinePlayerLayer(); 3075 AttachTimelinePlayerLayer();
3074 3076
3075 scoped_refptr<ElementAnimations> animations = element_animations(); 3077 scoped_refptr<ElementAnimations> animations = element_animations();
3076 3078
3077 // Create an animation that initially affects only pending elements. 3079 // Create an animation that initially affects only pending elements.
3078 std::unique_ptr<Animation> animation(CreateAnimation( 3080 std::unique_ptr<Animation> animation(CreateAnimation(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3114 3116
3115 EXPECT_TRUE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY, 3117 EXPECT_TRUE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY,
3116 LayerTreeType::PENDING)); 3118 LayerTreeType::PENDING));
3117 EXPECT_TRUE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY, 3119 EXPECT_TRUE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY,
3118 LayerTreeType::ACTIVE)); 3120 LayerTreeType::ACTIVE));
3119 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty( 3121 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(
3120 TargetProperty::FILTER, LayerTreeType::PENDING)); 3122 TargetProperty::FILTER, LayerTreeType::PENDING));
3121 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::FILTER, 3123 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::FILTER,
3122 LayerTreeType::ACTIVE)); 3124 LayerTreeType::ACTIVE));
3123 3125
3124 EXPECT_EQ(0.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 3126 EXPECT_EQ(0.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
3125 3127
3126 // Tick past the end of the animation. 3128 // Tick past the end of the animation.
3127 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1100)); 3129 animations->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1100));
3128 animations->UpdateState(true, nullptr); 3130 animations->UpdateState(true, nullptr);
3129 3131
3130 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty( 3132 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(
3131 TargetProperty::OPACITY, LayerTreeType::PENDING)); 3133 TargetProperty::OPACITY, LayerTreeType::PENDING));
3132 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY, 3134 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY,
3133 LayerTreeType::ACTIVE)); 3135 LayerTreeType::ACTIVE));
3134 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty( 3136 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(
3135 TargetProperty::FILTER, LayerTreeType::PENDING)); 3137 TargetProperty::FILTER, LayerTreeType::PENDING));
3136 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::FILTER, 3138 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::FILTER,
3137 LayerTreeType::ACTIVE)); 3139 LayerTreeType::ACTIVE));
3138 3140
3139 EXPECT_EQ(1.f, client_.GetOpacity(layer_id_, LayerTreeType::ACTIVE)); 3141 EXPECT_EQ(1.f, client_.GetOpacity(element_id_, LayerTreeType::ACTIVE));
3140 } 3142 }
3141 3143
3142 TEST_F(ElementAnimationsTest, TestIsAnimatingPropertyTimeOffsetFillMode) { 3144 TEST_F(ElementAnimationsTest, TestIsAnimatingPropertyTimeOffsetFillMode) {
3143 CreateTestLayer(false, false); 3145 CreateTestLayer(false, false);
3144 AttachTimelinePlayerLayer(); 3146 AttachTimelinePlayerLayer();
3145 3147
3146 scoped_refptr<ElementAnimations> animations = element_animations(); 3148 scoped_refptr<ElementAnimations> animations = element_animations();
3147 3149
3148 // Create an animation that initially affects only pending elements, and has 3150 // Create an animation that initially affects only pending elements, and has
3149 // a start delay of 2 seconds. 3151 // a start delay of 2 seconds.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
3215 EXPECT_FALSE(animations->IsPotentiallyAnimatingProperty( 3217 EXPECT_FALSE(animations->IsPotentiallyAnimatingProperty(
3216 TargetProperty::OPACITY, LayerTreeType::ACTIVE)); 3218 TargetProperty::OPACITY, LayerTreeType::ACTIVE));
3217 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty( 3219 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(
3218 TargetProperty::OPACITY, LayerTreeType::PENDING)); 3220 TargetProperty::OPACITY, LayerTreeType::PENDING));
3219 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY, 3221 EXPECT_FALSE(animations->IsCurrentlyAnimatingProperty(TargetProperty::OPACITY,
3220 LayerTreeType::ACTIVE)); 3222 LayerTreeType::ACTIVE));
3221 } 3223 }
3222 3224
3223 } // namespace 3225 } // namespace
3224 } // namespace cc 3226 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation/element_animations.cc ('k') | cc/test/animation_timelines_test_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698