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

Side by Side Diff: cc/test/animation_timelines_test_common.cc

Issue 947033002: CC Animations: Establish AnimationHost, AnimationTimeline and AnimationPlayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move MutatorHostClient back to cc/trees/ Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "cc/test/animation_timelines_test_common.h"
6
7 #include "cc/animation/animation_events.h"
8 #include "cc/animation/animation_id_provider.h"
9 #include "cc/animation/animation_player.h"
10 #include "cc/animation/animation_registrar.h"
11 #include "cc/animation/animation_timeline.h"
12 #include "cc/animation/element_animations.h"
13 #include "cc/output/filter_operation.h"
14 #include "cc/output/filter_operations.h"
15 #include "ui/gfx/transform.h"
16
17 namespace cc {
18
19 TestLayer::TestLayer() {
20 ClearMutatedProperties();
21 }
22
23 void TestLayer::ClearMutatedProperties() {
24 transform_x_ = 0;
25 transform_y_ = 0;
26
27 opacity_ = 0;
28 brightness_ = 0;
29
30 for (int i = 0; i <= Animation::LAST_TARGET_PROPERTY; ++i)
31 mutated_properties_[i] = false;
32 }
33
34 TestHostClient::TestHostClient(ThreadInstance thread_instance)
35 : host_(AnimationHost::Create(thread_instance)),
36 mutators_need_commit_(false) {
37 host_->SetMutatorHostClient(this);
38 }
39
40 TestHostClient::~TestHostClient() {
41 for (auto& kv : layers_in_pending_tree_)
42 delete kv.second;
43 for (auto& kv : layers_in_active_tree_)
44 delete kv.second;
ajuma 2015/06/30 15:56:55 Can we express ownership using smart pointers, rat
loyso (OOO) 2015/07/01 02:25:47 Done.
45 host_->SetMutatorHostClient(nullptr);
46 }
47
48 void TestHostClient::ClearMutatedProperties() {
49 for (auto& kv : layers_in_pending_tree_)
50 kv.second->ClearMutatedProperties();
51 for (auto& kv : layers_in_active_tree_)
52 kv.second->ClearMutatedProperties();
53 }
54
55 bool TestHostClient::IsLayerInTree(int layer_id,
56 LayerTreeType tree_type) const {
57 return tree_type == LayerTreeType::ACTIVE
58 ? layers_in_active_tree_.count(layer_id)
59 : layers_in_pending_tree_.count(layer_id);
60 }
61
62 void TestHostClient::SetMutatorsNeedCommit() {
63 mutators_need_commit_ = true;
64 }
65
66 void TestHostClient::SetLayerFilterMutated(int layer_id,
67 LayerTreeType tree_type,
68 const FilterOperations& filters) {
69 for (unsigned i = 0; i < filters.size(); ++i) {
70 const FilterOperation& filter = filters.at(i);
71 if (filter.type() == FilterOperation::BRIGHTNESS) {
72 TestLayer* layer = FindTestLayer(layer_id, tree_type);
73 layer->mutated_properties_[Animation::FILTER] = true;
74 layer->brightness_ = filter.amount();
75 }
76 }
77 }
78
79 void TestHostClient::SetLayerOpacityMutated(int layer_id,
80 LayerTreeType tree_type,
81 float opacity) {
82 TestLayer* layer = FindTestLayer(layer_id, tree_type);
83 layer->mutated_properties_[Animation::OPACITY] = true;
84 layer->opacity_ = opacity;
85 }
86
87 void TestHostClient::SetLayerTransformMutated(int layer_id,
88 LayerTreeType tree_type,
89 const gfx::Transform& transform) {
90 TestLayer* layer = FindTestLayer(layer_id, tree_type);
91 layer->mutated_properties_[Animation::TRANSFORM] = true;
92 gfx::Vector2dF vec = transform.To2dTranslation();
93 layer->transform_x_ = static_cast<int>(vec.x());
94 layer->transform_y_ = static_cast<int>(vec.y());
95 }
96
97 void TestHostClient::SetLayerScrollOffsetMutated(
98 int layer_id,
99 LayerTreeType tree_type,
100 const gfx::ScrollOffset& scroll_offset) {
101 TestLayer* layer = FindTestLayer(layer_id, tree_type);
102 layer->mutated_properties_[Animation::SCROLL_OFFSET] = true;
103 layer->scroll_offset_ = scroll_offset;
104 }
105
106 void TestHostClient::RegisterLayer(int layer_id, LayerTreeType tree_type) {
107 LayerIdToTestLayer& layers_in_tree = tree_type == LayerTreeType::ACTIVE
108 ? layers_in_active_tree_
109 : layers_in_pending_tree_;
110 DCHECK(layers_in_tree.find(layer_id) == layers_in_tree.end());
111 layers_in_tree.insert(std::make_pair(layer_id, new TestLayer()));
112
113 DCHECK(host_);
114 host_->RegisterLayer(layer_id, tree_type);
115 }
116
117 void TestHostClient::UnregisterLayer(int layer_id, LayerTreeType tree_type) {
118 DCHECK(host_);
119 host_->UnregisterLayer(layer_id, tree_type);
120
121 LayerIdToTestLayer& layers_in_tree = tree_type == LayerTreeType::ACTIVE
122 ? layers_in_active_tree_
123 : layers_in_pending_tree_;
124 auto kv = layers_in_tree.find(layer_id);
125 DCHECK(kv != layers_in_tree.end());
126 delete kv->second;
127 layers_in_tree.erase(kv);
128 }
129
130 bool TestHostClient::IsPropertyMutated(
131 int layer_id,
132 LayerTreeType tree_type,
133 Animation::TargetProperty property) const {
134 TestLayer* layer = FindTestLayer(layer_id, tree_type);
135 return layer->mutated_properties_[property];
136 }
137
138 void TestHostClient::ExpectFilterPropertyMutated(int layer_id,
139 LayerTreeType tree_type,
140 float brightness) const {
141 TestLayer* layer = FindTestLayer(layer_id, tree_type);
142 EXPECT_TRUE(layer->mutated_properties_[Animation::OPACITY]);
143 EXPECT_EQ(brightness, layer->brightness_);
144 }
145
146 void TestHostClient::ExpectOpacityPropertyMutated(int layer_id,
147 LayerTreeType tree_type,
148 float opacity) const {
149 TestLayer* layer = FindTestLayer(layer_id, tree_type);
150 EXPECT_TRUE(layer->mutated_properties_[Animation::OPACITY]);
151 EXPECT_EQ(opacity, layer->opacity_);
152 }
153
154 void TestHostClient::ExpectTransformPropertyMutated(int layer_id,
155 LayerTreeType tree_type,
156 int transform_x,
157 int transform_y) const {
158 TestLayer* layer = FindTestLayer(layer_id, tree_type);
159 EXPECT_TRUE(layer->mutated_properties_[Animation::OPACITY]);
160 EXPECT_EQ(transform_x, layer->transform_x_);
161 EXPECT_EQ(transform_y, layer->transform_y_);
162 }
163
164 void TestHostClient::ExpectScrollOffsetPropertyMutated(
165 int layer_id,
166 LayerTreeType tree_type,
167 const gfx::ScrollOffset& scroll_offset) const {
168 TestLayer* layer = FindTestLayer(layer_id, tree_type);
169 EXPECT_TRUE(layer->mutated_properties_[Animation::OPACITY]);
170 EXPECT_EQ(scroll_offset, layer->scroll_offset_);
171 }
172
173 TestLayer* TestHostClient::FindTestLayer(int layer_id,
174 LayerTreeType tree_type) const {
175 const LayerIdToTestLayer& layers_in_tree = tree_type == LayerTreeType::ACTIVE
176 ? layers_in_active_tree_
177 : layers_in_pending_tree_;
178 auto kv = layers_in_tree.find(layer_id);
179 DCHECK(kv != layers_in_tree.end());
180 DCHECK(kv->second);
181 return kv->second;
182 }
183
184 TestAnimationDelegate::TestAnimationDelegate()
185 : started_(false), finished_(false) {
186 }
187
188 void TestAnimationDelegate::NotifyAnimationStarted(
189 base::TimeTicks monotonic_time,
190 Animation::TargetProperty target_property,
191 int group) {
192 started_ = true;
193 }
194 void TestAnimationDelegate::NotifyAnimationFinished(
195 base::TimeTicks monotonic_time,
196 Animation::TargetProperty target_property,
197 int group) {
198 finished_ = true;
199 }
200
201 AnimationTimelinesTest::AnimationTimelinesTest()
202 : client_(ThreadInstance::MAIN),
203 client_impl_(ThreadInstance::IMPL),
204 timeline_id_(AnimationIdProvider::NextTimelineId()),
205 player_id_(AnimationIdProvider::NextPlayerId()),
206 layer_id_(1) {
207 host_ = client_.host();
208 host_impl_ = client_impl_.host();
209 }
210
211 AnimationTimelinesTest::~AnimationTimelinesTest() {
212 }
213
214 void AnimationTimelinesTest::SetUp() {
215 timeline_ = AnimationTimeline::Create(timeline_id_);
216 player_ = AnimationPlayer::Create(player_id_);
217 }
218
219 void AnimationTimelinesTest::GetImplTimelineAndPlayerByID() {
220 timeline_impl_ = host_impl_->GetTimelineById(timeline_id_);
221 EXPECT_TRUE(timeline_impl_);
222 player_impl_ = timeline_impl_->GetPlayerById(player_id_);
223 EXPECT_TRUE(player_impl_);
224 }
225
226 void AnimationTimelinesTest::ReleaseRefPtrs() {
227 player_ = nullptr;
228 timeline_ = nullptr;
229 player_impl_ = nullptr;
230 timeline_impl_ = nullptr;
231 }
232
233 void AnimationTimelinesTest::AnimateLayersTransferEvents(
234 base::TimeTicks time,
235 unsigned expect_events) {
236 scoped_ptr<AnimationEventsVector> events =
237 host_->animation_registrar()->CreateEvents();
238
239 host_impl_->animation_registrar()->AnimateLayers(time);
240 host_impl_->animation_registrar()->UpdateAnimationState(true, events.get());
241 EXPECT_EQ(expect_events, events->size());
242
243 host_->animation_registrar()->AnimateLayers(time);
244 host_->animation_registrar()->UpdateAnimationState(true, nullptr);
245 host_->animation_registrar()->SetAnimationEvents(events.Pass());
246 }
247
248 AnimationPlayer* AnimationTimelinesTest::GetPlayerForLayerId(int layer_id) {
249 const ElementAnimations* element_animations =
250 host_->GetElementAnimationsForLayerId(layer_id);
251 return element_animations ? element_animations->players_list().head()->value()
252 : nullptr;
253 }
254
255 AnimationPlayer* AnimationTimelinesTest::GetImplPlayerForLayerId(int layer_id) {
256 const ElementAnimations* element_animations =
257 host_impl_->GetElementAnimationsForLayerId(layer_id);
258 return element_animations ? element_animations->players_list().head()->value()
259 : nullptr;
260 }
261
262 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698