OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/animation/layer_animation_controller.h" | 5 #include "cc/animation/layer_animation_controller.h" |
6 | 6 |
7 #include "cc/animation/animation.h" | 7 #include "cc/animation/animation.h" |
8 #include "cc/animation/animation_curve.h" | 8 #include "cc/animation/animation_curve.h" |
9 #include "cc/animation/animation_delegate.h" | 9 #include "cc/animation/animation_delegate.h" |
10 #include "cc/animation/animation_registrar.h" | 10 #include "cc/animation/animation_registrar.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 TEST(LayerAnimationControllerTest, SyncNewAnimation) { | 42 TEST(LayerAnimationControllerTest, SyncNewAnimation) { |
43 FakeLayerAnimationValueObserver dummy_impl; | 43 FakeLayerAnimationValueObserver dummy_impl; |
44 scoped_refptr<LayerAnimationController> controller_impl( | 44 scoped_refptr<LayerAnimationController> controller_impl( |
45 LayerAnimationController::Create(0)); | 45 LayerAnimationController::Create(0)); |
46 controller_impl->AddValueObserver(&dummy_impl); | 46 controller_impl->AddValueObserver(&dummy_impl); |
47 FakeLayerAnimationValueObserver dummy; | 47 FakeLayerAnimationValueObserver dummy; |
48 scoped_refptr<LayerAnimationController> controller( | 48 scoped_refptr<LayerAnimationController> controller( |
49 LayerAnimationController::Create(0)); | 49 LayerAnimationController::Create(0)); |
50 controller->AddValueObserver(&dummy); | 50 controller->AddValueObserver(&dummy); |
51 | 51 |
52 EXPECT_FALSE(controller_impl->GetAnimation(Animation::Opacity)); | 52 EXPECT_FALSE(controller_impl->GetAnimation(Animation::OPACITY)); |
53 | 53 |
54 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); | 54 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); |
55 EXPECT_FALSE(controller_impl->needs_to_start_animations_for_testing()); | 55 EXPECT_FALSE(controller_impl->needs_to_start_animations_for_testing()); |
56 | 56 |
57 int animation_id = | 57 int animation_id = |
58 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); | 58 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); |
59 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); | 59 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); |
60 | 60 |
61 controller->PushAnimationUpdatesTo(controller_impl.get()); | 61 controller->PushAnimationUpdatesTo(controller_impl.get()); |
62 EXPECT_TRUE(controller_impl->needs_to_start_animations_for_testing()); | 62 EXPECT_TRUE(controller_impl->needs_to_start_animations_for_testing()); |
63 controller_impl->ActivateAnimations(); | 63 controller_impl->ActivateAnimations(); |
64 | 64 |
65 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 65 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
66 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 66 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
67 controller_impl->GetAnimationById(animation_id)->run_state()); | 67 controller_impl->GetAnimationById(animation_id)->run_state()); |
68 } | 68 } |
69 | 69 |
70 // If an animation is started on the impl thread before it is ticked on the main | 70 // If an animation is started on the impl thread before it is ticked on the main |
71 // thread, we must be sure to respect the synchronized start time. | 71 // thread, we must be sure to respect the synchronized start time. |
72 TEST(LayerAnimationControllerTest, DoNotClobberStartTimes) { | 72 TEST(LayerAnimationControllerTest, DoNotClobberStartTimes) { |
73 FakeLayerAnimationValueObserver dummy_impl; | 73 FakeLayerAnimationValueObserver dummy_impl; |
74 scoped_refptr<LayerAnimationController> controller_impl( | 74 scoped_refptr<LayerAnimationController> controller_impl( |
75 LayerAnimationController::Create(0)); | 75 LayerAnimationController::Create(0)); |
76 controller_impl->AddValueObserver(&dummy_impl); | 76 controller_impl->AddValueObserver(&dummy_impl); |
77 FakeLayerAnimationValueObserver dummy; | 77 FakeLayerAnimationValueObserver dummy; |
78 scoped_refptr<LayerAnimationController> controller( | 78 scoped_refptr<LayerAnimationController> controller( |
79 LayerAnimationController::Create(0)); | 79 LayerAnimationController::Create(0)); |
80 controller->AddValueObserver(&dummy); | 80 controller->AddValueObserver(&dummy); |
81 | 81 |
82 EXPECT_FALSE(controller_impl->GetAnimation(Animation::Opacity)); | 82 EXPECT_FALSE(controller_impl->GetAnimation(Animation::OPACITY)); |
83 | 83 |
84 int animation_id = | 84 int animation_id = |
85 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); | 85 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); |
86 | 86 |
87 controller->PushAnimationUpdatesTo(controller_impl.get()); | 87 controller->PushAnimationUpdatesTo(controller_impl.get()); |
88 controller_impl->ActivateAnimations(); | 88 controller_impl->ActivateAnimations(); |
89 | 89 |
90 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 90 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
91 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 91 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
92 controller_impl->GetAnimationById(animation_id)->run_state()); | 92 controller_impl->GetAnimationById(animation_id)->run_state()); |
93 | 93 |
94 AnimationEventsVector events; | 94 AnimationEventsVector events; |
95 controller_impl->Animate(kInitialTickTime); | 95 controller_impl->Animate(kInitialTickTime); |
96 controller_impl->UpdateState(true, &events); | 96 controller_impl->UpdateState(true, &events); |
97 | 97 |
98 // Synchronize the start times. | 98 // Synchronize the start times. |
99 EXPECT_EQ(1u, events.size()); | 99 EXPECT_EQ(1u, events.size()); |
100 controller->NotifyAnimationStarted(events[0]); | 100 controller->NotifyAnimationStarted(events[0]); |
101 EXPECT_EQ(controller->GetAnimationById(animation_id)->start_time(), | 101 EXPECT_EQ(controller->GetAnimationById(animation_id)->start_time(), |
(...skipping 13 matching lines...) Expand all Loading... |
115 controller_impl->AddValueObserver(&dummy_impl); | 115 controller_impl->AddValueObserver(&dummy_impl); |
116 FakeLayerAnimationValueObserver dummy; | 116 FakeLayerAnimationValueObserver dummy; |
117 scoped_refptr<LayerAnimationController> controller( | 117 scoped_refptr<LayerAnimationController> controller( |
118 LayerAnimationController::Create(0)); | 118 LayerAnimationController::Create(0)); |
119 controller->AddValueObserver(&dummy); | 119 controller->AddValueObserver(&dummy); |
120 | 120 |
121 int animation_id = | 121 int animation_id = |
122 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); | 122 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); |
123 | 123 |
124 const TimeTicks start_time = TicksFromSecondsF(123); | 124 const TimeTicks start_time = TicksFromSecondsF(123); |
125 controller->GetAnimation(Animation::Opacity)->set_start_time(start_time); | 125 controller->GetAnimation(Animation::OPACITY)->set_start_time(start_time); |
126 | 126 |
127 controller->PushAnimationUpdatesTo(controller_impl.get()); | 127 controller->PushAnimationUpdatesTo(controller_impl.get()); |
128 controller_impl->ActivateAnimations(); | 128 controller_impl->ActivateAnimations(); |
129 | 129 |
130 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 130 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
131 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 131 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
132 controller_impl->GetAnimationById(animation_id)->run_state()); | 132 controller_impl->GetAnimationById(animation_id)->run_state()); |
133 | 133 |
134 AnimationEventsVector events; | 134 AnimationEventsVector events; |
135 controller_impl->Animate(kInitialTickTime); | 135 controller_impl->Animate(kInitialTickTime); |
136 controller_impl->UpdateState(true, &events); | 136 controller_impl->UpdateState(true, &events); |
137 | 137 |
138 // Synchronize the start times. | 138 // Synchronize the start times. |
139 EXPECT_EQ(1u, events.size()); | 139 EXPECT_EQ(1u, events.size()); |
140 controller->NotifyAnimationStarted(events[0]); | 140 controller->NotifyAnimationStarted(events[0]); |
141 | 141 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 | 195 |
196 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); | 196 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); |
197 EXPECT_EQ(1u, registrar_impl->active_animation_controllers().size()); | 197 EXPECT_EQ(1u, registrar_impl->active_animation_controllers().size()); |
198 | 198 |
199 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 199 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
200 controller->UpdateState(true, nullptr); | 200 controller->UpdateState(true, nullptr); |
201 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); | 201 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); |
202 | 202 |
203 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 203 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
204 controller->UpdateState(true, nullptr); | 204 controller->UpdateState(true, nullptr); |
205 EXPECT_EQ(Animation::Finished, | 205 EXPECT_EQ(Animation::FINISHED, |
206 controller->GetAnimation(Animation::Opacity)->run_state()); | 206 controller->GetAnimation(Animation::OPACITY)->run_state()); |
207 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); | 207 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); |
208 | 208 |
209 events.reset(new AnimationEventsVector); | 209 events.reset(new AnimationEventsVector); |
210 controller_impl->Animate(kInitialTickTime + | 210 controller_impl->Animate(kInitialTickTime + |
211 TimeDelta::FromMilliseconds(1500)); | 211 TimeDelta::FromMilliseconds(1500)); |
212 controller_impl->UpdateState(true, events.get()); | 212 controller_impl->UpdateState(true, events.get()); |
213 | 213 |
214 EXPECT_EQ(Animation::WaitingForDeletion, | 214 EXPECT_EQ(Animation::WAITING_FOR_DELETION, |
215 controller_impl->GetAnimation(Animation::Opacity)->run_state()); | 215 controller_impl->GetAnimation(Animation::OPACITY)->run_state()); |
216 // The impl thread controller should have de-activated. | 216 // The impl thread controller should have de-activated. |
217 EXPECT_EQ(0u, registrar_impl->active_animation_controllers().size()); | 217 EXPECT_EQ(0u, registrar_impl->active_animation_controllers().size()); |
218 | 218 |
219 EXPECT_EQ(1u, events->size()); | 219 EXPECT_EQ(1u, events->size()); |
220 controller->NotifyAnimationFinished((*events)[0]); | 220 controller->NotifyAnimationFinished((*events)[0]); |
221 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1500)); | 221 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1500)); |
222 controller->UpdateState(true, nullptr); | 222 controller->UpdateState(true, nullptr); |
223 | 223 |
224 EXPECT_EQ(Animation::WaitingForDeletion, | 224 EXPECT_EQ(Animation::WAITING_FOR_DELETION, |
225 controller->GetAnimation(Animation::Opacity)->run_state()); | 225 controller->GetAnimation(Animation::OPACITY)->run_state()); |
226 // The main thread controller should have de-activated. | 226 // The main thread controller should have de-activated. |
227 EXPECT_EQ(0u, registrar->active_animation_controllers().size()); | 227 EXPECT_EQ(0u, registrar->active_animation_controllers().size()); |
228 | 228 |
229 controller->PushAnimationUpdatesTo(controller_impl.get()); | 229 controller->PushAnimationUpdatesTo(controller_impl.get()); |
230 controller_impl->ActivateAnimations(); | 230 controller_impl->ActivateAnimations(); |
231 EXPECT_FALSE(controller->has_any_animation()); | 231 EXPECT_FALSE(controller->has_any_animation()); |
232 EXPECT_FALSE(controller_impl->has_any_animation()); | 232 EXPECT_FALSE(controller_impl->has_any_animation()); |
233 EXPECT_EQ(0u, registrar->active_animation_controllers().size()); | 233 EXPECT_EQ(0u, registrar->active_animation_controllers().size()); |
234 EXPECT_EQ(0u, registrar_impl->active_animation_controllers().size()); | 234 EXPECT_EQ(0u, registrar_impl->active_animation_controllers().size()); |
235 | 235 |
236 controller->SetAnimationRegistrar(nullptr); | 236 controller->SetAnimationRegistrar(nullptr); |
237 controller_impl->SetAnimationRegistrar(nullptr); | 237 controller_impl->SetAnimationRegistrar(nullptr); |
238 } | 238 } |
239 | 239 |
240 TEST(LayerAnimationControllerTest, SyncPause) { | 240 TEST(LayerAnimationControllerTest, SyncPause) { |
241 FakeLayerAnimationValueObserver dummy_impl; | 241 FakeLayerAnimationValueObserver dummy_impl; |
242 scoped_refptr<LayerAnimationController> controller_impl( | 242 scoped_refptr<LayerAnimationController> controller_impl( |
243 LayerAnimationController::Create(0)); | 243 LayerAnimationController::Create(0)); |
244 controller_impl->AddValueObserver(&dummy_impl); | 244 controller_impl->AddValueObserver(&dummy_impl); |
245 FakeLayerAnimationValueObserver dummy; | 245 FakeLayerAnimationValueObserver dummy; |
246 scoped_refptr<LayerAnimationController> controller( | 246 scoped_refptr<LayerAnimationController> controller( |
247 LayerAnimationController::Create(0)); | 247 LayerAnimationController::Create(0)); |
248 controller->AddValueObserver(&dummy); | 248 controller->AddValueObserver(&dummy); |
249 | 249 |
250 EXPECT_FALSE(controller_impl->GetAnimation(Animation::Opacity)); | 250 EXPECT_FALSE(controller_impl->GetAnimation(Animation::OPACITY)); |
251 | 251 |
252 int animation_id = | 252 int animation_id = |
253 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); | 253 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); |
254 | 254 |
255 controller->PushAnimationUpdatesTo(controller_impl.get()); | 255 controller->PushAnimationUpdatesTo(controller_impl.get()); |
256 controller_impl->ActivateAnimations(); | 256 controller_impl->ActivateAnimations(); |
257 | 257 |
258 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 258 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
259 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 259 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
260 controller_impl->GetAnimationById(animation_id)->run_state()); | 260 controller_impl->GetAnimationById(animation_id)->run_state()); |
261 | 261 |
262 // Start the animations on each controller. | 262 // Start the animations on each controller. |
263 AnimationEventsVector events; | 263 AnimationEventsVector events; |
264 controller_impl->Animate(kInitialTickTime); | 264 controller_impl->Animate(kInitialTickTime); |
265 controller_impl->UpdateState(true, &events); | 265 controller_impl->UpdateState(true, &events); |
266 controller->Animate(kInitialTickTime); | 266 controller->Animate(kInitialTickTime); |
267 controller->UpdateState(true, nullptr); | 267 controller->UpdateState(true, nullptr); |
268 EXPECT_EQ(Animation::Running, | 268 EXPECT_EQ(Animation::RUNNING, |
269 controller_impl->GetAnimationById(animation_id)->run_state()); | 269 controller_impl->GetAnimationById(animation_id)->run_state()); |
270 EXPECT_EQ(Animation::Running, | 270 EXPECT_EQ(Animation::RUNNING, |
271 controller->GetAnimationById(animation_id)->run_state()); | 271 controller->GetAnimationById(animation_id)->run_state()); |
272 | 272 |
273 // Pause the main-thread animation. | 273 // Pause the main-thread animation. |
274 controller->PauseAnimation( | 274 controller->PauseAnimation( |
275 animation_id, | 275 animation_id, |
276 TimeDelta::FromMilliseconds(1000) + TimeDelta::FromMilliseconds(1000)); | 276 TimeDelta::FromMilliseconds(1000) + TimeDelta::FromMilliseconds(1000)); |
277 EXPECT_EQ(Animation::Paused, | 277 EXPECT_EQ(Animation::PAUSED, |
278 controller->GetAnimationById(animation_id)->run_state()); | 278 controller->GetAnimationById(animation_id)->run_state()); |
279 | 279 |
280 // The pause run state change should make it to the impl thread controller. | 280 // The pause run state change should make it to the impl thread controller. |
281 controller->PushAnimationUpdatesTo(controller_impl.get()); | 281 controller->PushAnimationUpdatesTo(controller_impl.get()); |
282 controller_impl->ActivateAnimations(); | 282 controller_impl->ActivateAnimations(); |
283 EXPECT_EQ(Animation::Paused, | 283 EXPECT_EQ(Animation::PAUSED, |
284 controller_impl->GetAnimationById(animation_id)->run_state()); | 284 controller_impl->GetAnimationById(animation_id)->run_state()); |
285 } | 285 } |
286 | 286 |
287 TEST(LayerAnimationControllerTest, DoNotSyncFinishedAnimation) { | 287 TEST(LayerAnimationControllerTest, DoNotSyncFinishedAnimation) { |
288 FakeLayerAnimationValueObserver dummy_impl; | 288 FakeLayerAnimationValueObserver dummy_impl; |
289 scoped_refptr<LayerAnimationController> controller_impl( | 289 scoped_refptr<LayerAnimationController> controller_impl( |
290 LayerAnimationController::Create(0)); | 290 LayerAnimationController::Create(0)); |
291 controller_impl->AddValueObserver(&dummy_impl); | 291 controller_impl->AddValueObserver(&dummy_impl); |
292 FakeLayerAnimationValueObserver dummy; | 292 FakeLayerAnimationValueObserver dummy; |
293 scoped_refptr<LayerAnimationController> controller( | 293 scoped_refptr<LayerAnimationController> controller( |
294 LayerAnimationController::Create(0)); | 294 LayerAnimationController::Create(0)); |
295 controller->AddValueObserver(&dummy); | 295 controller->AddValueObserver(&dummy); |
296 | 296 |
297 EXPECT_FALSE(controller_impl->GetAnimation(Animation::Opacity)); | 297 EXPECT_FALSE(controller_impl->GetAnimation(Animation::OPACITY)); |
298 | 298 |
299 int animation_id = | 299 int animation_id = |
300 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); | 300 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); |
301 int group_id = controller->GetAnimationById(animation_id)->group(); | 301 int group_id = controller->GetAnimationById(animation_id)->group(); |
302 | 302 |
303 controller->PushAnimationUpdatesTo(controller_impl.get()); | 303 controller->PushAnimationUpdatesTo(controller_impl.get()); |
304 controller_impl->ActivateAnimations(); | 304 controller_impl->ActivateAnimations(); |
305 | 305 |
306 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 306 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
307 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 307 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
308 controller_impl->GetAnimationById(animation_id)->run_state()); | 308 controller_impl->GetAnimationById(animation_id)->run_state()); |
309 | 309 |
310 // Notify main thread controller that the animation has started. | 310 // Notify main thread controller that the animation has started. |
311 AnimationEvent animation_started_event(AnimationEvent::Started, | 311 AnimationEvent animation_started_event(AnimationEvent::STARTED, 0, group_id, |
312 0, | 312 Animation::OPACITY, kInitialTickTime); |
313 group_id, | |
314 Animation::Opacity, | |
315 kInitialTickTime); | |
316 controller->NotifyAnimationStarted(animation_started_event); | 313 controller->NotifyAnimationStarted(animation_started_event); |
317 | 314 |
318 // Force animation to complete on impl thread. | 315 // Force animation to complete on impl thread. |
319 controller_impl->RemoveAnimation(animation_id); | 316 controller_impl->RemoveAnimation(animation_id); |
320 | 317 |
321 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id)); | 318 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id)); |
322 | 319 |
323 controller->PushAnimationUpdatesTo(controller_impl.get()); | 320 controller->PushAnimationUpdatesTo(controller_impl.get()); |
324 controller_impl->ActivateAnimations(); | 321 controller_impl->ActivateAnimations(); |
325 | 322 |
(...skipping 18 matching lines...) Expand all Loading... |
344 | 341 |
345 AddOpacityTransitionToController(controller.get(), 1.0, 0.0f, 1.0f, false); | 342 AddOpacityTransitionToController(controller.get(), 1.0, 0.0f, 1.0f, false); |
346 controller->Animate(kInitialTickTime); | 343 controller->Animate(kInitialTickTime); |
347 controller->UpdateState(true, nullptr); | 344 controller->UpdateState(true, nullptr); |
348 controller->PushAnimationUpdatesTo(controller_impl.get()); | 345 controller->PushAnimationUpdatesTo(controller_impl.get()); |
349 controller_impl->ActivateAnimations(); | 346 controller_impl->ActivateAnimations(); |
350 | 347 |
351 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 348 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
352 controller_impl->UpdateState(true, events.get()); | 349 controller_impl->UpdateState(true, events.get()); |
353 | 350 |
354 // There should be a Started event for the animation. | 351 // There should be a STARTED event for the animation. |
355 EXPECT_EQ(1u, events->size()); | 352 EXPECT_EQ(1u, events->size()); |
356 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); | 353 EXPECT_EQ(AnimationEvent::STARTED, (*events)[0].type); |
357 controller->NotifyAnimationStarted((*events)[0]); | 354 controller->NotifyAnimationStarted((*events)[0]); |
358 | 355 |
359 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 356 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
360 controller->UpdateState(true, nullptr); | 357 controller->UpdateState(true, nullptr); |
361 | 358 |
362 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); | 359 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); |
363 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); | 360 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); |
364 | 361 |
365 events.reset(new AnimationEventsVector); | 362 events.reset(new AnimationEventsVector); |
366 controller_impl->Animate(kInitialTickTime + | 363 controller_impl->Animate(kInitialTickTime + |
367 TimeDelta::FromMilliseconds(2000)); | 364 TimeDelta::FromMilliseconds(2000)); |
368 controller_impl->UpdateState(true, events.get()); | 365 controller_impl->UpdateState(true, events.get()); |
369 | 366 |
370 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion()); | 367 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion()); |
371 | 368 |
372 // There should be a Finished event for the animation. | 369 // There should be a FINISHED event for the animation. |
373 EXPECT_EQ(1u, events->size()); | 370 EXPECT_EQ(1u, events->size()); |
374 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); | 371 EXPECT_EQ(AnimationEvent::FINISHED, (*events)[0].type); |
375 | 372 |
376 // Neither controller should have deleted the animation yet. | 373 // Neither controller should have deleted the animation yet. |
377 EXPECT_TRUE(controller->GetAnimation(Animation::Opacity)); | 374 EXPECT_TRUE(controller->GetAnimation(Animation::OPACITY)); |
378 EXPECT_TRUE(controller_impl->GetAnimation(Animation::Opacity)); | 375 EXPECT_TRUE(controller_impl->GetAnimation(Animation::OPACITY)); |
379 | 376 |
380 controller->NotifyAnimationFinished((*events)[0]); | 377 controller->NotifyAnimationFinished((*events)[0]); |
381 | 378 |
382 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); | 379 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); |
383 controller->UpdateState(true, nullptr); | 380 controller->UpdateState(true, nullptr); |
384 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); | 381 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); |
385 | 382 |
386 controller->PushAnimationUpdatesTo(controller_impl.get()); | 383 controller->PushAnimationUpdatesTo(controller_impl.get()); |
387 | 384 |
388 // Both controllers should now have deleted the animation. The impl controller | 385 // Both controllers should now have deleted the animation. The impl controller |
389 // should have deleted the animation even though activation has not occurred, | 386 // should have deleted the animation even though activation has not occurred, |
390 // since the animation was already waiting for deletion when | 387 // since the animation was already waiting for deletion when |
391 // PushAnimationUpdatesTo was called. | 388 // PushAnimationUpdatesTo was called. |
392 EXPECT_FALSE(controller->has_any_animation()); | 389 EXPECT_FALSE(controller->has_any_animation()); |
393 EXPECT_FALSE(controller_impl->has_any_animation()); | 390 EXPECT_FALSE(controller_impl->has_any_animation()); |
394 } | 391 } |
395 | 392 |
396 // Tests that transitioning opacity from 0 to 1 works as expected. | 393 // Tests that transitioning opacity from 0 to 1 works as expected. |
397 | 394 |
398 static const AnimationEvent* GetMostRecentPropertyUpdateEvent( | 395 static const AnimationEvent* GetMostRecentPropertyUpdateEvent( |
399 const AnimationEventsVector* events) { | 396 const AnimationEventsVector* events) { |
400 const AnimationEvent* event = 0; | 397 const AnimationEvent* event = 0; |
401 for (size_t i = 0; i < events->size(); ++i) | 398 for (size_t i = 0; i < events->size(); ++i) |
402 if ((*events)[i].type == AnimationEvent::PropertyUpdate) | 399 if ((*events)[i].type == AnimationEvent::PROPERTY_UPDATE) |
403 event = &(*events)[i]; | 400 event = &(*events)[i]; |
404 | 401 |
405 return event; | 402 return event; |
406 } | 403 } |
407 | 404 |
408 TEST(LayerAnimationControllerTest, TrivialTransition) { | 405 TEST(LayerAnimationControllerTest, TrivialTransition) { |
409 scoped_ptr<AnimationEventsVector> events( | 406 scoped_ptr<AnimationEventsVector> events( |
410 make_scoped_ptr(new AnimationEventsVector)); | 407 make_scoped_ptr(new AnimationEventsVector)); |
411 FakeLayerAnimationValueObserver dummy; | 408 FakeLayerAnimationValueObserver dummy; |
412 scoped_refptr<LayerAnimationController> controller( | 409 scoped_refptr<LayerAnimationController> controller( |
413 LayerAnimationController::Create(0)); | 410 LayerAnimationController::Create(0)); |
414 controller->AddValueObserver(&dummy); | 411 controller->AddValueObserver(&dummy); |
415 | 412 |
416 scoped_ptr<Animation> to_add(CreateAnimation( | 413 scoped_ptr<Animation> to_add(CreateAnimation( |
417 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 414 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
418 1, | 415 1, Animation::OPACITY)); |
419 Animation::Opacity)); | |
420 | 416 |
421 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); | 417 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); |
422 controller->AddAnimation(to_add.Pass()); | 418 controller->AddAnimation(to_add.Pass()); |
423 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); | 419 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); |
424 controller->Animate(kInitialTickTime); | 420 controller->Animate(kInitialTickTime); |
425 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); | 421 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); |
426 controller->UpdateState(true, events.get()); | 422 controller->UpdateState(true, events.get()); |
427 EXPECT_TRUE(controller->HasActiveAnimation()); | 423 EXPECT_TRUE(controller->HasActiveAnimation()); |
428 EXPECT_EQ(0.f, dummy.opacity()); | 424 EXPECT_EQ(0.f, dummy.opacity()); |
429 // A non-impl-only animation should not generate property updates. | 425 // A non-impl-only animation should not generate property updates. |
(...skipping 10 matching lines...) Expand all Loading... |
440 TEST(LayerAnimationControllerTest, TrivialTransitionOnImpl) { | 436 TEST(LayerAnimationControllerTest, TrivialTransitionOnImpl) { |
441 scoped_ptr<AnimationEventsVector> events( | 437 scoped_ptr<AnimationEventsVector> events( |
442 make_scoped_ptr(new AnimationEventsVector)); | 438 make_scoped_ptr(new AnimationEventsVector)); |
443 FakeLayerAnimationValueObserver dummy_impl; | 439 FakeLayerAnimationValueObserver dummy_impl; |
444 scoped_refptr<LayerAnimationController> controller_impl( | 440 scoped_refptr<LayerAnimationController> controller_impl( |
445 LayerAnimationController::Create(0)); | 441 LayerAnimationController::Create(0)); |
446 controller_impl->AddValueObserver(&dummy_impl); | 442 controller_impl->AddValueObserver(&dummy_impl); |
447 | 443 |
448 scoped_ptr<Animation> to_add(CreateAnimation( | 444 scoped_ptr<Animation> to_add(CreateAnimation( |
449 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 445 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
450 1, | 446 1, Animation::OPACITY)); |
451 Animation::Opacity)); | |
452 to_add->set_is_impl_only(true); | 447 to_add->set_is_impl_only(true); |
453 | 448 |
454 controller_impl->AddAnimation(to_add.Pass()); | 449 controller_impl->AddAnimation(to_add.Pass()); |
455 controller_impl->Animate(kInitialTickTime); | 450 controller_impl->Animate(kInitialTickTime); |
456 controller_impl->UpdateState(true, events.get()); | 451 controller_impl->UpdateState(true, events.get()); |
457 EXPECT_TRUE(controller_impl->HasActiveAnimation()); | 452 EXPECT_TRUE(controller_impl->HasActiveAnimation()); |
458 EXPECT_EQ(0.f, dummy_impl.opacity()); | 453 EXPECT_EQ(0.f, dummy_impl.opacity()); |
459 EXPECT_EQ(1u, events->size()); | 454 EXPECT_EQ(1u, events->size()); |
460 const AnimationEvent* start_opacity_event = | 455 const AnimationEvent* start_opacity_event = |
461 GetMostRecentPropertyUpdateEvent(events.get()); | 456 GetMostRecentPropertyUpdateEvent(events.get()); |
(...skipping 19 matching lines...) Expand all Loading... |
481 controller_impl->AddValueObserver(&dummy_impl); | 476 controller_impl->AddValueObserver(&dummy_impl); |
482 | 477 |
483 // Choose different values for x and y to avoid coincidental values in the | 478 // Choose different values for x and y to avoid coincidental values in the |
484 // observed transforms. | 479 // observed transforms. |
485 const float delta_x = 3; | 480 const float delta_x = 3; |
486 const float delta_y = 4; | 481 const float delta_y = 4; |
487 | 482 |
488 scoped_ptr<KeyframedTransformAnimationCurve> curve( | 483 scoped_ptr<KeyframedTransformAnimationCurve> curve( |
489 KeyframedTransformAnimationCurve::Create()); | 484 KeyframedTransformAnimationCurve::Create()); |
490 | 485 |
491 // Create simple Transform animation. | 486 // Create simple TRANSFORM animation. |
492 TransformOperations operations; | 487 TransformOperations operations; |
493 curve->AddKeyframe( | 488 curve->AddKeyframe( |
494 TransformKeyframe::Create(base::TimeDelta(), operations, nullptr)); | 489 TransformKeyframe::Create(base::TimeDelta(), operations, nullptr)); |
495 operations.AppendTranslate(delta_x, delta_y, 0); | 490 operations.AppendTranslate(delta_x, delta_y, 0); |
496 curve->AddKeyframe(TransformKeyframe::Create( | 491 curve->AddKeyframe(TransformKeyframe::Create( |
497 base::TimeDelta::FromSecondsD(1.0), operations, nullptr)); | 492 base::TimeDelta::FromSecondsD(1.0), operations, nullptr)); |
498 | 493 |
499 scoped_ptr<Animation> animation( | 494 scoped_ptr<Animation> animation( |
500 Animation::Create(curve.Pass(), 1, 0, Animation::Transform)); | 495 Animation::Create(curve.Pass(), 1, 0, Animation::TRANSFORM)); |
501 animation->set_is_impl_only(true); | 496 animation->set_is_impl_only(true); |
502 controller_impl->AddAnimation(animation.Pass()); | 497 controller_impl->AddAnimation(animation.Pass()); |
503 | 498 |
504 // Run animation. | 499 // Run animation. |
505 controller_impl->Animate(kInitialTickTime); | 500 controller_impl->Animate(kInitialTickTime); |
506 controller_impl->UpdateState(true, events.get()); | 501 controller_impl->UpdateState(true, events.get()); |
507 EXPECT_TRUE(controller_impl->HasActiveAnimation()); | 502 EXPECT_TRUE(controller_impl->HasActiveAnimation()); |
508 EXPECT_EQ(gfx::Transform(), dummy_impl.transform()); | 503 EXPECT_EQ(gfx::Transform(), dummy_impl.transform()); |
509 EXPECT_EQ(1u, events->size()); | 504 EXPECT_EQ(1u, events->size()); |
510 const AnimationEvent* start_transform_event = | 505 const AnimationEvent* start_transform_event = |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 FilterOperations start_filters; | 537 FilterOperations start_filters; |
543 start_filters.Append(FilterOperation::CreateBrightnessFilter(1.f)); | 538 start_filters.Append(FilterOperation::CreateBrightnessFilter(1.f)); |
544 curve->AddKeyframe( | 539 curve->AddKeyframe( |
545 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); | 540 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); |
546 FilterOperations end_filters; | 541 FilterOperations end_filters; |
547 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f)); | 542 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f)); |
548 curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), | 543 curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), |
549 end_filters, nullptr)); | 544 end_filters, nullptr)); |
550 | 545 |
551 scoped_ptr<Animation> animation( | 546 scoped_ptr<Animation> animation( |
552 Animation::Create(curve.Pass(), 1, 0, Animation::Filter)); | 547 Animation::Create(curve.Pass(), 1, 0, Animation::FILTER)); |
553 controller->AddAnimation(animation.Pass()); | 548 controller->AddAnimation(animation.Pass()); |
554 | 549 |
555 controller->Animate(kInitialTickTime); | 550 controller->Animate(kInitialTickTime); |
556 controller->UpdateState(true, events.get()); | 551 controller->UpdateState(true, events.get()); |
557 EXPECT_TRUE(controller->HasActiveAnimation()); | 552 EXPECT_TRUE(controller->HasActiveAnimation()); |
558 EXPECT_EQ(start_filters, dummy.filters()); | 553 EXPECT_EQ(start_filters, dummy.filters()); |
559 // A non-impl-only animation should not generate property updates. | 554 // A non-impl-only animation should not generate property updates. |
560 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); | 555 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); |
561 EXPECT_FALSE(event); | 556 EXPECT_FALSE(event); |
562 | 557 |
(...skipping 17 matching lines...) Expand all Loading... |
580 scoped_ptr<AnimationEventsVector> events( | 575 scoped_ptr<AnimationEventsVector> events( |
581 make_scoped_ptr(new AnimationEventsVector)); | 576 make_scoped_ptr(new AnimationEventsVector)); |
582 FakeLayerAnimationValueObserver dummy_impl; | 577 FakeLayerAnimationValueObserver dummy_impl; |
583 scoped_refptr<LayerAnimationController> controller_impl( | 578 scoped_refptr<LayerAnimationController> controller_impl( |
584 LayerAnimationController::Create(0)); | 579 LayerAnimationController::Create(0)); |
585 controller_impl->AddValueObserver(&dummy_impl); | 580 controller_impl->AddValueObserver(&dummy_impl); |
586 | 581 |
587 scoped_ptr<KeyframedFilterAnimationCurve> curve( | 582 scoped_ptr<KeyframedFilterAnimationCurve> curve( |
588 KeyframedFilterAnimationCurve::Create()); | 583 KeyframedFilterAnimationCurve::Create()); |
589 | 584 |
590 // Create simple Filter animation. | 585 // Create simple FILTER animation. |
591 FilterOperations start_filters; | 586 FilterOperations start_filters; |
592 start_filters.Append(FilterOperation::CreateBrightnessFilter(1.f)); | 587 start_filters.Append(FilterOperation::CreateBrightnessFilter(1.f)); |
593 curve->AddKeyframe( | 588 curve->AddKeyframe( |
594 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); | 589 FilterKeyframe::Create(base::TimeDelta(), start_filters, nullptr)); |
595 FilterOperations end_filters; | 590 FilterOperations end_filters; |
596 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f)); | 591 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f)); |
597 curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), | 592 curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), |
598 end_filters, nullptr)); | 593 end_filters, nullptr)); |
599 | 594 |
600 scoped_ptr<Animation> animation( | 595 scoped_ptr<Animation> animation( |
601 Animation::Create(curve.Pass(), 1, 0, Animation::Filter)); | 596 Animation::Create(curve.Pass(), 1, 0, Animation::FILTER)); |
602 animation->set_is_impl_only(true); | 597 animation->set_is_impl_only(true); |
603 controller_impl->AddAnimation(animation.Pass()); | 598 controller_impl->AddAnimation(animation.Pass()); |
604 | 599 |
605 // Run animation. | 600 // Run animation. |
606 controller_impl->Animate(kInitialTickTime); | 601 controller_impl->Animate(kInitialTickTime); |
607 controller_impl->UpdateState(true, events.get()); | 602 controller_impl->UpdateState(true, events.get()); |
608 EXPECT_TRUE(controller_impl->HasActiveAnimation()); | 603 EXPECT_TRUE(controller_impl->HasActiveAnimation()); |
609 EXPECT_EQ(start_filters, dummy_impl.filters()); | 604 EXPECT_EQ(start_filters, dummy_impl.filters()); |
610 EXPECT_EQ(1u, events->size()); | 605 EXPECT_EQ(1u, events->size()); |
611 const AnimationEvent* start_filter_event = | 606 const AnimationEvent* start_filter_event = |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 controller->set_value_provider(&dummy_provider); | 639 controller->set_value_provider(&dummy_provider); |
645 | 640 |
646 gfx::ScrollOffset initial_value(100.f, 300.f); | 641 gfx::ScrollOffset initial_value(100.f, 300.f); |
647 gfx::ScrollOffset target_value(300.f, 200.f); | 642 gfx::ScrollOffset target_value(300.f, 200.f); |
648 scoped_ptr<ScrollOffsetAnimationCurve> curve( | 643 scoped_ptr<ScrollOffsetAnimationCurve> curve( |
649 ScrollOffsetAnimationCurve::Create( | 644 ScrollOffsetAnimationCurve::Create( |
650 target_value, | 645 target_value, |
651 EaseInOutTimingFunction::Create().Pass())); | 646 EaseInOutTimingFunction::Create().Pass())); |
652 | 647 |
653 scoped_ptr<Animation> animation( | 648 scoped_ptr<Animation> animation( |
654 Animation::Create(curve.Pass(), 1, 0, Animation::ScrollOffset)); | 649 Animation::Create(curve.Pass(), 1, 0, Animation::SCROLL_OFFSET)); |
655 animation->set_needs_synchronized_start_time(true); | 650 animation->set_needs_synchronized_start_time(true); |
656 controller->AddAnimation(animation.Pass()); | 651 controller->AddAnimation(animation.Pass()); |
657 | 652 |
658 dummy_provider_impl.set_scroll_offset(initial_value); | 653 dummy_provider_impl.set_scroll_offset(initial_value); |
659 controller->PushAnimationUpdatesTo(controller_impl.get()); | 654 controller->PushAnimationUpdatesTo(controller_impl.get()); |
660 controller_impl->ActivateAnimations(); | 655 controller_impl->ActivateAnimations(); |
661 EXPECT_TRUE(controller_impl->GetAnimation(Animation::ScrollOffset)); | 656 EXPECT_TRUE(controller_impl->GetAnimation(Animation::SCROLL_OFFSET)); |
662 TimeDelta duration = controller_impl->GetAnimation(Animation::ScrollOffset) | 657 TimeDelta duration = controller_impl->GetAnimation(Animation::SCROLL_OFFSET) |
663 ->curve() | 658 ->curve() |
664 ->Duration(); | 659 ->Duration(); |
665 EXPECT_EQ( | 660 EXPECT_EQ( |
666 duration, | 661 duration, |
667 controller->GetAnimation(Animation::ScrollOffset)->curve()->Duration()); | 662 controller->GetAnimation(Animation::SCROLL_OFFSET)->curve()->Duration()); |
668 | 663 |
669 controller->Animate(kInitialTickTime); | 664 controller->Animate(kInitialTickTime); |
670 controller->UpdateState(true, nullptr); | 665 controller->UpdateState(true, nullptr); |
671 EXPECT_TRUE(controller->HasActiveAnimation()); | 666 EXPECT_TRUE(controller->HasActiveAnimation()); |
672 EXPECT_EQ(initial_value, dummy.scroll_offset()); | 667 EXPECT_EQ(initial_value, dummy.scroll_offset()); |
673 | 668 |
674 controller_impl->Animate(kInitialTickTime); | 669 controller_impl->Animate(kInitialTickTime); |
675 controller_impl->UpdateState(true, events.get()); | 670 controller_impl->UpdateState(true, events.get()); |
676 EXPECT_TRUE(controller_impl->HasActiveAnimation()); | 671 EXPECT_TRUE(controller_impl->HasActiveAnimation()); |
677 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); | 672 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 controller->set_value_provider(&dummy_provider); | 718 controller->set_value_provider(&dummy_provider); |
724 | 719 |
725 gfx::ScrollOffset initial_value(500.f, 100.f); | 720 gfx::ScrollOffset initial_value(500.f, 100.f); |
726 gfx::ScrollOffset target_value(300.f, 200.f); | 721 gfx::ScrollOffset target_value(300.f, 200.f); |
727 scoped_ptr<ScrollOffsetAnimationCurve> curve( | 722 scoped_ptr<ScrollOffsetAnimationCurve> curve( |
728 ScrollOffsetAnimationCurve::Create( | 723 ScrollOffsetAnimationCurve::Create( |
729 target_value, | 724 target_value, |
730 EaseInOutTimingFunction::Create().Pass())); | 725 EaseInOutTimingFunction::Create().Pass())); |
731 | 726 |
732 scoped_ptr<Animation> animation( | 727 scoped_ptr<Animation> animation( |
733 Animation::Create(curve.Pass(), 1, 0, Animation::ScrollOffset)); | 728 Animation::Create(curve.Pass(), 1, 0, Animation::SCROLL_OFFSET)); |
734 animation->set_needs_synchronized_start_time(true); | 729 animation->set_needs_synchronized_start_time(true); |
735 controller->AddAnimation(animation.Pass()); | 730 controller->AddAnimation(animation.Pass()); |
736 | 731 |
737 dummy_provider.set_scroll_offset(initial_value); | 732 dummy_provider.set_scroll_offset(initial_value); |
738 controller->PushAnimationUpdatesTo(controller_impl.get()); | 733 controller->PushAnimationUpdatesTo(controller_impl.get()); |
739 controller_impl->ActivateAnimations(); | 734 controller_impl->ActivateAnimations(); |
740 EXPECT_TRUE(controller_impl->GetAnimation(Animation::ScrollOffset)); | 735 EXPECT_TRUE(controller_impl->GetAnimation(Animation::SCROLL_OFFSET)); |
741 TimeDelta duration = controller_impl->GetAnimation(Animation::ScrollOffset) | 736 TimeDelta duration = controller_impl->GetAnimation(Animation::SCROLL_OFFSET) |
742 ->curve() | 737 ->curve() |
743 ->Duration(); | 738 ->Duration(); |
744 EXPECT_EQ( | 739 EXPECT_EQ( |
745 duration, | 740 duration, |
746 controller->GetAnimation(Animation::ScrollOffset)->curve()->Duration()); | 741 controller->GetAnimation(Animation::SCROLL_OFFSET)->curve()->Duration()); |
747 | 742 |
748 controller->Animate(kInitialTickTime); | 743 controller->Animate(kInitialTickTime); |
749 controller->UpdateState(true, nullptr); | 744 controller->UpdateState(true, nullptr); |
750 EXPECT_TRUE(controller->HasActiveAnimation()); | 745 EXPECT_TRUE(controller->HasActiveAnimation()); |
751 EXPECT_EQ(initial_value, dummy.scroll_offset()); | 746 EXPECT_EQ(initial_value, dummy.scroll_offset()); |
752 | 747 |
753 controller_impl->Animate(kInitialTickTime); | 748 controller_impl->Animate(kInitialTickTime); |
754 controller_impl->UpdateState(true, events.get()); | 749 controller_impl->UpdateState(true, events.get()); |
755 EXPECT_TRUE(controller_impl->HasActiveAnimation()); | 750 EXPECT_TRUE(controller_impl->HasActiveAnimation()); |
756 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); | 751 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
796 gfx::ScrollOffset initial_value(100.f, 300.f); | 791 gfx::ScrollOffset initial_value(100.f, 300.f); |
797 gfx::ScrollOffset target_value(300.f, 200.f); | 792 gfx::ScrollOffset target_value(300.f, 200.f); |
798 scoped_ptr<ScrollOffsetAnimationCurve> curve( | 793 scoped_ptr<ScrollOffsetAnimationCurve> curve( |
799 ScrollOffsetAnimationCurve::Create( | 794 ScrollOffsetAnimationCurve::Create( |
800 target_value, | 795 target_value, |
801 EaseInOutTimingFunction::Create().Pass())); | 796 EaseInOutTimingFunction::Create().Pass())); |
802 curve->SetInitialValue(initial_value); | 797 curve->SetInitialValue(initial_value); |
803 double duration_in_seconds = curve->Duration().InSecondsF(); | 798 double duration_in_seconds = curve->Duration().InSecondsF(); |
804 | 799 |
805 scoped_ptr<Animation> animation( | 800 scoped_ptr<Animation> animation( |
806 Animation::Create(curve.Pass(), 1, 0, Animation::ScrollOffset)); | 801 Animation::Create(curve.Pass(), 1, 0, Animation::SCROLL_OFFSET)); |
807 animation->set_is_impl_only(true); | 802 animation->set_is_impl_only(true); |
808 controller_impl->AddAnimation(animation.Pass()); | 803 controller_impl->AddAnimation(animation.Pass()); |
809 | 804 |
810 controller_impl->Animate(kInitialTickTime); | 805 controller_impl->Animate(kInitialTickTime); |
811 controller_impl->UpdateState(true, events.get()); | 806 controller_impl->UpdateState(true, events.get()); |
812 EXPECT_TRUE(controller_impl->HasActiveAnimation()); | 807 EXPECT_TRUE(controller_impl->HasActiveAnimation()); |
813 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); | 808 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); |
814 // Scroll offset animations should not generate property updates. | 809 // Scroll offset animations should not generate property updates. |
815 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); | 810 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); |
816 EXPECT_FALSE(event); | 811 EXPECT_FALSE(event); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 controller->set_value_provider(&dummy_provider); | 845 controller->set_value_provider(&dummy_provider); |
851 | 846 |
852 // First test the 1-argument version of RemoveAnimation. | 847 // First test the 1-argument version of RemoveAnimation. |
853 gfx::ScrollOffset target_value(300.f, 200.f); | 848 gfx::ScrollOffset target_value(300.f, 200.f); |
854 scoped_ptr<ScrollOffsetAnimationCurve> curve( | 849 scoped_ptr<ScrollOffsetAnimationCurve> curve( |
855 ScrollOffsetAnimationCurve::Create( | 850 ScrollOffsetAnimationCurve::Create( |
856 target_value, EaseInOutTimingFunction::Create().Pass())); | 851 target_value, EaseInOutTimingFunction::Create().Pass())); |
857 | 852 |
858 int animation_id = 1; | 853 int animation_id = 1; |
859 scoped_ptr<Animation> animation(Animation::Create( | 854 scoped_ptr<Animation> animation(Animation::Create( |
860 curve.Pass(), animation_id, 0, Animation::ScrollOffset)); | 855 curve.Pass(), animation_id, 0, Animation::SCROLL_OFFSET)); |
861 animation->set_needs_synchronized_start_time(true); | 856 animation->set_needs_synchronized_start_time(true); |
862 controller->AddAnimation(animation.Pass()); | 857 controller->AddAnimation(animation.Pass()); |
863 controller->PushAnimationUpdatesTo(controller_impl.get()); | 858 controller->PushAnimationUpdatesTo(controller_impl.get()); |
864 controller_impl->ActivateAnimations(); | 859 controller_impl->ActivateAnimations(); |
865 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); | 860 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
866 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); | 861 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
867 | 862 |
868 controller->RemoveAnimation(animation_id); | 863 controller->RemoveAnimation(animation_id); |
869 EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted()); | 864 EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted()); |
870 | 865 |
871 controller->PushAnimationUpdatesTo(controller_impl.get()); | 866 controller->PushAnimationUpdatesTo(controller_impl.get()); |
872 EXPECT_TRUE(controller_impl->scroll_offset_animation_was_interrupted()); | 867 EXPECT_TRUE(controller_impl->scroll_offset_animation_was_interrupted()); |
873 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); | 868 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
874 | 869 |
875 controller_impl->ActivateAnimations(); | 870 controller_impl->ActivateAnimations(); |
876 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); | 871 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
877 | 872 |
878 // Now, test the 2-argument version of RemoveAnimation. | 873 // Now, test the 2-argument version of RemoveAnimation. |
879 curve = ScrollOffsetAnimationCurve::Create( | 874 curve = ScrollOffsetAnimationCurve::Create( |
880 target_value, EaseInOutTimingFunction::Create().Pass()); | 875 target_value, EaseInOutTimingFunction::Create().Pass()); |
881 animation = | 876 animation = Animation::Create(curve.Pass(), animation_id, 0, |
882 Animation::Create(curve.Pass(), animation_id, 0, Animation::ScrollOffset); | 877 Animation::SCROLL_OFFSET); |
883 animation->set_needs_synchronized_start_time(true); | 878 animation->set_needs_synchronized_start_time(true); |
884 controller->AddAnimation(animation.Pass()); | 879 controller->AddAnimation(animation.Pass()); |
885 controller->PushAnimationUpdatesTo(controller_impl.get()); | 880 controller->PushAnimationUpdatesTo(controller_impl.get()); |
886 controller_impl->ActivateAnimations(); | 881 controller_impl->ActivateAnimations(); |
887 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); | 882 EXPECT_FALSE(controller->scroll_offset_animation_was_interrupted()); |
888 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); | 883 EXPECT_FALSE(controller_impl->scroll_offset_animation_was_interrupted()); |
889 | 884 |
890 controller->RemoveAnimation(animation_id); | 885 controller->RemoveAnimation(animation_id); |
891 EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted()); | 886 EXPECT_TRUE(controller->scroll_offset_animation_was_interrupted()); |
892 | 887 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 scoped_refptr<LayerAnimationController> controller_impl( | 963 scoped_refptr<LayerAnimationController> controller_impl( |
969 LayerAnimationController::Create(0)); | 964 LayerAnimationController::Create(0)); |
970 controller_impl->AddValueObserver(&dummy_impl); | 965 controller_impl->AddValueObserver(&dummy_impl); |
971 scoped_ptr<AnimationEventsVector> events( | 966 scoped_ptr<AnimationEventsVector> events( |
972 make_scoped_ptr(new AnimationEventsVector)); | 967 make_scoped_ptr(new AnimationEventsVector)); |
973 FakeAnimationDelegate delegate; | 968 FakeAnimationDelegate delegate; |
974 controller_impl->set_layer_animation_delegate(&delegate); | 969 controller_impl->set_layer_animation_delegate(&delegate); |
975 | 970 |
976 scoped_ptr<Animation> to_add(CreateAnimation( | 971 scoped_ptr<Animation> to_add(CreateAnimation( |
977 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 972 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
978 1, | 973 1, Animation::OPACITY)); |
979 Animation::Opacity)); | |
980 to_add->set_is_impl_only(true); | 974 to_add->set_is_impl_only(true); |
981 controller_impl->AddAnimation(to_add.Pass()); | 975 controller_impl->AddAnimation(to_add.Pass()); |
982 | 976 |
983 EXPECT_FALSE(delegate.started()); | 977 EXPECT_FALSE(delegate.started()); |
984 EXPECT_FALSE(delegate.finished()); | 978 EXPECT_FALSE(delegate.finished()); |
985 | 979 |
986 controller_impl->Animate(kInitialTickTime); | 980 controller_impl->Animate(kInitialTickTime); |
987 controller_impl->UpdateState(true, events.get()); | 981 controller_impl->UpdateState(true, events.get()); |
988 | 982 |
989 EXPECT_TRUE(delegate.started()); | 983 EXPECT_TRUE(delegate.started()); |
(...skipping 14 matching lines...) Expand all Loading... |
1004 AnimationsWaitingForStartTimeDoNotFinishIfTheyOutwaitTheirFinish) { | 998 AnimationsWaitingForStartTimeDoNotFinishIfTheyOutwaitTheirFinish) { |
1005 scoped_ptr<AnimationEventsVector> events( | 999 scoped_ptr<AnimationEventsVector> events( |
1006 make_scoped_ptr(new AnimationEventsVector)); | 1000 make_scoped_ptr(new AnimationEventsVector)); |
1007 FakeLayerAnimationValueObserver dummy; | 1001 FakeLayerAnimationValueObserver dummy; |
1008 scoped_refptr<LayerAnimationController> controller( | 1002 scoped_refptr<LayerAnimationController> controller( |
1009 LayerAnimationController::Create(0)); | 1003 LayerAnimationController::Create(0)); |
1010 controller->AddValueObserver(&dummy); | 1004 controller->AddValueObserver(&dummy); |
1011 | 1005 |
1012 scoped_ptr<Animation> to_add(CreateAnimation( | 1006 scoped_ptr<Animation> to_add(CreateAnimation( |
1013 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1007 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1014 1, | 1008 1, Animation::OPACITY)); |
1015 Animation::Opacity)); | |
1016 to_add->set_needs_synchronized_start_time(true); | 1009 to_add->set_needs_synchronized_start_time(true); |
1017 | 1010 |
1018 // We should pause at the first keyframe indefinitely waiting for that | 1011 // We should pause at the first keyframe indefinitely waiting for that |
1019 // animation to start. | 1012 // animation to start. |
1020 controller->AddAnimation(to_add.Pass()); | 1013 controller->AddAnimation(to_add.Pass()); |
1021 controller->Animate(kInitialTickTime); | 1014 controller->Animate(kInitialTickTime); |
1022 controller->UpdateState(true, events.get()); | 1015 controller->UpdateState(true, events.get()); |
1023 EXPECT_TRUE(controller->HasActiveAnimation()); | 1016 EXPECT_TRUE(controller->HasActiveAnimation()); |
1024 EXPECT_EQ(0.f, dummy.opacity()); | 1017 EXPECT_EQ(0.f, dummy.opacity()); |
1025 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1018 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1026 controller->UpdateState(true, events.get()); | 1019 controller->UpdateState(true, events.get()); |
1027 EXPECT_TRUE(controller->HasActiveAnimation()); | 1020 EXPECT_TRUE(controller->HasActiveAnimation()); |
1028 EXPECT_EQ(0.f, dummy.opacity()); | 1021 EXPECT_EQ(0.f, dummy.opacity()); |
1029 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 1022 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
1030 controller->UpdateState(true, events.get()); | 1023 controller->UpdateState(true, events.get()); |
1031 EXPECT_TRUE(controller->HasActiveAnimation()); | 1024 EXPECT_TRUE(controller->HasActiveAnimation()); |
1032 EXPECT_EQ(0.f, dummy.opacity()); | 1025 EXPECT_EQ(0.f, dummy.opacity()); |
1033 | 1026 |
1034 // Send the synchronized start time. | 1027 // Send the synchronized start time. |
1035 controller->NotifyAnimationStarted( | 1028 controller->NotifyAnimationStarted( |
1036 AnimationEvent(AnimationEvent::Started, | 1029 AnimationEvent(AnimationEvent::STARTED, 0, 1, Animation::OPACITY, |
1037 0, | |
1038 1, | |
1039 Animation::Opacity, | |
1040 kInitialTickTime + TimeDelta::FromMilliseconds(2000))); | 1030 kInitialTickTime + TimeDelta::FromMilliseconds(2000))); |
1041 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(5000)); | 1031 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(5000)); |
1042 controller->UpdateState(true, events.get()); | 1032 controller->UpdateState(true, events.get()); |
1043 EXPECT_EQ(1.f, dummy.opacity()); | 1033 EXPECT_EQ(1.f, dummy.opacity()); |
1044 EXPECT_FALSE(controller->HasActiveAnimation()); | 1034 EXPECT_FALSE(controller->HasActiveAnimation()); |
1045 } | 1035 } |
1046 | 1036 |
1047 // Tests that two queued animations affecting the same property run in sequence. | 1037 // Tests that two queued animations affecting the same property run in sequence. |
1048 TEST(LayerAnimationControllerTest, TrivialQueuing) { | 1038 TEST(LayerAnimationControllerTest, TrivialQueuing) { |
1049 scoped_ptr<AnimationEventsVector> events( | 1039 scoped_ptr<AnimationEventsVector> events( |
1050 make_scoped_ptr(new AnimationEventsVector)); | 1040 make_scoped_ptr(new AnimationEventsVector)); |
1051 FakeLayerAnimationValueObserver dummy; | 1041 FakeLayerAnimationValueObserver dummy; |
1052 scoped_refptr<LayerAnimationController> controller( | 1042 scoped_refptr<LayerAnimationController> controller( |
1053 LayerAnimationController::Create(0)); | 1043 LayerAnimationController::Create(0)); |
1054 controller->AddValueObserver(&dummy); | 1044 controller->AddValueObserver(&dummy); |
1055 | 1045 |
1056 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); | 1046 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); |
1057 | 1047 |
1058 controller->AddAnimation(CreateAnimation( | 1048 controller->AddAnimation(CreateAnimation( |
1059 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1049 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1060 1, | 1050 1, Animation::OPACITY)); |
1061 Animation::Opacity)); | |
1062 controller->AddAnimation(CreateAnimation( | 1051 controller->AddAnimation(CreateAnimation( |
1063 scoped_ptr<AnimationCurve>( | 1052 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)) |
1064 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(), | 1053 .Pass(), |
1065 2, | 1054 2, Animation::OPACITY)); |
1066 Animation::Opacity)); | |
1067 | 1055 |
1068 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); | 1056 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); |
1069 | 1057 |
1070 controller->Animate(kInitialTickTime); | 1058 controller->Animate(kInitialTickTime); |
1071 | 1059 |
1072 // The second animation still needs to be started. | 1060 // The second animation still needs to be started. |
1073 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); | 1061 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); |
1074 | 1062 |
1075 controller->UpdateState(true, events.get()); | 1063 controller->UpdateState(true, events.get()); |
1076 EXPECT_TRUE(controller->HasActiveAnimation()); | 1064 EXPECT_TRUE(controller->HasActiveAnimation()); |
(...skipping 15 matching lines...) Expand all Loading... |
1092 // Tests interrupting a transition with another transition. | 1080 // Tests interrupting a transition with another transition. |
1093 TEST(LayerAnimationControllerTest, Interrupt) { | 1081 TEST(LayerAnimationControllerTest, Interrupt) { |
1094 scoped_ptr<AnimationEventsVector> events( | 1082 scoped_ptr<AnimationEventsVector> events( |
1095 make_scoped_ptr(new AnimationEventsVector)); | 1083 make_scoped_ptr(new AnimationEventsVector)); |
1096 FakeLayerAnimationValueObserver dummy; | 1084 FakeLayerAnimationValueObserver dummy; |
1097 scoped_refptr<LayerAnimationController> controller( | 1085 scoped_refptr<LayerAnimationController> controller( |
1098 LayerAnimationController::Create(0)); | 1086 LayerAnimationController::Create(0)); |
1099 controller->AddValueObserver(&dummy); | 1087 controller->AddValueObserver(&dummy); |
1100 controller->AddAnimation(CreateAnimation( | 1088 controller->AddAnimation(CreateAnimation( |
1101 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1089 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1102 1, | 1090 1, Animation::OPACITY)); |
1103 Animation::Opacity)); | |
1104 controller->Animate(kInitialTickTime); | 1091 controller->Animate(kInitialTickTime); |
1105 controller->UpdateState(true, events.get()); | 1092 controller->UpdateState(true, events.get()); |
1106 EXPECT_TRUE(controller->HasActiveAnimation()); | 1093 EXPECT_TRUE(controller->HasActiveAnimation()); |
1107 EXPECT_EQ(0.f, dummy.opacity()); | 1094 EXPECT_EQ(0.f, dummy.opacity()); |
1108 | 1095 |
1109 scoped_ptr<Animation> to_add(CreateAnimation( | 1096 scoped_ptr<Animation> to_add(CreateAnimation( |
1110 scoped_ptr<AnimationCurve>( | 1097 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)) |
1111 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(), | 1098 .Pass(), |
1112 2, | 1099 2, Animation::OPACITY)); |
1113 Animation::Opacity)); | 1100 controller->AbortAnimations(Animation::OPACITY); |
1114 controller->AbortAnimations(Animation::Opacity); | |
1115 controller->AddAnimation(to_add.Pass()); | 1101 controller->AddAnimation(to_add.Pass()); |
1116 | 1102 |
1117 // Since the previous animation was aborted, the new animation should start | 1103 // Since the previous animation was aborted, the new animation should start |
1118 // right in this call to animate. | 1104 // right in this call to animate. |
1119 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 1105 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
1120 controller->UpdateState(true, events.get()); | 1106 controller->UpdateState(true, events.get()); |
1121 EXPECT_TRUE(controller->HasActiveAnimation()); | 1107 EXPECT_TRUE(controller->HasActiveAnimation()); |
1122 EXPECT_EQ(1.f, dummy.opacity()); | 1108 EXPECT_EQ(1.f, dummy.opacity()); |
1123 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1500)); | 1109 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1500)); |
1124 controller->UpdateState(true, events.get()); | 1110 controller->UpdateState(true, events.get()); |
1125 EXPECT_EQ(0.5f, dummy.opacity()); | 1111 EXPECT_EQ(0.5f, dummy.opacity()); |
1126 EXPECT_FALSE(controller->HasActiveAnimation()); | 1112 EXPECT_FALSE(controller->HasActiveAnimation()); |
1127 } | 1113 } |
1128 | 1114 |
1129 // Tests scheduling two animations to run together when only one property is | 1115 // Tests scheduling two animations to run together when only one property is |
1130 // free. | 1116 // free. |
1131 TEST(LayerAnimationControllerTest, ScheduleTogetherWhenAPropertyIsBlocked) { | 1117 TEST(LayerAnimationControllerTest, ScheduleTogetherWhenAPropertyIsBlocked) { |
1132 scoped_ptr<AnimationEventsVector> events( | 1118 scoped_ptr<AnimationEventsVector> events( |
1133 make_scoped_ptr(new AnimationEventsVector)); | 1119 make_scoped_ptr(new AnimationEventsVector)); |
1134 FakeLayerAnimationValueObserver dummy; | 1120 FakeLayerAnimationValueObserver dummy; |
1135 scoped_refptr<LayerAnimationController> controller( | 1121 scoped_refptr<LayerAnimationController> controller( |
1136 LayerAnimationController::Create(0)); | 1122 LayerAnimationController::Create(0)); |
1137 controller->AddValueObserver(&dummy); | 1123 controller->AddValueObserver(&dummy); |
1138 | 1124 |
1139 controller->AddAnimation(CreateAnimation( | 1125 controller->AddAnimation(CreateAnimation( |
1140 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), | 1126 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1, |
1141 1, | 1127 Animation::TRANSFORM)); |
1142 Animation::Transform)); | |
1143 controller->AddAnimation(CreateAnimation( | 1128 controller->AddAnimation(CreateAnimation( |
1144 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), | 1129 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 2, |
1145 2, | 1130 Animation::TRANSFORM)); |
1146 Animation::Transform)); | |
1147 controller->AddAnimation(CreateAnimation( | 1131 controller->AddAnimation(CreateAnimation( |
1148 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1132 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1149 2, | 1133 2, Animation::OPACITY)); |
1150 Animation::Opacity)); | |
1151 | 1134 |
1152 controller->Animate(kInitialTickTime); | 1135 controller->Animate(kInitialTickTime); |
1153 controller->UpdateState(true, events.get()); | 1136 controller->UpdateState(true, events.get()); |
1154 EXPECT_EQ(0.f, dummy.opacity()); | 1137 EXPECT_EQ(0.f, dummy.opacity()); |
1155 EXPECT_TRUE(controller->HasActiveAnimation()); | 1138 EXPECT_TRUE(controller->HasActiveAnimation()); |
1156 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1139 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1157 controller->UpdateState(true, events.get()); | 1140 controller->UpdateState(true, events.get()); |
1158 // Should not have started the float transition yet. | 1141 // Should not have started the float transition yet. |
1159 EXPECT_TRUE(controller->HasActiveAnimation()); | 1142 EXPECT_TRUE(controller->HasActiveAnimation()); |
1160 EXPECT_EQ(0.f, dummy.opacity()); | 1143 EXPECT_EQ(0.f, dummy.opacity()); |
1161 // The float animation should have started at time 1 and should be done. | 1144 // The float animation should have started at time 1 and should be done. |
1162 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 1145 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
1163 controller->UpdateState(true, events.get()); | 1146 controller->UpdateState(true, events.get()); |
1164 EXPECT_EQ(1.f, dummy.opacity()); | 1147 EXPECT_EQ(1.f, dummy.opacity()); |
1165 EXPECT_FALSE(controller->HasActiveAnimation()); | 1148 EXPECT_FALSE(controller->HasActiveAnimation()); |
1166 } | 1149 } |
1167 | 1150 |
1168 // Tests scheduling two animations to run together with different lengths and | 1151 // Tests scheduling two animations to run together with different lengths and |
1169 // another animation queued to start when the shorter animation finishes (should | 1152 // another animation queued to start when the shorter animation finishes (should |
1170 // wait for both to finish). | 1153 // wait for both to finish). |
1171 TEST(LayerAnimationControllerTest, ScheduleTogetherWithAnAnimWaiting) { | 1154 TEST(LayerAnimationControllerTest, ScheduleTogetherWithAnAnimWaiting) { |
1172 scoped_ptr<AnimationEventsVector> events( | 1155 scoped_ptr<AnimationEventsVector> events( |
1173 make_scoped_ptr(new AnimationEventsVector)); | 1156 make_scoped_ptr(new AnimationEventsVector)); |
1174 FakeLayerAnimationValueObserver dummy; | 1157 FakeLayerAnimationValueObserver dummy; |
1175 scoped_refptr<LayerAnimationController> controller( | 1158 scoped_refptr<LayerAnimationController> controller( |
1176 LayerAnimationController::Create(0)); | 1159 LayerAnimationController::Create(0)); |
1177 controller->AddValueObserver(&dummy); | 1160 controller->AddValueObserver(&dummy); |
1178 | 1161 |
1179 controller->AddAnimation(CreateAnimation( | 1162 controller->AddAnimation(CreateAnimation( |
1180 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2)).Pass(), | 1163 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2)).Pass(), 1, |
1181 1, | 1164 Animation::TRANSFORM)); |
1182 Animation::Transform)); | |
1183 controller->AddAnimation(CreateAnimation( | 1165 controller->AddAnimation(CreateAnimation( |
1184 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1166 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1185 1, | 1167 1, Animation::OPACITY)); |
1186 Animation::Opacity)); | |
1187 controller->AddAnimation(CreateAnimation( | 1168 controller->AddAnimation(CreateAnimation( |
1188 scoped_ptr<AnimationCurve>( | 1169 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.5f)) |
1189 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(), | 1170 .Pass(), |
1190 2, | 1171 2, Animation::OPACITY)); |
1191 Animation::Opacity)); | |
1192 | 1172 |
1193 // Animations with id 1 should both start now. | 1173 // Animations with id 1 should both start now. |
1194 controller->Animate(kInitialTickTime); | 1174 controller->Animate(kInitialTickTime); |
1195 controller->UpdateState(true, events.get()); | 1175 controller->UpdateState(true, events.get()); |
1196 EXPECT_TRUE(controller->HasActiveAnimation()); | 1176 EXPECT_TRUE(controller->HasActiveAnimation()); |
1197 EXPECT_EQ(0.f, dummy.opacity()); | 1177 EXPECT_EQ(0.f, dummy.opacity()); |
1198 // The opacity animation should have finished at time 1, but the group | 1178 // The opacity animation should have finished at time 1, but the group |
1199 // of animations with id 1 don't finish until time 2 because of the length | 1179 // of animations with id 1 don't finish until time 2 because of the length |
1200 // of the transform animation. | 1180 // of the transform animation. |
1201 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 1181 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
(...skipping 14 matching lines...) Expand all Loading... |
1216 TEST(LayerAnimationControllerTest, TrivialLooping) { | 1196 TEST(LayerAnimationControllerTest, TrivialLooping) { |
1217 scoped_ptr<AnimationEventsVector> events( | 1197 scoped_ptr<AnimationEventsVector> events( |
1218 make_scoped_ptr(new AnimationEventsVector)); | 1198 make_scoped_ptr(new AnimationEventsVector)); |
1219 FakeLayerAnimationValueObserver dummy; | 1199 FakeLayerAnimationValueObserver dummy; |
1220 scoped_refptr<LayerAnimationController> controller( | 1200 scoped_refptr<LayerAnimationController> controller( |
1221 LayerAnimationController::Create(0)); | 1201 LayerAnimationController::Create(0)); |
1222 controller->AddValueObserver(&dummy); | 1202 controller->AddValueObserver(&dummy); |
1223 | 1203 |
1224 scoped_ptr<Animation> to_add(CreateAnimation( | 1204 scoped_ptr<Animation> to_add(CreateAnimation( |
1225 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1205 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1226 1, | 1206 1, Animation::OPACITY)); |
1227 Animation::Opacity)); | |
1228 to_add->set_iterations(3); | 1207 to_add->set_iterations(3); |
1229 controller->AddAnimation(to_add.Pass()); | 1208 controller->AddAnimation(to_add.Pass()); |
1230 | 1209 |
1231 controller->Animate(kInitialTickTime); | 1210 controller->Animate(kInitialTickTime); |
1232 controller->UpdateState(true, events.get()); | 1211 controller->UpdateState(true, events.get()); |
1233 EXPECT_TRUE(controller->HasActiveAnimation()); | 1212 EXPECT_TRUE(controller->HasActiveAnimation()); |
1234 EXPECT_EQ(0.f, dummy.opacity()); | 1213 EXPECT_EQ(0.f, dummy.opacity()); |
1235 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250)); | 1214 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250)); |
1236 controller->UpdateState(true, events.get()); | 1215 controller->UpdateState(true, events.get()); |
1237 EXPECT_TRUE(controller->HasActiveAnimation()); | 1216 EXPECT_TRUE(controller->HasActiveAnimation()); |
(...skipping 25 matching lines...) Expand all Loading... |
1263 TEST(LayerAnimationControllerTest, InfiniteLooping) { | 1242 TEST(LayerAnimationControllerTest, InfiniteLooping) { |
1264 scoped_ptr<AnimationEventsVector> events( | 1243 scoped_ptr<AnimationEventsVector> events( |
1265 make_scoped_ptr(new AnimationEventsVector)); | 1244 make_scoped_ptr(new AnimationEventsVector)); |
1266 FakeLayerAnimationValueObserver dummy; | 1245 FakeLayerAnimationValueObserver dummy; |
1267 scoped_refptr<LayerAnimationController> controller( | 1246 scoped_refptr<LayerAnimationController> controller( |
1268 LayerAnimationController::Create(0)); | 1247 LayerAnimationController::Create(0)); |
1269 controller->AddValueObserver(&dummy); | 1248 controller->AddValueObserver(&dummy); |
1270 | 1249 |
1271 scoped_ptr<Animation> to_add(CreateAnimation( | 1250 scoped_ptr<Animation> to_add(CreateAnimation( |
1272 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1251 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1273 1, Animation::Opacity)); | 1252 1, Animation::OPACITY)); |
1274 to_add->set_iterations(-1); | 1253 to_add->set_iterations(-1); |
1275 controller->AddAnimation(to_add.Pass()); | 1254 controller->AddAnimation(to_add.Pass()); |
1276 | 1255 |
1277 controller->Animate(kInitialTickTime); | 1256 controller->Animate(kInitialTickTime); |
1278 controller->UpdateState(true, events.get()); | 1257 controller->UpdateState(true, events.get()); |
1279 EXPECT_TRUE(controller->HasActiveAnimation()); | 1258 EXPECT_TRUE(controller->HasActiveAnimation()); |
1280 EXPECT_EQ(0.f, dummy.opacity()); | 1259 EXPECT_EQ(0.f, dummy.opacity()); |
1281 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250)); | 1260 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1250)); |
1282 controller->UpdateState(true, events.get()); | 1261 controller->UpdateState(true, events.get()); |
1283 EXPECT_TRUE(controller->HasActiveAnimation()); | 1262 EXPECT_TRUE(controller->HasActiveAnimation()); |
1284 EXPECT_EQ(0.25f, dummy.opacity()); | 1263 EXPECT_EQ(0.25f, dummy.opacity()); |
1285 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1750)); | 1264 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1750)); |
1286 controller->UpdateState(true, events.get()); | 1265 controller->UpdateState(true, events.get()); |
1287 EXPECT_TRUE(controller->HasActiveAnimation()); | 1266 EXPECT_TRUE(controller->HasActiveAnimation()); |
1288 EXPECT_EQ(0.75f, dummy.opacity()); | 1267 EXPECT_EQ(0.75f, dummy.opacity()); |
1289 | 1268 |
1290 controller->Animate(kInitialTickTime + | 1269 controller->Animate(kInitialTickTime + |
1291 TimeDelta::FromMilliseconds(1073741824250)); | 1270 TimeDelta::FromMilliseconds(1073741824250)); |
1292 controller->UpdateState(true, events.get()); | 1271 controller->UpdateState(true, events.get()); |
1293 EXPECT_TRUE(controller->HasActiveAnimation()); | 1272 EXPECT_TRUE(controller->HasActiveAnimation()); |
1294 EXPECT_EQ(0.25f, dummy.opacity()); | 1273 EXPECT_EQ(0.25f, dummy.opacity()); |
1295 controller->Animate(kInitialTickTime + | 1274 controller->Animate(kInitialTickTime + |
1296 TimeDelta::FromMilliseconds(1073741824750)); | 1275 TimeDelta::FromMilliseconds(1073741824750)); |
1297 controller->UpdateState(true, events.get()); | 1276 controller->UpdateState(true, events.get()); |
1298 EXPECT_TRUE(controller->HasActiveAnimation()); | 1277 EXPECT_TRUE(controller->HasActiveAnimation()); |
1299 EXPECT_EQ(0.75f, dummy.opacity()); | 1278 EXPECT_EQ(0.75f, dummy.opacity()); |
1300 | 1279 |
1301 EXPECT_TRUE(controller->GetAnimation(Animation::Opacity)); | 1280 EXPECT_TRUE(controller->GetAnimation(Animation::OPACITY)); |
1302 controller->GetAnimation(Animation::Opacity) | 1281 controller->GetAnimation(Animation::OPACITY) |
1303 ->SetRunState(Animation::Aborted, | 1282 ->SetRunState(Animation::ABORTED, |
1304 kInitialTickTime + TimeDelta::FromMilliseconds(750)); | 1283 kInitialTickTime + TimeDelta::FromMilliseconds(750)); |
1305 EXPECT_FALSE(controller->HasActiveAnimation()); | 1284 EXPECT_FALSE(controller->HasActiveAnimation()); |
1306 EXPECT_EQ(0.75f, dummy.opacity()); | 1285 EXPECT_EQ(0.75f, dummy.opacity()); |
1307 } | 1286 } |
1308 | 1287 |
1309 // Test that pausing and resuming work as expected. | 1288 // Test that pausing and resuming work as expected. |
1310 TEST(LayerAnimationControllerTest, PauseResume) { | 1289 TEST(LayerAnimationControllerTest, PauseResume) { |
1311 scoped_ptr<AnimationEventsVector> events( | 1290 scoped_ptr<AnimationEventsVector> events( |
1312 make_scoped_ptr(new AnimationEventsVector)); | 1291 make_scoped_ptr(new AnimationEventsVector)); |
1313 FakeLayerAnimationValueObserver dummy; | 1292 FakeLayerAnimationValueObserver dummy; |
1314 scoped_refptr<LayerAnimationController> controller( | 1293 scoped_refptr<LayerAnimationController> controller( |
1315 LayerAnimationController::Create(0)); | 1294 LayerAnimationController::Create(0)); |
1316 controller->AddValueObserver(&dummy); | 1295 controller->AddValueObserver(&dummy); |
1317 | 1296 |
1318 controller->AddAnimation(CreateAnimation( | 1297 controller->AddAnimation(CreateAnimation( |
1319 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1298 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1320 1, Animation::Opacity)); | 1299 1, Animation::OPACITY)); |
1321 | 1300 |
1322 controller->Animate(kInitialTickTime); | 1301 controller->Animate(kInitialTickTime); |
1323 controller->UpdateState(true, events.get()); | 1302 controller->UpdateState(true, events.get()); |
1324 EXPECT_TRUE(controller->HasActiveAnimation()); | 1303 EXPECT_TRUE(controller->HasActiveAnimation()); |
1325 EXPECT_EQ(0.f, dummy.opacity()); | 1304 EXPECT_EQ(0.f, dummy.opacity()); |
1326 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 1305 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
1327 controller->UpdateState(true, events.get()); | 1306 controller->UpdateState(true, events.get()); |
1328 EXPECT_TRUE(controller->HasActiveAnimation()); | 1307 EXPECT_TRUE(controller->HasActiveAnimation()); |
1329 EXPECT_EQ(0.5f, dummy.opacity()); | 1308 EXPECT_EQ(0.5f, dummy.opacity()); |
1330 | 1309 |
1331 EXPECT_TRUE(controller->GetAnimation(Animation::Opacity)); | 1310 EXPECT_TRUE(controller->GetAnimation(Animation::OPACITY)); |
1332 controller->GetAnimation(Animation::Opacity) | 1311 controller->GetAnimation(Animation::OPACITY) |
1333 ->SetRunState(Animation::Paused, | 1312 ->SetRunState(Animation::PAUSED, |
1334 kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 1313 kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
1335 | 1314 |
1336 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024000)); | 1315 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024000)); |
1337 controller->UpdateState(true, events.get()); | 1316 controller->UpdateState(true, events.get()); |
1338 EXPECT_TRUE(controller->HasActiveAnimation()); | 1317 EXPECT_TRUE(controller->HasActiveAnimation()); |
1339 EXPECT_EQ(0.5f, dummy.opacity()); | 1318 EXPECT_EQ(0.5f, dummy.opacity()); |
1340 | 1319 |
1341 EXPECT_TRUE(controller->GetAnimation(Animation::Opacity)); | 1320 EXPECT_TRUE(controller->GetAnimation(Animation::OPACITY)); |
1342 controller->GetAnimation(Animation::Opacity) | 1321 controller->GetAnimation(Animation::OPACITY) |
1343 ->SetRunState(Animation::Running, | 1322 ->SetRunState(Animation::RUNNING, |
1344 kInitialTickTime + TimeDelta::FromMilliseconds(1024000)); | 1323 kInitialTickTime + TimeDelta::FromMilliseconds(1024000)); |
1345 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024250)); | 1324 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024250)); |
1346 controller->UpdateState(true, events.get()); | 1325 controller->UpdateState(true, events.get()); |
1347 EXPECT_TRUE(controller->HasActiveAnimation()); | 1326 EXPECT_TRUE(controller->HasActiveAnimation()); |
1348 EXPECT_EQ(0.75f, dummy.opacity()); | 1327 EXPECT_EQ(0.75f, dummy.opacity()); |
1349 | 1328 |
1350 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024500)); | 1329 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1024500)); |
1351 controller->UpdateState(true, events.get()); | 1330 controller->UpdateState(true, events.get()); |
1352 EXPECT_FALSE(controller->HasActiveAnimation()); | 1331 EXPECT_FALSE(controller->HasActiveAnimation()); |
1353 EXPECT_EQ(1.f, dummy.opacity()); | 1332 EXPECT_EQ(1.f, dummy.opacity()); |
1354 } | 1333 } |
1355 | 1334 |
1356 TEST(LayerAnimationControllerTest, AbortAGroupedAnimation) { | 1335 TEST(LayerAnimationControllerTest, AbortAGroupedAnimation) { |
1357 scoped_ptr<AnimationEventsVector> events( | 1336 scoped_ptr<AnimationEventsVector> events( |
1358 make_scoped_ptr(new AnimationEventsVector)); | 1337 make_scoped_ptr(new AnimationEventsVector)); |
1359 FakeLayerAnimationValueObserver dummy; | 1338 FakeLayerAnimationValueObserver dummy; |
1360 scoped_refptr<LayerAnimationController> controller( | 1339 scoped_refptr<LayerAnimationController> controller( |
1361 LayerAnimationController::Create(0)); | 1340 LayerAnimationController::Create(0)); |
1362 controller->AddValueObserver(&dummy); | 1341 controller->AddValueObserver(&dummy); |
1363 | 1342 |
1364 const int animation_id = 2; | 1343 const int animation_id = 2; |
1365 controller->AddAnimation(Animation::Create( | 1344 controller->AddAnimation(Animation::Create( |
1366 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1, 1, | 1345 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1, 1, |
1367 Animation::Transform)); | 1346 Animation::TRANSFORM)); |
1368 controller->AddAnimation(Animation::Create( | 1347 controller->AddAnimation(Animation::Create( |
1369 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(), | 1348 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(), |
1370 animation_id, 1, Animation::Opacity)); | 1349 animation_id, 1, Animation::OPACITY)); |
1371 controller->AddAnimation(Animation::Create( | 1350 controller->AddAnimation(Animation::Create( |
1372 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.75f)) | 1351 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 1.f, 0.75f)) |
1373 .Pass(), | 1352 .Pass(), |
1374 3, 2, Animation::Opacity)); | 1353 3, 2, Animation::OPACITY)); |
1375 | 1354 |
1376 controller->Animate(kInitialTickTime); | 1355 controller->Animate(kInitialTickTime); |
1377 controller->UpdateState(true, events.get()); | 1356 controller->UpdateState(true, events.get()); |
1378 EXPECT_TRUE(controller->HasActiveAnimation()); | 1357 EXPECT_TRUE(controller->HasActiveAnimation()); |
1379 EXPECT_EQ(0.f, dummy.opacity()); | 1358 EXPECT_EQ(0.f, dummy.opacity()); |
1380 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1359 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1381 controller->UpdateState(true, events.get()); | 1360 controller->UpdateState(true, events.get()); |
1382 EXPECT_TRUE(controller->HasActiveAnimation()); | 1361 EXPECT_TRUE(controller->HasActiveAnimation()); |
1383 EXPECT_EQ(0.5f, dummy.opacity()); | 1362 EXPECT_EQ(0.5f, dummy.opacity()); |
1384 | 1363 |
1385 EXPECT_TRUE(controller->GetAnimationById(animation_id)); | 1364 EXPECT_TRUE(controller->GetAnimationById(animation_id)); |
1386 controller->GetAnimationById(animation_id) | 1365 controller->GetAnimationById(animation_id) |
1387 ->SetRunState(Animation::Aborted, | 1366 ->SetRunState(Animation::ABORTED, |
1388 kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1367 kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1389 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1368 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1390 controller->UpdateState(true, events.get()); | 1369 controller->UpdateState(true, events.get()); |
1391 EXPECT_TRUE(controller->HasActiveAnimation()); | 1370 EXPECT_TRUE(controller->HasActiveAnimation()); |
1392 EXPECT_EQ(1.f, dummy.opacity()); | 1371 EXPECT_EQ(1.f, dummy.opacity()); |
1393 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 1372 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
1394 controller->UpdateState(true, events.get()); | 1373 controller->UpdateState(true, events.get()); |
1395 EXPECT_TRUE(!controller->HasActiveAnimation()); | 1374 EXPECT_TRUE(!controller->HasActiveAnimation()); |
1396 EXPECT_EQ(0.75f, dummy.opacity()); | 1375 EXPECT_EQ(0.75f, dummy.opacity()); |
1397 } | 1376 } |
1398 | 1377 |
1399 TEST(LayerAnimationControllerTest, PushUpdatesWhenSynchronizedStartTimeNeeded) { | 1378 TEST(LayerAnimationControllerTest, PushUpdatesWhenSynchronizedStartTimeNeeded) { |
1400 FakeLayerAnimationValueObserver dummy_impl; | 1379 FakeLayerAnimationValueObserver dummy_impl; |
1401 scoped_refptr<LayerAnimationController> controller_impl( | 1380 scoped_refptr<LayerAnimationController> controller_impl( |
1402 LayerAnimationController::Create(0)); | 1381 LayerAnimationController::Create(0)); |
1403 controller_impl->AddValueObserver(&dummy_impl); | 1382 controller_impl->AddValueObserver(&dummy_impl); |
1404 scoped_ptr<AnimationEventsVector> events( | 1383 scoped_ptr<AnimationEventsVector> events( |
1405 make_scoped_ptr(new AnimationEventsVector)); | 1384 make_scoped_ptr(new AnimationEventsVector)); |
1406 FakeLayerAnimationValueObserver dummy; | 1385 FakeLayerAnimationValueObserver dummy; |
1407 scoped_refptr<LayerAnimationController> controller( | 1386 scoped_refptr<LayerAnimationController> controller( |
1408 LayerAnimationController::Create(0)); | 1387 LayerAnimationController::Create(0)); |
1409 controller->AddValueObserver(&dummy); | 1388 controller->AddValueObserver(&dummy); |
1410 | 1389 |
1411 scoped_ptr<Animation> to_add(CreateAnimation( | 1390 scoped_ptr<Animation> to_add(CreateAnimation( |
1412 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(), | 1391 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(), |
1413 0, | 1392 0, Animation::OPACITY)); |
1414 Animation::Opacity)); | |
1415 to_add->set_needs_synchronized_start_time(true); | 1393 to_add->set_needs_synchronized_start_time(true); |
1416 controller->AddAnimation(to_add.Pass()); | 1394 controller->AddAnimation(to_add.Pass()); |
1417 | 1395 |
1418 controller->Animate(kInitialTickTime); | 1396 controller->Animate(kInitialTickTime); |
1419 controller->UpdateState(true, events.get()); | 1397 controller->UpdateState(true, events.get()); |
1420 EXPECT_TRUE(controller->HasActiveAnimation()); | 1398 EXPECT_TRUE(controller->HasActiveAnimation()); |
1421 Animation* active_animation = controller->GetAnimation(Animation::Opacity); | 1399 Animation* active_animation = controller->GetAnimation(Animation::OPACITY); |
1422 EXPECT_TRUE(active_animation); | 1400 EXPECT_TRUE(active_animation); |
1423 EXPECT_TRUE(active_animation->needs_synchronized_start_time()); | 1401 EXPECT_TRUE(active_animation->needs_synchronized_start_time()); |
1424 | 1402 |
1425 controller->PushAnimationUpdatesTo(controller_impl.get()); | 1403 controller->PushAnimationUpdatesTo(controller_impl.get()); |
1426 controller_impl->ActivateAnimations(); | 1404 controller_impl->ActivateAnimations(); |
1427 | 1405 |
1428 active_animation = controller_impl->GetAnimation(Animation::Opacity); | 1406 active_animation = controller_impl->GetAnimation(Animation::OPACITY); |
1429 EXPECT_TRUE(active_animation); | 1407 EXPECT_TRUE(active_animation); |
1430 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 1408 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
1431 active_animation->run_state()); | 1409 active_animation->run_state()); |
1432 } | 1410 } |
1433 | 1411 |
1434 // Tests that skipping a call to UpdateState works as expected. | 1412 // Tests that skipping a call to UpdateState works as expected. |
1435 TEST(LayerAnimationControllerTest, SkipUpdateState) { | 1413 TEST(LayerAnimationControllerTest, SkipUpdateState) { |
1436 scoped_ptr<AnimationEventsVector> events( | 1414 scoped_ptr<AnimationEventsVector> events( |
1437 make_scoped_ptr(new AnimationEventsVector)); | 1415 make_scoped_ptr(new AnimationEventsVector)); |
1438 FakeLayerAnimationValueObserver dummy; | 1416 FakeLayerAnimationValueObserver dummy; |
1439 scoped_refptr<LayerAnimationController> controller( | 1417 scoped_refptr<LayerAnimationController> controller( |
1440 LayerAnimationController::Create(0)); | 1418 LayerAnimationController::Create(0)); |
1441 controller->AddValueObserver(&dummy); | 1419 controller->AddValueObserver(&dummy); |
1442 | 1420 |
1443 controller->AddAnimation(CreateAnimation( | 1421 controller->AddAnimation(CreateAnimation( |
1444 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), | 1422 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1, |
1445 1, | 1423 Animation::TRANSFORM)); |
1446 Animation::Transform)); | |
1447 | 1424 |
1448 controller->Animate(kInitialTickTime); | 1425 controller->Animate(kInitialTickTime); |
1449 controller->UpdateState(true, events.get()); | 1426 controller->UpdateState(true, events.get()); |
1450 | 1427 |
1451 controller->AddAnimation(CreateAnimation( | 1428 controller->AddAnimation(CreateAnimation( |
1452 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1429 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1453 2, | 1430 2, Animation::OPACITY)); |
1454 Animation::Opacity)); | |
1455 | 1431 |
1456 // Animate but don't UpdateState. | 1432 // Animate but don't UpdateState. |
1457 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1433 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1458 | 1434 |
1459 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 1435 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
1460 events.reset(new AnimationEventsVector); | 1436 events.reset(new AnimationEventsVector); |
1461 controller->UpdateState(true, events.get()); | 1437 controller->UpdateState(true, events.get()); |
1462 | 1438 |
1463 // Should have one Started event and one Finished event. | 1439 // Should have one STARTED event and one FINISHED event. |
1464 EXPECT_EQ(2u, events->size()); | 1440 EXPECT_EQ(2u, events->size()); |
1465 EXPECT_NE((*events)[0].type, (*events)[1].type); | 1441 EXPECT_NE((*events)[0].type, (*events)[1].type); |
1466 | 1442 |
1467 // The float transition should still be at its starting point. | 1443 // The float transition should still be at its starting point. |
1468 EXPECT_TRUE(controller->HasActiveAnimation()); | 1444 EXPECT_TRUE(controller->HasActiveAnimation()); |
1469 EXPECT_EQ(0.f, dummy.opacity()); | 1445 EXPECT_EQ(0.f, dummy.opacity()); |
1470 | 1446 |
1471 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); | 1447 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); |
1472 controller->UpdateState(true, events.get()); | 1448 controller->UpdateState(true, events.get()); |
1473 | 1449 |
1474 // The float tranisition should now be done. | 1450 // The float tranisition should now be done. |
1475 EXPECT_EQ(1.f, dummy.opacity()); | 1451 EXPECT_EQ(1.f, dummy.opacity()); |
1476 EXPECT_FALSE(controller->HasActiveAnimation()); | 1452 EXPECT_FALSE(controller->HasActiveAnimation()); |
1477 } | 1453 } |
1478 | 1454 |
1479 // Tests that an animation controller with only a pending observer gets ticked | 1455 // Tests that an animation controller with only a pending observer gets ticked |
1480 // but doesn't progress animations past the Starting state. | 1456 // but doesn't progress animations past the STARTING state. |
1481 TEST(LayerAnimationControllerTest, InactiveObserverGetsTicked) { | 1457 TEST(LayerAnimationControllerTest, InactiveObserverGetsTicked) { |
1482 scoped_ptr<AnimationEventsVector> events( | 1458 scoped_ptr<AnimationEventsVector> events( |
1483 make_scoped_ptr(new AnimationEventsVector)); | 1459 make_scoped_ptr(new AnimationEventsVector)); |
1484 FakeLayerAnimationValueObserver dummy; | 1460 FakeLayerAnimationValueObserver dummy; |
1485 FakeInactiveLayerAnimationValueObserver pending_dummy; | 1461 FakeInactiveLayerAnimationValueObserver pending_dummy; |
1486 scoped_refptr<LayerAnimationController> controller( | 1462 scoped_refptr<LayerAnimationController> controller( |
1487 LayerAnimationController::Create(0)); | 1463 LayerAnimationController::Create(0)); |
1488 | 1464 |
1489 const int id = 1; | 1465 const int id = 1; |
1490 controller->AddAnimation(CreateAnimation(scoped_ptr<AnimationCurve>( | 1466 controller->AddAnimation(CreateAnimation( |
1491 new FakeFloatTransition(1.0, 0.5f, 1.f)).Pass(), | 1467 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.5f, 1.f)) |
1492 id, | 1468 .Pass(), |
1493 Animation::Opacity)); | 1469 id, Animation::OPACITY)); |
1494 | 1470 |
1495 // Without an observer, the animation shouldn't progress to the Starting | 1471 // Without an observer, the animation shouldn't progress to the STARTING |
1496 // state. | 1472 // state. |
1497 controller->Animate(kInitialTickTime); | 1473 controller->Animate(kInitialTickTime); |
1498 controller->UpdateState(true, events.get()); | 1474 controller->UpdateState(true, events.get()); |
1499 EXPECT_EQ(0u, events->size()); | 1475 EXPECT_EQ(0u, events->size()); |
1500 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 1476 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
1501 controller->GetAnimation(Animation::Opacity)->run_state()); | 1477 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1502 | 1478 |
1503 controller->AddValueObserver(&pending_dummy); | 1479 controller->AddValueObserver(&pending_dummy); |
1504 | 1480 |
1505 // With only a pending observer, the animation should progress to the | 1481 // With only a pending observer, the animation should progress to the |
1506 // Starting state and get ticked at its starting point, but should not | 1482 // STARTING state and get ticked at its starting point, but should not |
1507 // progress to Running. | 1483 // progress to RUNNING. |
1508 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1484 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1509 controller->UpdateState(true, events.get()); | 1485 controller->UpdateState(true, events.get()); |
1510 EXPECT_EQ(0u, events->size()); | 1486 EXPECT_EQ(0u, events->size()); |
1511 EXPECT_EQ(Animation::Starting, | 1487 EXPECT_EQ(Animation::STARTING, |
1512 controller->GetAnimation(Animation::Opacity)->run_state()); | 1488 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1513 EXPECT_EQ(0.5f, pending_dummy.opacity()); | 1489 EXPECT_EQ(0.5f, pending_dummy.opacity()); |
1514 | 1490 |
1515 // Even when already in the Starting state, the animation should stay | 1491 // Even when already in the STARTING state, the animation should stay |
1516 // there, and shouldn't be ticked past its starting point. | 1492 // there, and shouldn't be ticked past its starting point. |
1517 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 1493 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
1518 controller->UpdateState(true, events.get()); | 1494 controller->UpdateState(true, events.get()); |
1519 EXPECT_EQ(0u, events->size()); | 1495 EXPECT_EQ(0u, events->size()); |
1520 EXPECT_EQ(Animation::Starting, | 1496 EXPECT_EQ(Animation::STARTING, |
1521 controller->GetAnimation(Animation::Opacity)->run_state()); | 1497 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1522 EXPECT_EQ(0.5f, pending_dummy.opacity()); | 1498 EXPECT_EQ(0.5f, pending_dummy.opacity()); |
1523 | 1499 |
1524 controller->AddValueObserver(&dummy); | 1500 controller->AddValueObserver(&dummy); |
1525 | 1501 |
1526 // Now that an active observer has been added, the animation should still | 1502 // Now that an active observer has been added, the animation should still |
1527 // initially tick at its starting point, but should now progress to Running. | 1503 // initially tick at its starting point, but should now progress to RUNNING. |
1528 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); | 1504 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3000)); |
1529 controller->UpdateState(true, events.get()); | 1505 controller->UpdateState(true, events.get()); |
1530 EXPECT_EQ(1u, events->size()); | 1506 EXPECT_EQ(1u, events->size()); |
1531 EXPECT_EQ(Animation::Running, | 1507 EXPECT_EQ(Animation::RUNNING, |
1532 controller->GetAnimation(Animation::Opacity)->run_state()); | 1508 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1533 EXPECT_EQ(0.5f, pending_dummy.opacity()); | 1509 EXPECT_EQ(0.5f, pending_dummy.opacity()); |
1534 EXPECT_EQ(0.5f, dummy.opacity()); | 1510 EXPECT_EQ(0.5f, dummy.opacity()); |
1535 | 1511 |
1536 // The animation should now tick past its starting point. | 1512 // The animation should now tick past its starting point. |
1537 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3500)); | 1513 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(3500)); |
1538 EXPECT_NE(0.5f, pending_dummy.opacity()); | 1514 EXPECT_NE(0.5f, pending_dummy.opacity()); |
1539 EXPECT_NE(0.5f, dummy.opacity()); | 1515 EXPECT_NE(0.5f, dummy.opacity()); |
1540 } | 1516 } |
1541 | 1517 |
1542 TEST(LayerAnimationControllerTest, TransformAnimationBounds) { | 1518 TEST(LayerAnimationControllerTest, TransformAnimationBounds) { |
1543 scoped_refptr<LayerAnimationController> controller_impl( | 1519 scoped_refptr<LayerAnimationController> controller_impl( |
1544 LayerAnimationController::Create(0)); | 1520 LayerAnimationController::Create(0)); |
1545 | 1521 |
1546 scoped_ptr<KeyframedTransformAnimationCurve> curve1( | 1522 scoped_ptr<KeyframedTransformAnimationCurve> curve1( |
1547 KeyframedTransformAnimationCurve::Create()); | 1523 KeyframedTransformAnimationCurve::Create()); |
1548 | 1524 |
1549 TransformOperations operations1; | 1525 TransformOperations operations1; |
1550 curve1->AddKeyframe( | 1526 curve1->AddKeyframe( |
1551 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); | 1527 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); |
1552 operations1.AppendTranslate(10.0, 15.0, 0.0); | 1528 operations1.AppendTranslate(10.0, 15.0, 0.0); |
1553 curve1->AddKeyframe(TransformKeyframe::Create( | 1529 curve1->AddKeyframe(TransformKeyframe::Create( |
1554 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); | 1530 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); |
1555 | 1531 |
1556 scoped_ptr<Animation> animation( | 1532 scoped_ptr<Animation> animation( |
1557 Animation::Create(curve1.Pass(), 1, 1, Animation::Transform)); | 1533 Animation::Create(curve1.Pass(), 1, 1, Animation::TRANSFORM)); |
1558 controller_impl->AddAnimation(animation.Pass()); | 1534 controller_impl->AddAnimation(animation.Pass()); |
1559 | 1535 |
1560 scoped_ptr<KeyframedTransformAnimationCurve> curve2( | 1536 scoped_ptr<KeyframedTransformAnimationCurve> curve2( |
1561 KeyframedTransformAnimationCurve::Create()); | 1537 KeyframedTransformAnimationCurve::Create()); |
1562 | 1538 |
1563 TransformOperations operations2; | 1539 TransformOperations operations2; |
1564 curve2->AddKeyframe( | 1540 curve2->AddKeyframe( |
1565 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); | 1541 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); |
1566 operations2.AppendScale(2.0, 3.0, 4.0); | 1542 operations2.AppendScale(2.0, 3.0, 4.0); |
1567 curve2->AddKeyframe(TransformKeyframe::Create( | 1543 curve2->AddKeyframe(TransformKeyframe::Create( |
1568 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); | 1544 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); |
1569 | 1545 |
1570 animation = Animation::Create(curve2.Pass(), 2, 2, Animation::Transform); | 1546 animation = Animation::Create(curve2.Pass(), 2, 2, Animation::TRANSFORM); |
1571 controller_impl->AddAnimation(animation.Pass()); | 1547 controller_impl->AddAnimation(animation.Pass()); |
1572 | 1548 |
1573 gfx::BoxF box(1.f, 2.f, -1.f, 3.f, 4.f, 5.f); | 1549 gfx::BoxF box(1.f, 2.f, -1.f, 3.f, 4.f, 5.f); |
1574 gfx::BoxF bounds; | 1550 gfx::BoxF bounds; |
1575 | 1551 |
1576 EXPECT_TRUE(controller_impl->TransformAnimationBoundsForBox(box, &bounds)); | 1552 EXPECT_TRUE(controller_impl->TransformAnimationBoundsForBox(box, &bounds)); |
1577 EXPECT_EQ(gfx::BoxF(1.f, 2.f, -4.f, 13.f, 19.f, 20.f).ToString(), | 1553 EXPECT_EQ(gfx::BoxF(1.f, 2.f, -4.f, 13.f, 19.f, 20.f).ToString(), |
1578 bounds.ToString()); | 1554 bounds.ToString()); |
1579 | 1555 |
1580 controller_impl->GetAnimationById(1) | 1556 controller_impl->GetAnimationById(1) |
1581 ->SetRunState(Animation::Finished, TicksFromSecondsF(0.0)); | 1557 ->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
1582 | 1558 |
1583 // Only the unfinished animation should affect the animated bounds. | 1559 // Only the unfinished animation should affect the animated bounds. |
1584 EXPECT_TRUE(controller_impl->TransformAnimationBoundsForBox(box, &bounds)); | 1560 EXPECT_TRUE(controller_impl->TransformAnimationBoundsForBox(box, &bounds)); |
1585 EXPECT_EQ(gfx::BoxF(1.f, 2.f, -4.f, 7.f, 16.f, 20.f).ToString(), | 1561 EXPECT_EQ(gfx::BoxF(1.f, 2.f, -4.f, 7.f, 16.f, 20.f).ToString(), |
1586 bounds.ToString()); | 1562 bounds.ToString()); |
1587 | 1563 |
1588 controller_impl->GetAnimationById(2) | 1564 controller_impl->GetAnimationById(2) |
1589 ->SetRunState(Animation::Finished, TicksFromSecondsF(0.0)); | 1565 ->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
1590 | 1566 |
1591 // There are no longer any running animations. | 1567 // There are no longer any running animations. |
1592 EXPECT_FALSE(controller_impl->HasTransformAnimationThatInflatesBounds()); | 1568 EXPECT_FALSE(controller_impl->HasTransformAnimationThatInflatesBounds()); |
1593 | 1569 |
1594 // Add an animation whose bounds we don't yet support computing. | 1570 // Add an animation whose bounds we don't yet support computing. |
1595 scoped_ptr<KeyframedTransformAnimationCurve> curve3( | 1571 scoped_ptr<KeyframedTransformAnimationCurve> curve3( |
1596 KeyframedTransformAnimationCurve::Create()); | 1572 KeyframedTransformAnimationCurve::Create()); |
1597 TransformOperations operations3; | 1573 TransformOperations operations3; |
1598 gfx::Transform transform3; | 1574 gfx::Transform transform3; |
1599 transform3.Scale3d(1.0, 2.0, 3.0); | 1575 transform3.Scale3d(1.0, 2.0, 3.0); |
1600 curve3->AddKeyframe( | 1576 curve3->AddKeyframe( |
1601 TransformKeyframe::Create(base::TimeDelta(), operations3, nullptr)); | 1577 TransformKeyframe::Create(base::TimeDelta(), operations3, nullptr)); |
1602 operations3.AppendMatrix(transform3); | 1578 operations3.AppendMatrix(transform3); |
1603 curve3->AddKeyframe(TransformKeyframe::Create( | 1579 curve3->AddKeyframe(TransformKeyframe::Create( |
1604 base::TimeDelta::FromSecondsD(1.0), operations3, nullptr)); | 1580 base::TimeDelta::FromSecondsD(1.0), operations3, nullptr)); |
1605 animation = Animation::Create(curve3.Pass(), 3, 3, Animation::Transform); | 1581 animation = Animation::Create(curve3.Pass(), 3, 3, Animation::TRANSFORM); |
1606 controller_impl->AddAnimation(animation.Pass()); | 1582 controller_impl->AddAnimation(animation.Pass()); |
1607 EXPECT_FALSE(controller_impl->TransformAnimationBoundsForBox(box, &bounds)); | 1583 EXPECT_FALSE(controller_impl->TransformAnimationBoundsForBox(box, &bounds)); |
1608 } | 1584 } |
1609 | 1585 |
1610 // Tests that AbortAnimations aborts all animations targeting the specified | 1586 // Tests that AbortAnimations aborts all animations targeting the specified |
1611 // property. | 1587 // property. |
1612 TEST(LayerAnimationControllerTest, AbortAnimations) { | 1588 TEST(LayerAnimationControllerTest, AbortAnimations) { |
1613 FakeLayerAnimationValueObserver dummy; | 1589 FakeLayerAnimationValueObserver dummy; |
1614 scoped_refptr<LayerAnimationController> controller( | 1590 scoped_refptr<LayerAnimationController> controller( |
1615 LayerAnimationController::Create(0)); | 1591 LayerAnimationController::Create(0)); |
1616 controller->AddValueObserver(&dummy); | 1592 controller->AddValueObserver(&dummy); |
1617 | 1593 |
1618 // Start with several animations, and allow some of them to reach the finished | 1594 // Start with several animations, and allow some of them to reach the finished |
1619 // state. | 1595 // state. |
1620 controller->AddAnimation(Animation::Create( | 1596 controller->AddAnimation(Animation::Create( |
1621 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), 1, 1, | 1597 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), 1, 1, |
1622 Animation::Transform)); | 1598 Animation::TRANSFORM)); |
1623 controller->AddAnimation(Animation::Create( | 1599 controller->AddAnimation(Animation::Create( |
1624 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1600 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1625 2, 2, Animation::Opacity)); | 1601 2, 2, Animation::OPACITY)); |
1626 controller->AddAnimation(Animation::Create( | 1602 controller->AddAnimation(Animation::Create( |
1627 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), 3, 3, | 1603 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), 3, 3, |
1628 Animation::Transform)); | 1604 Animation::TRANSFORM)); |
1629 controller->AddAnimation(Animation::Create( | 1605 controller->AddAnimation(Animation::Create( |
1630 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(), 4, 4, | 1606 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(), 4, 4, |
1631 Animation::Transform)); | 1607 Animation::TRANSFORM)); |
1632 controller->AddAnimation(Animation::Create( | 1608 controller->AddAnimation(Animation::Create( |
1633 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1609 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1634 5, 5, Animation::Opacity)); | 1610 5, 5, Animation::OPACITY)); |
1635 | 1611 |
1636 controller->Animate(kInitialTickTime); | 1612 controller->Animate(kInitialTickTime); |
1637 controller->UpdateState(true, nullptr); | 1613 controller->UpdateState(true, nullptr); |
1638 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); | 1614 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(1000)); |
1639 controller->UpdateState(true, nullptr); | 1615 controller->UpdateState(true, nullptr); |
1640 | 1616 |
1641 EXPECT_EQ(Animation::Finished, controller->GetAnimationById(1)->run_state()); | 1617 EXPECT_EQ(Animation::FINISHED, controller->GetAnimationById(1)->run_state()); |
1642 EXPECT_EQ(Animation::Finished, controller->GetAnimationById(2)->run_state()); | 1618 EXPECT_EQ(Animation::FINISHED, controller->GetAnimationById(2)->run_state()); |
1643 EXPECT_EQ(Animation::Running, controller->GetAnimationById(3)->run_state()); | 1619 EXPECT_EQ(Animation::RUNNING, controller->GetAnimationById(3)->run_state()); |
1644 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 1620 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
1645 controller->GetAnimationById(4)->run_state()); | 1621 controller->GetAnimationById(4)->run_state()); |
1646 EXPECT_EQ(Animation::Running, controller->GetAnimationById(5)->run_state()); | 1622 EXPECT_EQ(Animation::RUNNING, controller->GetAnimationById(5)->run_state()); |
1647 | 1623 |
1648 controller->AbortAnimations(Animation::Transform); | 1624 controller->AbortAnimations(Animation::TRANSFORM); |
1649 | 1625 |
1650 // Only un-finished Transform animations should have been aborted. | 1626 // Only un-finished TRANSFORM animations should have been aborted. |
1651 EXPECT_EQ(Animation::Finished, controller->GetAnimationById(1)->run_state()); | 1627 EXPECT_EQ(Animation::FINISHED, controller->GetAnimationById(1)->run_state()); |
1652 EXPECT_EQ(Animation::Finished, controller->GetAnimationById(2)->run_state()); | 1628 EXPECT_EQ(Animation::FINISHED, controller->GetAnimationById(2)->run_state()); |
1653 EXPECT_EQ(Animation::Aborted, controller->GetAnimationById(3)->run_state()); | 1629 EXPECT_EQ(Animation::ABORTED, controller->GetAnimationById(3)->run_state()); |
1654 EXPECT_EQ(Animation::Aborted, controller->GetAnimationById(4)->run_state()); | 1630 EXPECT_EQ(Animation::ABORTED, controller->GetAnimationById(4)->run_state()); |
1655 EXPECT_EQ(Animation::Running, controller->GetAnimationById(5)->run_state()); | 1631 EXPECT_EQ(Animation::RUNNING, controller->GetAnimationById(5)->run_state()); |
1656 } | 1632 } |
1657 | 1633 |
1658 // An animation aborted on the main thread should get deleted on both threads. | 1634 // An animation aborted on the main thread should get deleted on both threads. |
1659 TEST(LayerAnimationControllerTest, MainThreadAbortedAnimationGetsDeleted) { | 1635 TEST(LayerAnimationControllerTest, MainThreadAbortedAnimationGetsDeleted) { |
1660 FakeLayerAnimationValueObserver dummy_impl; | 1636 FakeLayerAnimationValueObserver dummy_impl; |
1661 scoped_refptr<LayerAnimationController> controller_impl( | 1637 scoped_refptr<LayerAnimationController> controller_impl( |
1662 LayerAnimationController::Create(0)); | 1638 LayerAnimationController::Create(0)); |
1663 controller_impl->AddValueObserver(&dummy_impl); | 1639 controller_impl->AddValueObserver(&dummy_impl); |
1664 FakeLayerAnimationValueObserver dummy; | 1640 FakeLayerAnimationValueObserver dummy; |
1665 scoped_refptr<LayerAnimationController> controller( | 1641 scoped_refptr<LayerAnimationController> controller( |
1666 LayerAnimationController::Create(0)); | 1642 LayerAnimationController::Create(0)); |
1667 controller->AddValueObserver(&dummy); | 1643 controller->AddValueObserver(&dummy); |
1668 | 1644 |
1669 int animation_id = | 1645 int animation_id = |
1670 AddOpacityTransitionToController(controller.get(), 1.0, 0.f, 1.f, false); | 1646 AddOpacityTransitionToController(controller.get(), 1.0, 0.f, 1.f, false); |
1671 | 1647 |
1672 controller->PushAnimationUpdatesTo(controller_impl.get()); | 1648 controller->PushAnimationUpdatesTo(controller_impl.get()); |
1673 controller_impl->ActivateAnimations(); | 1649 controller_impl->ActivateAnimations(); |
1674 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 1650 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
1675 | 1651 |
1676 controller->AbortAnimations(Animation::Opacity); | 1652 controller->AbortAnimations(Animation::OPACITY); |
1677 EXPECT_EQ(Animation::Aborted, | 1653 EXPECT_EQ(Animation::ABORTED, |
1678 controller->GetAnimation(Animation::Opacity)->run_state()); | 1654 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1679 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); | 1655 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); |
1680 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); | 1656 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); |
1681 | 1657 |
1682 controller->Animate(kInitialTickTime); | 1658 controller->Animate(kInitialTickTime); |
1683 controller->UpdateState(true, nullptr); | 1659 controller->UpdateState(true, nullptr); |
1684 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); | 1660 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); |
1685 EXPECT_EQ(Animation::WaitingForDeletion, | 1661 EXPECT_EQ(Animation::WAITING_FOR_DELETION, |
1686 controller->GetAnimation(Animation::Opacity)->run_state()); | 1662 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1687 | 1663 |
1688 controller->PushAnimationUpdatesTo(controller_impl.get()); | 1664 controller->PushAnimationUpdatesTo(controller_impl.get()); |
1689 controller_impl->ActivateAnimations(); | 1665 controller_impl->ActivateAnimations(); |
1690 EXPECT_FALSE(controller->GetAnimationById(animation_id)); | 1666 EXPECT_FALSE(controller->GetAnimationById(animation_id)); |
1691 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id)); | 1667 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id)); |
1692 } | 1668 } |
1693 | 1669 |
1694 // An animation aborted on the impl thread should get deleted on both threads. | 1670 // An animation aborted on the impl thread should get deleted on both threads. |
1695 TEST(LayerAnimationControllerTest, ImplThreadAbortedAnimationGetsDeleted) { | 1671 TEST(LayerAnimationControllerTest, ImplThreadAbortedAnimationGetsDeleted) { |
1696 FakeLayerAnimationValueObserver dummy_impl; | 1672 FakeLayerAnimationValueObserver dummy_impl; |
1697 scoped_refptr<LayerAnimationController> controller_impl( | 1673 scoped_refptr<LayerAnimationController> controller_impl( |
1698 LayerAnimationController::Create(0)); | 1674 LayerAnimationController::Create(0)); |
1699 controller_impl->AddValueObserver(&dummy_impl); | 1675 controller_impl->AddValueObserver(&dummy_impl); |
1700 FakeLayerAnimationValueObserver dummy; | 1676 FakeLayerAnimationValueObserver dummy; |
1701 scoped_refptr<LayerAnimationController> controller( | 1677 scoped_refptr<LayerAnimationController> controller( |
1702 LayerAnimationController::Create(0)); | 1678 LayerAnimationController::Create(0)); |
1703 controller->AddValueObserver(&dummy); | 1679 controller->AddValueObserver(&dummy); |
1704 | 1680 |
1705 int animation_id = | 1681 int animation_id = |
1706 AddOpacityTransitionToController(controller.get(), 1.0, 0.f, 1.f, false); | 1682 AddOpacityTransitionToController(controller.get(), 1.0, 0.f, 1.f, false); |
1707 | 1683 |
1708 controller->PushAnimationUpdatesTo(controller_impl.get()); | 1684 controller->PushAnimationUpdatesTo(controller_impl.get()); |
1709 controller_impl->ActivateAnimations(); | 1685 controller_impl->ActivateAnimations(); |
1710 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 1686 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
1711 | 1687 |
1712 controller_impl->AbortAnimations(Animation::Opacity); | 1688 controller_impl->AbortAnimations(Animation::OPACITY); |
1713 EXPECT_EQ(Animation::Aborted, | 1689 EXPECT_EQ(Animation::ABORTED, |
1714 controller_impl->GetAnimation(Animation::Opacity)->run_state()); | 1690 controller_impl->GetAnimation(Animation::OPACITY)->run_state()); |
1715 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); | 1691 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); |
1716 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); | 1692 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); |
1717 | 1693 |
1718 AnimationEventsVector events; | 1694 AnimationEventsVector events; |
1719 controller_impl->Animate(kInitialTickTime); | 1695 controller_impl->Animate(kInitialTickTime); |
1720 controller_impl->UpdateState(true, &events); | 1696 controller_impl->UpdateState(true, &events); |
1721 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion()); | 1697 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion()); |
1722 EXPECT_EQ(1u, events.size()); | 1698 EXPECT_EQ(1u, events.size()); |
1723 EXPECT_EQ(AnimationEvent::Aborted, events[0].type); | 1699 EXPECT_EQ(AnimationEvent::ABORTED, events[0].type); |
1724 EXPECT_EQ(Animation::WaitingForDeletion, | 1700 EXPECT_EQ(Animation::WAITING_FOR_DELETION, |
1725 controller_impl->GetAnimation(Animation::Opacity)->run_state()); | 1701 controller_impl->GetAnimation(Animation::OPACITY)->run_state()); |
1726 | 1702 |
1727 controller->NotifyAnimationAborted(events[0]); | 1703 controller->NotifyAnimationAborted(events[0]); |
1728 EXPECT_EQ(Animation::Aborted, | 1704 EXPECT_EQ(Animation::ABORTED, |
1729 controller->GetAnimation(Animation::Opacity)->run_state()); | 1705 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1730 | 1706 |
1731 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 1707 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
1732 controller->UpdateState(true, nullptr); | 1708 controller->UpdateState(true, nullptr); |
1733 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); | 1709 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); |
1734 EXPECT_EQ(Animation::WaitingForDeletion, | 1710 EXPECT_EQ(Animation::WAITING_FOR_DELETION, |
1735 controller->GetAnimation(Animation::Opacity)->run_state()); | 1711 controller->GetAnimation(Animation::OPACITY)->run_state()); |
1736 | 1712 |
1737 controller->PushAnimationUpdatesTo(controller_impl.get()); | 1713 controller->PushAnimationUpdatesTo(controller_impl.get()); |
1738 controller_impl->ActivateAnimations(); | 1714 controller_impl->ActivateAnimations(); |
1739 EXPECT_FALSE(controller->GetAnimationById(animation_id)); | 1715 EXPECT_FALSE(controller->GetAnimationById(animation_id)); |
1740 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id)); | 1716 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id)); |
1741 } | 1717 } |
1742 | 1718 |
1743 // Ensure that we only generate Finished events for animations in a group | 1719 // Ensure that we only generate FINISHED events for animations in a group |
1744 // once all animations in that group are finished. | 1720 // once all animations in that group are finished. |
1745 TEST(LayerAnimationControllerTest, FinishedEventsForGroup) { | 1721 TEST(LayerAnimationControllerTest, FinishedEventsForGroup) { |
1746 scoped_ptr<AnimationEventsVector> events( | 1722 scoped_ptr<AnimationEventsVector> events( |
1747 make_scoped_ptr(new AnimationEventsVector)); | 1723 make_scoped_ptr(new AnimationEventsVector)); |
1748 FakeLayerAnimationValueObserver dummy_impl; | 1724 FakeLayerAnimationValueObserver dummy_impl; |
1749 scoped_refptr<LayerAnimationController> controller_impl( | 1725 scoped_refptr<LayerAnimationController> controller_impl( |
1750 LayerAnimationController::Create(0)); | 1726 LayerAnimationController::Create(0)); |
1751 controller_impl->AddValueObserver(&dummy_impl); | 1727 controller_impl->AddValueObserver(&dummy_impl); |
1752 | 1728 |
1753 const int group_id = 1; | 1729 const int group_id = 1; |
1754 | 1730 |
1755 // Add two animations with the same group id but different durations. | 1731 // Add two animations with the same group id but different durations. |
1756 controller_impl->AddAnimation(Animation::Create( | 1732 controller_impl->AddAnimation(Animation::Create( |
1757 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(), 1, | 1733 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(), 1, |
1758 group_id, Animation::Transform)); | 1734 group_id, Animation::TRANSFORM)); |
1759 controller_impl->AddAnimation(Animation::Create( | 1735 controller_impl->AddAnimation(Animation::Create( |
1760 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1736 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1761 2, group_id, Animation::Opacity)); | 1737 2, group_id, Animation::OPACITY)); |
1762 | 1738 |
1763 controller_impl->Animate(kInitialTickTime); | 1739 controller_impl->Animate(kInitialTickTime); |
1764 controller_impl->UpdateState(true, events.get()); | 1740 controller_impl->UpdateState(true, events.get()); |
1765 | 1741 |
1766 // Both animations should have started. | 1742 // Both animations should have started. |
1767 EXPECT_EQ(2u, events->size()); | 1743 EXPECT_EQ(2u, events->size()); |
1768 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); | 1744 EXPECT_EQ(AnimationEvent::STARTED, (*events)[0].type); |
1769 EXPECT_EQ(AnimationEvent::Started, (*events)[1].type); | 1745 EXPECT_EQ(AnimationEvent::STARTED, (*events)[1].type); |
1770 | 1746 |
1771 events.reset(new AnimationEventsVector); | 1747 events.reset(new AnimationEventsVector); |
1772 controller_impl->Animate(kInitialTickTime + | 1748 controller_impl->Animate(kInitialTickTime + |
1773 TimeDelta::FromMilliseconds(1000)); | 1749 TimeDelta::FromMilliseconds(1000)); |
1774 controller_impl->UpdateState(true, events.get()); | 1750 controller_impl->UpdateState(true, events.get()); |
1775 | 1751 |
1776 // The opacity animation should be finished, but should not have generated | 1752 // The opacity animation should be finished, but should not have generated |
1777 // a Finished event yet. | 1753 // a FINISHED event yet. |
1778 EXPECT_EQ(0u, events->size()); | 1754 EXPECT_EQ(0u, events->size()); |
1779 EXPECT_EQ(Animation::Finished, | 1755 EXPECT_EQ(Animation::FINISHED, |
1780 controller_impl->GetAnimationById(2)->run_state()); | 1756 controller_impl->GetAnimationById(2)->run_state()); |
1781 EXPECT_EQ(Animation::Running, | 1757 EXPECT_EQ(Animation::RUNNING, |
1782 controller_impl->GetAnimationById(1)->run_state()); | 1758 controller_impl->GetAnimationById(1)->run_state()); |
1783 | 1759 |
1784 controller_impl->Animate(kInitialTickTime + | 1760 controller_impl->Animate(kInitialTickTime + |
1785 TimeDelta::FromMilliseconds(2000)); | 1761 TimeDelta::FromMilliseconds(2000)); |
1786 controller_impl->UpdateState(true, events.get()); | 1762 controller_impl->UpdateState(true, events.get()); |
1787 | 1763 |
1788 // Both animations should have generated Finished events. | 1764 // Both animations should have generated FINISHED events. |
1789 EXPECT_EQ(2u, events->size()); | 1765 EXPECT_EQ(2u, events->size()); |
1790 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); | 1766 EXPECT_EQ(AnimationEvent::FINISHED, (*events)[0].type); |
1791 EXPECT_EQ(AnimationEvent::Finished, (*events)[1].type); | 1767 EXPECT_EQ(AnimationEvent::FINISHED, (*events)[1].type); |
1792 } | 1768 } |
1793 | 1769 |
1794 // Ensure that when a group has a mix of aborted and finished animations, | 1770 // Ensure that when a group has a mix of aborted and finished animations, |
1795 // we generate a Finished event for the finished animation and an Aborted | 1771 // we generate a FINISHED event for the finished animation and an ABORTED |
1796 // event for the aborted animation. | 1772 // event for the aborted animation. |
1797 TEST(LayerAnimationControllerTest, FinishedAndAbortedEventsForGroup) { | 1773 TEST(LayerAnimationControllerTest, FinishedAndAbortedEventsForGroup) { |
1798 scoped_ptr<AnimationEventsVector> events( | 1774 scoped_ptr<AnimationEventsVector> events( |
1799 make_scoped_ptr(new AnimationEventsVector)); | 1775 make_scoped_ptr(new AnimationEventsVector)); |
1800 FakeLayerAnimationValueObserver dummy_impl; | 1776 FakeLayerAnimationValueObserver dummy_impl; |
1801 scoped_refptr<LayerAnimationController> controller_impl( | 1777 scoped_refptr<LayerAnimationController> controller_impl( |
1802 LayerAnimationController::Create(0)); | 1778 LayerAnimationController::Create(0)); |
1803 controller_impl->AddValueObserver(&dummy_impl); | 1779 controller_impl->AddValueObserver(&dummy_impl); |
1804 | 1780 |
1805 // Add two animations with the same group id. | 1781 // Add two animations with the same group id. |
1806 controller_impl->AddAnimation(CreateAnimation( | 1782 controller_impl->AddAnimation(CreateAnimation( |
1807 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), | 1783 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), 1, |
1808 1, | 1784 Animation::TRANSFORM)); |
1809 Animation::Transform)); | |
1810 controller_impl->AddAnimation(CreateAnimation( | 1785 controller_impl->AddAnimation(CreateAnimation( |
1811 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1786 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1812 1, | 1787 1, Animation::OPACITY)); |
1813 Animation::Opacity)); | |
1814 | 1788 |
1815 controller_impl->Animate(kInitialTickTime); | 1789 controller_impl->Animate(kInitialTickTime); |
1816 controller_impl->UpdateState(true, events.get()); | 1790 controller_impl->UpdateState(true, events.get()); |
1817 | 1791 |
1818 // Both animations should have started. | 1792 // Both animations should have started. |
1819 EXPECT_EQ(2u, events->size()); | 1793 EXPECT_EQ(2u, events->size()); |
1820 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); | 1794 EXPECT_EQ(AnimationEvent::STARTED, (*events)[0].type); |
1821 EXPECT_EQ(AnimationEvent::Started, (*events)[1].type); | 1795 EXPECT_EQ(AnimationEvent::STARTED, (*events)[1].type); |
1822 | 1796 |
1823 controller_impl->AbortAnimations(Animation::Opacity); | 1797 controller_impl->AbortAnimations(Animation::OPACITY); |
1824 | 1798 |
1825 events.reset(new AnimationEventsVector); | 1799 events.reset(new AnimationEventsVector); |
1826 controller_impl->Animate(kInitialTickTime + | 1800 controller_impl->Animate(kInitialTickTime + |
1827 TimeDelta::FromMilliseconds(1000)); | 1801 TimeDelta::FromMilliseconds(1000)); |
1828 controller_impl->UpdateState(true, events.get()); | 1802 controller_impl->UpdateState(true, events.get()); |
1829 | 1803 |
1830 // We should have exactly 2 events: a Finished event for the tranform | 1804 // We should have exactly 2 events: a FINISHED event for the tranform |
1831 // animation, and an Aborted event for the opacity animation. | 1805 // animation, and an ABORTED event for the opacity animation. |
1832 EXPECT_EQ(2u, events->size()); | 1806 EXPECT_EQ(2u, events->size()); |
1833 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); | 1807 EXPECT_EQ(AnimationEvent::FINISHED, (*events)[0].type); |
1834 EXPECT_EQ(Animation::Transform, (*events)[0].target_property); | 1808 EXPECT_EQ(Animation::TRANSFORM, (*events)[0].target_property); |
1835 EXPECT_EQ(AnimationEvent::Aborted, (*events)[1].type); | 1809 EXPECT_EQ(AnimationEvent::ABORTED, (*events)[1].type); |
1836 EXPECT_EQ(Animation::Opacity, (*events)[1].target_property); | 1810 EXPECT_EQ(Animation::OPACITY, (*events)[1].target_property); |
1837 } | 1811 } |
1838 | 1812 |
1839 TEST(LayerAnimationControllerTest, HasAnimationThatAffectsScale) { | 1813 TEST(LayerAnimationControllerTest, HasAnimationThatAffectsScale) { |
1840 scoped_refptr<LayerAnimationController> controller_impl( | 1814 scoped_refptr<LayerAnimationController> controller_impl( |
1841 LayerAnimationController::Create(0)); | 1815 LayerAnimationController::Create(0)); |
1842 | 1816 |
1843 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); | 1817 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); |
1844 | 1818 |
1845 controller_impl->AddAnimation(CreateAnimation( | 1819 controller_impl->AddAnimation(CreateAnimation( |
1846 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1820 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1847 1, | 1821 1, Animation::OPACITY)); |
1848 Animation::Opacity)); | |
1849 | 1822 |
1850 // Opacity animations don't affect scale. | 1823 // Opacity animations don't affect scale. |
1851 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); | 1824 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); |
1852 | 1825 |
1853 scoped_ptr<KeyframedTransformAnimationCurve> curve1( | 1826 scoped_ptr<KeyframedTransformAnimationCurve> curve1( |
1854 KeyframedTransformAnimationCurve::Create()); | 1827 KeyframedTransformAnimationCurve::Create()); |
1855 | 1828 |
1856 TransformOperations operations1; | 1829 TransformOperations operations1; |
1857 curve1->AddKeyframe( | 1830 curve1->AddKeyframe( |
1858 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); | 1831 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); |
1859 operations1.AppendTranslate(10.0, 15.0, 0.0); | 1832 operations1.AppendTranslate(10.0, 15.0, 0.0); |
1860 curve1->AddKeyframe(TransformKeyframe::Create( | 1833 curve1->AddKeyframe(TransformKeyframe::Create( |
1861 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); | 1834 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); |
1862 | 1835 |
1863 scoped_ptr<Animation> animation( | 1836 scoped_ptr<Animation> animation( |
1864 Animation::Create(curve1.Pass(), 2, 2, Animation::Transform)); | 1837 Animation::Create(curve1.Pass(), 2, 2, Animation::TRANSFORM)); |
1865 controller_impl->AddAnimation(animation.Pass()); | 1838 controller_impl->AddAnimation(animation.Pass()); |
1866 | 1839 |
1867 // Translations don't affect scale. | 1840 // Translations don't affect scale. |
1868 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); | 1841 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); |
1869 | 1842 |
1870 scoped_ptr<KeyframedTransformAnimationCurve> curve2( | 1843 scoped_ptr<KeyframedTransformAnimationCurve> curve2( |
1871 KeyframedTransformAnimationCurve::Create()); | 1844 KeyframedTransformAnimationCurve::Create()); |
1872 | 1845 |
1873 TransformOperations operations2; | 1846 TransformOperations operations2; |
1874 curve2->AddKeyframe( | 1847 curve2->AddKeyframe( |
1875 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); | 1848 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); |
1876 operations2.AppendScale(2.0, 3.0, 4.0); | 1849 operations2.AppendScale(2.0, 3.0, 4.0); |
1877 curve2->AddKeyframe(TransformKeyframe::Create( | 1850 curve2->AddKeyframe(TransformKeyframe::Create( |
1878 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); | 1851 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); |
1879 | 1852 |
1880 animation = Animation::Create(curve2.Pass(), 3, 3, Animation::Transform); | 1853 animation = Animation::Create(curve2.Pass(), 3, 3, Animation::TRANSFORM); |
1881 controller_impl->AddAnimation(animation.Pass()); | 1854 controller_impl->AddAnimation(animation.Pass()); |
1882 | 1855 |
1883 EXPECT_TRUE(controller_impl->HasAnimationThatAffectsScale()); | 1856 EXPECT_TRUE(controller_impl->HasAnimationThatAffectsScale()); |
1884 | 1857 |
1885 controller_impl->GetAnimationById(3) | 1858 controller_impl->GetAnimationById(3) |
1886 ->SetRunState(Animation::Finished, TicksFromSecondsF(0.0)); | 1859 ->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
1887 | 1860 |
1888 // Only unfinished animations should be considered by | 1861 // Only unfinished animations should be considered by |
1889 // HasAnimationThatAffectsScale. | 1862 // HasAnimationThatAffectsScale. |
1890 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); | 1863 EXPECT_FALSE(controller_impl->HasAnimationThatAffectsScale()); |
1891 } | 1864 } |
1892 | 1865 |
1893 TEST(LayerAnimationControllerTest, HasOnlyTranslationTransforms) { | 1866 TEST(LayerAnimationControllerTest, HasOnlyTranslationTransforms) { |
1894 scoped_refptr<LayerAnimationController> controller_impl( | 1867 scoped_refptr<LayerAnimationController> controller_impl( |
1895 LayerAnimationController::Create(0)); | 1868 LayerAnimationController::Create(0)); |
1896 | 1869 |
1897 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); | 1870 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); |
1898 | 1871 |
1899 controller_impl->AddAnimation(CreateAnimation( | 1872 controller_impl->AddAnimation(CreateAnimation( |
1900 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 1873 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
1901 1, | 1874 1, Animation::OPACITY)); |
1902 Animation::Opacity)); | |
1903 | 1875 |
1904 // Opacity animations aren't non-translation transforms. | 1876 // Opacity animations aren't non-translation transforms. |
1905 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); | 1877 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); |
1906 | 1878 |
1907 scoped_ptr<KeyframedTransformAnimationCurve> curve1( | 1879 scoped_ptr<KeyframedTransformAnimationCurve> curve1( |
1908 KeyframedTransformAnimationCurve::Create()); | 1880 KeyframedTransformAnimationCurve::Create()); |
1909 | 1881 |
1910 TransformOperations operations1; | 1882 TransformOperations operations1; |
1911 curve1->AddKeyframe( | 1883 curve1->AddKeyframe( |
1912 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); | 1884 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); |
1913 operations1.AppendTranslate(10.0, 15.0, 0.0); | 1885 operations1.AppendTranslate(10.0, 15.0, 0.0); |
1914 curve1->AddKeyframe(TransformKeyframe::Create( | 1886 curve1->AddKeyframe(TransformKeyframe::Create( |
1915 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); | 1887 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); |
1916 | 1888 |
1917 scoped_ptr<Animation> animation( | 1889 scoped_ptr<Animation> animation( |
1918 Animation::Create(curve1.Pass(), 2, 2, Animation::Transform)); | 1890 Animation::Create(curve1.Pass(), 2, 2, Animation::TRANSFORM)); |
1919 controller_impl->AddAnimation(animation.Pass()); | 1891 controller_impl->AddAnimation(animation.Pass()); |
1920 | 1892 |
1921 // The only transform animation we've added is a translation. | 1893 // The only transform animation we've added is a translation. |
1922 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); | 1894 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); |
1923 | 1895 |
1924 scoped_ptr<KeyframedTransformAnimationCurve> curve2( | 1896 scoped_ptr<KeyframedTransformAnimationCurve> curve2( |
1925 KeyframedTransformAnimationCurve::Create()); | 1897 KeyframedTransformAnimationCurve::Create()); |
1926 | 1898 |
1927 TransformOperations operations2; | 1899 TransformOperations operations2; |
1928 curve2->AddKeyframe( | 1900 curve2->AddKeyframe( |
1929 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); | 1901 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); |
1930 operations2.AppendScale(2.0, 3.0, 4.0); | 1902 operations2.AppendScale(2.0, 3.0, 4.0); |
1931 curve2->AddKeyframe(TransformKeyframe::Create( | 1903 curve2->AddKeyframe(TransformKeyframe::Create( |
1932 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); | 1904 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); |
1933 | 1905 |
1934 animation = Animation::Create(curve2.Pass(), 3, 3, Animation::Transform); | 1906 animation = Animation::Create(curve2.Pass(), 3, 3, Animation::TRANSFORM); |
1935 controller_impl->AddAnimation(animation.Pass()); | 1907 controller_impl->AddAnimation(animation.Pass()); |
1936 | 1908 |
1937 // A scale animation is not a translation. | 1909 // A scale animation is not a translation. |
1938 EXPECT_FALSE(controller_impl->HasOnlyTranslationTransforms()); | 1910 EXPECT_FALSE(controller_impl->HasOnlyTranslationTransforms()); |
1939 | 1911 |
1940 controller_impl->GetAnimationById(3) | 1912 controller_impl->GetAnimationById(3) |
1941 ->SetRunState(Animation::Finished, TicksFromSecondsF(0.0)); | 1913 ->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
1942 | 1914 |
1943 // Only unfinished animations should be considered by | 1915 // Only unfinished animations should be considered by |
1944 // HasOnlyTranslationTransforms. | 1916 // HasOnlyTranslationTransforms. |
1945 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); | 1917 EXPECT_TRUE(controller_impl->HasOnlyTranslationTransforms()); |
1946 } | 1918 } |
1947 | 1919 |
1948 TEST(LayerAnimationControllerTest, MaximumTargetScale) { | 1920 TEST(LayerAnimationControllerTest, MaximumTargetScale) { |
1949 scoped_refptr<LayerAnimationController> controller_impl( | 1921 scoped_refptr<LayerAnimationController> controller_impl( |
1950 LayerAnimationController::Create(0)); | 1922 LayerAnimationController::Create(0)); |
1951 | 1923 |
1952 float max_scale = 0.f; | 1924 float max_scale = 0.f; |
1953 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 1925 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
1954 EXPECT_EQ(0.f, max_scale); | 1926 EXPECT_EQ(0.f, max_scale); |
1955 | 1927 |
1956 scoped_ptr<KeyframedTransformAnimationCurve> curve1( | 1928 scoped_ptr<KeyframedTransformAnimationCurve> curve1( |
1957 KeyframedTransformAnimationCurve::Create()); | 1929 KeyframedTransformAnimationCurve::Create()); |
1958 | 1930 |
1959 TransformOperations operations1; | 1931 TransformOperations operations1; |
1960 curve1->AddKeyframe( | 1932 curve1->AddKeyframe( |
1961 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); | 1933 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); |
1962 operations1.AppendScale(2.0, 3.0, 4.0); | 1934 operations1.AppendScale(2.0, 3.0, 4.0); |
1963 curve1->AddKeyframe(TransformKeyframe::Create( | 1935 curve1->AddKeyframe(TransformKeyframe::Create( |
1964 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); | 1936 base::TimeDelta::FromSecondsD(1.0), operations1, nullptr)); |
1965 | 1937 |
1966 scoped_ptr<Animation> animation( | 1938 scoped_ptr<Animation> animation( |
1967 Animation::Create(curve1.Pass(), 1, 1, Animation::Transform)); | 1939 Animation::Create(curve1.Pass(), 1, 1, Animation::TRANSFORM)); |
1968 controller_impl->AddAnimation(animation.Pass()); | 1940 controller_impl->AddAnimation(animation.Pass()); |
1969 | 1941 |
1970 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 1942 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
1971 EXPECT_EQ(4.f, max_scale); | 1943 EXPECT_EQ(4.f, max_scale); |
1972 | 1944 |
1973 scoped_ptr<KeyframedTransformAnimationCurve> curve2( | 1945 scoped_ptr<KeyframedTransformAnimationCurve> curve2( |
1974 KeyframedTransformAnimationCurve::Create()); | 1946 KeyframedTransformAnimationCurve::Create()); |
1975 | 1947 |
1976 TransformOperations operations2; | 1948 TransformOperations operations2; |
1977 curve2->AddKeyframe( | 1949 curve2->AddKeyframe( |
1978 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); | 1950 TransformKeyframe::Create(base::TimeDelta(), operations2, nullptr)); |
1979 operations2.AppendScale(6.0, 5.0, 4.0); | 1951 operations2.AppendScale(6.0, 5.0, 4.0); |
1980 curve2->AddKeyframe(TransformKeyframe::Create( | 1952 curve2->AddKeyframe(TransformKeyframe::Create( |
1981 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); | 1953 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); |
1982 | 1954 |
1983 animation = Animation::Create(curve2.Pass(), 2, 2, Animation::Transform); | 1955 animation = Animation::Create(curve2.Pass(), 2, 2, Animation::TRANSFORM); |
1984 controller_impl->AddAnimation(animation.Pass()); | 1956 controller_impl->AddAnimation(animation.Pass()); |
1985 | 1957 |
1986 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 1958 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
1987 EXPECT_EQ(6.f, max_scale); | 1959 EXPECT_EQ(6.f, max_scale); |
1988 | 1960 |
1989 scoped_ptr<KeyframedTransformAnimationCurve> curve3( | 1961 scoped_ptr<KeyframedTransformAnimationCurve> curve3( |
1990 KeyframedTransformAnimationCurve::Create()); | 1962 KeyframedTransformAnimationCurve::Create()); |
1991 | 1963 |
1992 TransformOperations operations3; | 1964 TransformOperations operations3; |
1993 curve3->AddKeyframe( | 1965 curve3->AddKeyframe( |
1994 TransformKeyframe::Create(base::TimeDelta(), operations3, nullptr)); | 1966 TransformKeyframe::Create(base::TimeDelta(), operations3, nullptr)); |
1995 operations3.AppendPerspective(6.0); | 1967 operations3.AppendPerspective(6.0); |
1996 curve3->AddKeyframe(TransformKeyframe::Create( | 1968 curve3->AddKeyframe(TransformKeyframe::Create( |
1997 base::TimeDelta::FromSecondsD(1.0), operations3, nullptr)); | 1969 base::TimeDelta::FromSecondsD(1.0), operations3, nullptr)); |
1998 | 1970 |
1999 animation = Animation::Create(curve3.Pass(), 3, 3, Animation::Transform); | 1971 animation = Animation::Create(curve3.Pass(), 3, 3, Animation::TRANSFORM); |
2000 controller_impl->AddAnimation(animation.Pass()); | 1972 controller_impl->AddAnimation(animation.Pass()); |
2001 | 1973 |
2002 EXPECT_FALSE(controller_impl->MaximumTargetScale(&max_scale)); | 1974 EXPECT_FALSE(controller_impl->MaximumTargetScale(&max_scale)); |
2003 | 1975 |
2004 controller_impl->GetAnimationById(3) | 1976 controller_impl->GetAnimationById(3) |
2005 ->SetRunState(Animation::Finished, TicksFromSecondsF(0.0)); | 1977 ->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
2006 controller_impl->GetAnimationById(2) | 1978 controller_impl->GetAnimationById(2) |
2007 ->SetRunState(Animation::Finished, TicksFromSecondsF(0.0)); | 1979 ->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
2008 | 1980 |
2009 // Only unfinished animations should be considered by | 1981 // Only unfinished animations should be considered by |
2010 // MaximumTargetScale. | 1982 // MaximumTargetScale. |
2011 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 1983 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2012 EXPECT_EQ(4.f, max_scale); | 1984 EXPECT_EQ(4.f, max_scale); |
2013 } | 1985 } |
2014 | 1986 |
2015 TEST(LayerAnimationControllerTest, MaximumTargetScaleWithDirection) { | 1987 TEST(LayerAnimationControllerTest, MaximumTargetScaleWithDirection) { |
2016 scoped_refptr<LayerAnimationController> controller_impl( | 1988 scoped_refptr<LayerAnimationController> controller_impl( |
2017 LayerAnimationController::Create(0)); | 1989 LayerAnimationController::Create(0)); |
2018 | 1990 |
2019 scoped_ptr<KeyframedTransformAnimationCurve> curve1( | 1991 scoped_ptr<KeyframedTransformAnimationCurve> curve1( |
2020 KeyframedTransformAnimationCurve::Create()); | 1992 KeyframedTransformAnimationCurve::Create()); |
2021 TransformOperations operations1; | 1993 TransformOperations operations1; |
2022 operations1.AppendScale(1.0, 2.0, 3.0); | 1994 operations1.AppendScale(1.0, 2.0, 3.0); |
2023 curve1->AddKeyframe( | 1995 curve1->AddKeyframe( |
2024 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); | 1996 TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr)); |
2025 TransformOperations operations2; | 1997 TransformOperations operations2; |
2026 operations2.AppendScale(4.0, 5.0, 6.0); | 1998 operations2.AppendScale(4.0, 5.0, 6.0); |
2027 curve1->AddKeyframe(TransformKeyframe::Create( | 1999 curve1->AddKeyframe(TransformKeyframe::Create( |
2028 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); | 2000 base::TimeDelta::FromSecondsD(1.0), operations2, nullptr)); |
2029 | 2001 |
2030 scoped_ptr<Animation> animation_owned( | 2002 scoped_ptr<Animation> animation_owned( |
2031 Animation::Create(curve1.Pass(), 1, 1, Animation::Transform)); | 2003 Animation::Create(curve1.Pass(), 1, 1, Animation::TRANSFORM)); |
2032 Animation* animation = animation_owned.get(); | 2004 Animation* animation = animation_owned.get(); |
2033 controller_impl->AddAnimation(animation_owned.Pass()); | 2005 controller_impl->AddAnimation(animation_owned.Pass()); |
2034 | 2006 |
2035 float max_scale = 0.f; | 2007 float max_scale = 0.f; |
2036 | 2008 |
2037 EXPECT_GT(animation->playback_rate(), 0.0); | 2009 EXPECT_GT(animation->playback_rate(), 0.0); |
2038 | 2010 |
2039 // Normal direction with positive playback rate. | 2011 // NORMAL direction with positive playback rate. |
2040 animation->set_direction(Animation::Normal); | 2012 animation->set_direction(Animation::DIRECTION_NORMAL); |
2041 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2013 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2042 EXPECT_EQ(6.f, max_scale); | 2014 EXPECT_EQ(6.f, max_scale); |
2043 | 2015 |
2044 // Alternate direction with positive playback rate. | 2016 // ALTERNATE direction with positive playback rate. |
2045 animation->set_direction(Animation::Alternate); | 2017 animation->set_direction(Animation::DIRECTION_ALTERNATE); |
2046 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2018 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2047 EXPECT_EQ(6.f, max_scale); | 2019 EXPECT_EQ(6.f, max_scale); |
2048 | 2020 |
2049 // Reverse direction with positive playback rate. | 2021 // REVERSE direction with positive playback rate. |
2050 animation->set_direction(Animation::Reverse); | 2022 animation->set_direction(Animation::DIRECTION_REVERSE); |
2051 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2023 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2052 EXPECT_EQ(3.f, max_scale); | 2024 EXPECT_EQ(3.f, max_scale); |
2053 | 2025 |
2054 // Alternate reverse direction. | 2026 // ALTERNATE reverse direction. |
2055 animation->set_direction(Animation::Reverse); | 2027 animation->set_direction(Animation::DIRECTION_REVERSE); |
2056 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2028 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2057 EXPECT_EQ(3.f, max_scale); | 2029 EXPECT_EQ(3.f, max_scale); |
2058 | 2030 |
2059 animation->set_playback_rate(-1.0); | 2031 animation->set_playback_rate(-1.0); |
2060 | 2032 |
2061 // Normal direction with negative playback rate. | 2033 // NORMAL direction with negative playback rate. |
2062 animation->set_direction(Animation::Normal); | 2034 animation->set_direction(Animation::DIRECTION_NORMAL); |
2063 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2035 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2064 EXPECT_EQ(3.f, max_scale); | 2036 EXPECT_EQ(3.f, max_scale); |
2065 | 2037 |
2066 // Alternate direction with negative playback rate. | 2038 // ALTERNATE direction with negative playback rate. |
2067 animation->set_direction(Animation::Alternate); | 2039 animation->set_direction(Animation::DIRECTION_ALTERNATE); |
2068 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2040 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2069 EXPECT_EQ(3.f, max_scale); | 2041 EXPECT_EQ(3.f, max_scale); |
2070 | 2042 |
2071 // Reverse direction with negative playback rate. | 2043 // REVERSE direction with negative playback rate. |
2072 animation->set_direction(Animation::Reverse); | 2044 animation->set_direction(Animation::DIRECTION_REVERSE); |
2073 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2045 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2074 EXPECT_EQ(6.f, max_scale); | 2046 EXPECT_EQ(6.f, max_scale); |
2075 | 2047 |
2076 // Alternate reverse direction with negative playback rate. | 2048 // ALTERNATE reverse direction with negative playback rate. |
2077 animation->set_direction(Animation::Reverse); | 2049 animation->set_direction(Animation::DIRECTION_REVERSE); |
2078 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); | 2050 EXPECT_TRUE(controller_impl->MaximumTargetScale(&max_scale)); |
2079 EXPECT_EQ(6.f, max_scale); | 2051 EXPECT_EQ(6.f, max_scale); |
2080 } | 2052 } |
2081 | 2053 |
2082 TEST(LayerAnimationControllerTest, NewlyPushedAnimationWaitsForActivation) { | 2054 TEST(LayerAnimationControllerTest, NewlyPushedAnimationWaitsForActivation) { |
2083 scoped_ptr<AnimationEventsVector> events( | 2055 scoped_ptr<AnimationEventsVector> events( |
2084 make_scoped_ptr(new AnimationEventsVector)); | 2056 make_scoped_ptr(new AnimationEventsVector)); |
2085 FakeLayerAnimationValueObserver dummy_impl; | 2057 FakeLayerAnimationValueObserver dummy_impl; |
2086 FakeInactiveLayerAnimationValueObserver pending_dummy_impl; | 2058 FakeInactiveLayerAnimationValueObserver pending_dummy_impl; |
2087 scoped_refptr<LayerAnimationController> controller_impl( | 2059 scoped_refptr<LayerAnimationController> controller_impl( |
2088 LayerAnimationController::Create(0)); | 2060 LayerAnimationController::Create(0)); |
2089 controller_impl->AddValueObserver(&dummy_impl); | 2061 controller_impl->AddValueObserver(&dummy_impl); |
2090 controller_impl->AddValueObserver(&pending_dummy_impl); | 2062 controller_impl->AddValueObserver(&pending_dummy_impl); |
2091 FakeLayerAnimationValueObserver dummy; | 2063 FakeLayerAnimationValueObserver dummy; |
2092 scoped_refptr<LayerAnimationController> controller( | 2064 scoped_refptr<LayerAnimationController> controller( |
2093 LayerAnimationController::Create(0)); | 2065 LayerAnimationController::Create(0)); |
2094 controller->AddValueObserver(&dummy); | 2066 controller->AddValueObserver(&dummy); |
2095 | 2067 |
2096 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); | 2068 EXPECT_FALSE(controller->needs_to_start_animations_for_testing()); |
2097 int animation_id = | 2069 int animation_id = |
2098 AddOpacityTransitionToController(controller.get(), 1, 0.5f, 1.f, false); | 2070 AddOpacityTransitionToController(controller.get(), 1, 0.5f, 1.f, false); |
2099 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); | 2071 EXPECT_TRUE(controller->needs_to_start_animations_for_testing()); |
2100 | 2072 |
2101 EXPECT_FALSE(controller_impl->needs_to_start_animations_for_testing()); | 2073 EXPECT_FALSE(controller_impl->needs_to_start_animations_for_testing()); |
2102 controller->PushAnimationUpdatesTo(controller_impl.get()); | 2074 controller->PushAnimationUpdatesTo(controller_impl.get()); |
2103 EXPECT_TRUE(controller_impl->needs_to_start_animations_for_testing()); | 2075 EXPECT_TRUE(controller_impl->needs_to_start_animations_for_testing()); |
2104 | 2076 |
2105 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 2077 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
2106 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 2078 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
2107 controller_impl->GetAnimationById(animation_id)->run_state()); | 2079 controller_impl->GetAnimationById(animation_id)->run_state()); |
2108 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2080 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2109 ->affects_pending_observers()); | 2081 ->affects_pending_observers()); |
2110 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id) | 2082 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id) |
2111 ->affects_active_observers()); | 2083 ->affects_active_observers()); |
2112 | 2084 |
2113 controller_impl->Animate(kInitialTickTime); | 2085 controller_impl->Animate(kInitialTickTime); |
2114 EXPECT_FALSE(controller_impl->needs_to_start_animations_for_testing()); | 2086 EXPECT_FALSE(controller_impl->needs_to_start_animations_for_testing()); |
2115 controller_impl->UpdateState(true, events.get()); | 2087 controller_impl->UpdateState(true, events.get()); |
2116 | 2088 |
2117 // Since the animation hasn't been activated, it should still be Starting | 2089 // Since the animation hasn't been activated, it should still be STARTING |
2118 // rather than Running. | 2090 // rather than RUNNING. |
2119 EXPECT_EQ(Animation::Starting, | 2091 EXPECT_EQ(Animation::STARTING, |
2120 controller_impl->GetAnimationById(animation_id)->run_state()); | 2092 controller_impl->GetAnimationById(animation_id)->run_state()); |
2121 | 2093 |
2122 // Since the animation hasn't been activated, only the pending observer | 2094 // Since the animation hasn't been activated, only the pending observer |
2123 // should have been ticked. | 2095 // should have been ticked. |
2124 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); | 2096 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); |
2125 EXPECT_EQ(0.f, dummy_impl.opacity()); | 2097 EXPECT_EQ(0.f, dummy_impl.opacity()); |
2126 | 2098 |
2127 controller_impl->ActivateAnimations(); | 2099 controller_impl->ActivateAnimations(); |
2128 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2100 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2129 ->affects_pending_observers()); | 2101 ->affects_pending_observers()); |
2130 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2102 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2131 ->affects_active_observers()); | 2103 ->affects_active_observers()); |
2132 | 2104 |
2133 controller_impl->Animate(kInitialTickTime + | 2105 controller_impl->Animate(kInitialTickTime + |
2134 TimeDelta::FromMilliseconds(1000)); | 2106 TimeDelta::FromMilliseconds(1000)); |
2135 controller_impl->UpdateState(true, events.get()); | 2107 controller_impl->UpdateState(true, events.get()); |
2136 | 2108 |
2137 // Since the animation has been activated, it should have reached the | 2109 // Since the animation has been activated, it should have reached the |
2138 // Running state and the active observer should start to get ticked. | 2110 // RUNNING state and the active observer should start to get ticked. |
2139 EXPECT_EQ(Animation::Running, | 2111 EXPECT_EQ(Animation::RUNNING, |
2140 controller_impl->GetAnimationById(animation_id)->run_state()); | 2112 controller_impl->GetAnimationById(animation_id)->run_state()); |
2141 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); | 2113 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); |
2142 EXPECT_EQ(0.5f, dummy_impl.opacity()); | 2114 EXPECT_EQ(0.5f, dummy_impl.opacity()); |
2143 } | 2115 } |
2144 | 2116 |
2145 TEST(LayerAnimationControllerTest, ActivationBetweenAnimateAndUpdateState) { | 2117 TEST(LayerAnimationControllerTest, ActivationBetweenAnimateAndUpdateState) { |
2146 scoped_ptr<AnimationEventsVector> events( | 2118 scoped_ptr<AnimationEventsVector> events( |
2147 make_scoped_ptr(new AnimationEventsVector)); | 2119 make_scoped_ptr(new AnimationEventsVector)); |
2148 FakeLayerAnimationValueObserver dummy_impl; | 2120 FakeLayerAnimationValueObserver dummy_impl; |
2149 FakeInactiveLayerAnimationValueObserver pending_dummy_impl; | 2121 FakeInactiveLayerAnimationValueObserver pending_dummy_impl; |
2150 scoped_refptr<LayerAnimationController> controller_impl( | 2122 scoped_refptr<LayerAnimationController> controller_impl( |
2151 LayerAnimationController::Create(0)); | 2123 LayerAnimationController::Create(0)); |
2152 controller_impl->AddValueObserver(&dummy_impl); | 2124 controller_impl->AddValueObserver(&dummy_impl); |
2153 controller_impl->AddValueObserver(&pending_dummy_impl); | 2125 controller_impl->AddValueObserver(&pending_dummy_impl); |
2154 FakeLayerAnimationValueObserver dummy; | 2126 FakeLayerAnimationValueObserver dummy; |
2155 scoped_refptr<LayerAnimationController> controller( | 2127 scoped_refptr<LayerAnimationController> controller( |
2156 LayerAnimationController::Create(0)); | 2128 LayerAnimationController::Create(0)); |
2157 controller->AddValueObserver(&dummy); | 2129 controller->AddValueObserver(&dummy); |
2158 | 2130 |
2159 int animation_id = | 2131 int animation_id = |
2160 AddOpacityTransitionToController(controller.get(), 1, 0.5f, 1.f, true); | 2132 AddOpacityTransitionToController(controller.get(), 1, 0.5f, 1.f, true); |
2161 | 2133 |
2162 controller->PushAnimationUpdatesTo(controller_impl.get()); | 2134 controller->PushAnimationUpdatesTo(controller_impl.get()); |
2163 | 2135 |
2164 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); | 2136 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id)); |
2165 EXPECT_EQ(Animation::WaitingForTargetAvailability, | 2137 EXPECT_EQ(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
2166 controller_impl->GetAnimationById(animation_id)->run_state()); | 2138 controller_impl->GetAnimationById(animation_id)->run_state()); |
2167 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2139 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2168 ->affects_pending_observers()); | 2140 ->affects_pending_observers()); |
2169 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id) | 2141 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id) |
2170 ->affects_active_observers()); | 2142 ->affects_active_observers()); |
2171 | 2143 |
2172 controller_impl->Animate(kInitialTickTime); | 2144 controller_impl->Animate(kInitialTickTime); |
2173 | 2145 |
2174 // Since the animation hasn't been activated, only the pending observer | 2146 // Since the animation hasn't been activated, only the pending observer |
2175 // should have been ticked. | 2147 // should have been ticked. |
2176 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); | 2148 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); |
2177 EXPECT_EQ(0.f, dummy_impl.opacity()); | 2149 EXPECT_EQ(0.f, dummy_impl.opacity()); |
2178 | 2150 |
2179 controller_impl->ActivateAnimations(); | 2151 controller_impl->ActivateAnimations(); |
2180 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2152 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2181 ->affects_pending_observers()); | 2153 ->affects_pending_observers()); |
2182 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2154 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2183 ->affects_active_observers()); | 2155 ->affects_active_observers()); |
2184 | 2156 |
2185 controller_impl->UpdateState(true, events.get()); | 2157 controller_impl->UpdateState(true, events.get()); |
2186 | 2158 |
2187 // Since the animation has been activated, it should have reached the | 2159 // Since the animation has been activated, it should have reached the |
2188 // Running state. | 2160 // RUNNING state. |
2189 EXPECT_EQ(Animation::Running, | 2161 EXPECT_EQ(Animation::RUNNING, |
2190 controller_impl->GetAnimationById(animation_id)->run_state()); | 2162 controller_impl->GetAnimationById(animation_id)->run_state()); |
2191 | 2163 |
2192 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 2164 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
2193 | 2165 |
2194 // Both observers should have been ticked. | 2166 // Both observers should have been ticked. |
2195 EXPECT_EQ(0.75f, pending_dummy_impl.opacity()); | 2167 EXPECT_EQ(0.75f, pending_dummy_impl.opacity()); |
2196 EXPECT_EQ(0.75f, dummy_impl.opacity()); | 2168 EXPECT_EQ(0.75f, dummy_impl.opacity()); |
2197 } | 2169 } |
2198 | 2170 |
2199 TEST(LayerAnimationControllerTest, ClippedOpacityValues) { | 2171 TEST(LayerAnimationControllerTest, ClippedOpacityValues) { |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2242 LayerAnimationController::Create(0)); | 2214 LayerAnimationController::Create(0)); |
2243 controller->AddValueObserver(&dummy); | 2215 controller->AddValueObserver(&dummy); |
2244 | 2216 |
2245 int animation_id = | 2217 int animation_id = |
2246 AddOpacityTransitionToController(controller.get(), 1, 0.5f, 1.f, true); | 2218 AddOpacityTransitionToController(controller.get(), 1, 0.5f, 1.f, true); |
2247 | 2219 |
2248 controller->PushAnimationUpdatesTo(controller_impl.get()); | 2220 controller->PushAnimationUpdatesTo(controller_impl.get()); |
2249 controller_impl->ActivateAnimations(); | 2221 controller_impl->ActivateAnimations(); |
2250 controller_impl->Animate(kInitialTickTime); | 2222 controller_impl->Animate(kInitialTickTime); |
2251 controller_impl->UpdateState(true, events.get()); | 2223 controller_impl->UpdateState(true, events.get()); |
2252 EXPECT_EQ(Animation::Running, | 2224 EXPECT_EQ(Animation::RUNNING, |
2253 controller_impl->GetAnimationById(animation_id)->run_state()); | 2225 controller_impl->GetAnimationById(animation_id)->run_state()); |
2254 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); | 2226 EXPECT_EQ(0.5f, pending_dummy_impl.opacity()); |
2255 EXPECT_EQ(0.5f, dummy_impl.opacity()); | 2227 EXPECT_EQ(0.5f, dummy_impl.opacity()); |
2256 | 2228 |
2257 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2229 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2258 ->affects_pending_observers()); | 2230 ->affects_pending_observers()); |
2259 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2231 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2260 ->affects_active_observers()); | 2232 ->affects_active_observers()); |
2261 | 2233 |
2262 // Delete the animation on the main-thread controller. | 2234 // Delete the animation on the main-thread controller. |
2263 controller->RemoveAnimation( | 2235 controller->RemoveAnimation( |
2264 controller->GetAnimation(Animation::Opacity)->id()); | 2236 controller->GetAnimation(Animation::OPACITY)->id()); |
2265 controller->PushAnimationUpdatesTo(controller_impl.get()); | 2237 controller->PushAnimationUpdatesTo(controller_impl.get()); |
2266 | 2238 |
2267 // The animation should no longer affect pending observers. | 2239 // The animation should no longer affect pending observers. |
2268 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id) | 2240 EXPECT_FALSE(controller_impl->GetAnimationById(animation_id) |
2269 ->affects_pending_observers()); | 2241 ->affects_pending_observers()); |
2270 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) | 2242 EXPECT_TRUE(controller_impl->GetAnimationById(animation_id) |
2271 ->affects_active_observers()); | 2243 ->affects_active_observers()); |
2272 | 2244 |
2273 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 2245 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
2274 controller_impl->UpdateState(true, events.get()); | 2246 controller_impl->UpdateState(true, events.get()); |
(...skipping 28 matching lines...) Expand all Loading... |
2303 AddOpacityTransitionToController(controller.get(), 1, 0.f, 1.f, true); | 2275 AddOpacityTransitionToController(controller.get(), 1, 0.f, 1.f, true); |
2304 | 2276 |
2305 controller->PushAnimationUpdatesTo(controller_impl.get()); | 2277 controller->PushAnimationUpdatesTo(controller_impl.get()); |
2306 controller_impl->ActivateAnimations(); | 2278 controller_impl->ActivateAnimations(); |
2307 controller_impl->Animate(kInitialTickTime); | 2279 controller_impl->Animate(kInitialTickTime); |
2308 controller_impl->UpdateState(true, events.get()); | 2280 controller_impl->UpdateState(true, events.get()); |
2309 | 2281 |
2310 // Remove the first animation from the main-thread controller, and add a | 2282 // Remove the first animation from the main-thread controller, and add a |
2311 // new animation affecting the same property. | 2283 // new animation affecting the same property. |
2312 controller->RemoveAnimation( | 2284 controller->RemoveAnimation( |
2313 controller->GetAnimation(Animation::Opacity)->id()); | 2285 controller->GetAnimation(Animation::OPACITY)->id()); |
2314 int second_animation_id = | 2286 int second_animation_id = |
2315 AddOpacityTransitionToController(controller.get(), 1, 1.f, 0.5f, true); | 2287 AddOpacityTransitionToController(controller.get(), 1, 1.f, 0.5f, true); |
2316 controller->PushAnimationUpdatesTo(controller_impl.get()); | 2288 controller->PushAnimationUpdatesTo(controller_impl.get()); |
2317 | 2289 |
2318 // The original animation should only affect active observers, and the new | 2290 // The original animation should only affect active observers, and the new |
2319 // animation should only affect pending observers. | 2291 // animation should only affect pending observers. |
2320 EXPECT_FALSE(controller_impl->GetAnimationById(first_animation_id) | 2292 EXPECT_FALSE(controller_impl->GetAnimationById(first_animation_id) |
2321 ->affects_pending_observers()); | 2293 ->affects_pending_observers()); |
2322 EXPECT_TRUE(controller_impl->GetAnimationById(first_animation_id) | 2294 EXPECT_TRUE(controller_impl->GetAnimationById(first_animation_id) |
2323 ->affects_active_observers()); | 2295 ->affects_active_observers()); |
2324 EXPECT_TRUE(controller_impl->GetAnimationById(second_animation_id) | 2296 EXPECT_TRUE(controller_impl->GetAnimationById(second_animation_id) |
2325 ->affects_pending_observers()); | 2297 ->affects_pending_observers()); |
2326 EXPECT_FALSE(controller_impl->GetAnimationById(second_animation_id) | 2298 EXPECT_FALSE(controller_impl->GetAnimationById(second_animation_id) |
2327 ->affects_active_observers()); | 2299 ->affects_active_observers()); |
2328 | 2300 |
2329 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); | 2301 controller_impl->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(500)); |
2330 controller_impl->UpdateState(true, events.get()); | 2302 controller_impl->UpdateState(true, events.get()); |
2331 | 2303 |
2332 // The original animation should still be running, and the new animation | 2304 // The original animation should still be running, and the new animation |
2333 // should be starting. | 2305 // should be starting. |
2334 EXPECT_EQ(Animation::Running, | 2306 EXPECT_EQ(Animation::RUNNING, |
2335 controller_impl->GetAnimationById(first_animation_id)->run_state()); | 2307 controller_impl->GetAnimationById(first_animation_id)->run_state()); |
2336 EXPECT_EQ( | 2308 EXPECT_EQ( |
2337 Animation::Starting, | 2309 Animation::STARTING, |
2338 controller_impl->GetAnimationById(second_animation_id)->run_state()); | 2310 controller_impl->GetAnimationById(second_animation_id)->run_state()); |
2339 | 2311 |
2340 // The active observer should have been ticked by the original animation, | 2312 // The active observer should have been ticked by the original animation, |
2341 // and the pending observer should have been ticked by the new animation. | 2313 // and the pending observer should have been ticked by the new animation. |
2342 EXPECT_EQ(1.f, pending_dummy_impl.opacity()); | 2314 EXPECT_EQ(1.f, pending_dummy_impl.opacity()); |
2343 EXPECT_EQ(0.5f, dummy_impl.opacity()); | 2315 EXPECT_EQ(0.5f, dummy_impl.opacity()); |
2344 | 2316 |
2345 controller_impl->ActivateAnimations(); | 2317 controller_impl->ActivateAnimations(); |
2346 | 2318 |
2347 // The original animation should have been deleted, and the new animation | 2319 // The original animation should have been deleted, and the new animation |
2348 // should now affect both observers. | 2320 // should now affect both observers. |
2349 EXPECT_FALSE(controller_impl->GetAnimationById(first_animation_id)); | 2321 EXPECT_FALSE(controller_impl->GetAnimationById(first_animation_id)); |
2350 EXPECT_TRUE(controller_impl->GetAnimationById(second_animation_id) | 2322 EXPECT_TRUE(controller_impl->GetAnimationById(second_animation_id) |
2351 ->affects_pending_observers()); | 2323 ->affects_pending_observers()); |
2352 EXPECT_TRUE(controller_impl->GetAnimationById(second_animation_id) | 2324 EXPECT_TRUE(controller_impl->GetAnimationById(second_animation_id) |
2353 ->affects_active_observers()); | 2325 ->affects_active_observers()); |
2354 | 2326 |
2355 controller_impl->Animate(kInitialTickTime + | 2327 controller_impl->Animate(kInitialTickTime + |
2356 TimeDelta::FromMilliseconds(1000)); | 2328 TimeDelta::FromMilliseconds(1000)); |
2357 controller_impl->UpdateState(true, events.get()); | 2329 controller_impl->UpdateState(true, events.get()); |
2358 | 2330 |
2359 // The new animation should be running, and the active observer should have | 2331 // The new animation should be running, and the active observer should have |
2360 // been ticked at the new animation's starting point. | 2332 // been ticked at the new animation's starting point. |
2361 EXPECT_EQ( | 2333 EXPECT_EQ( |
2362 Animation::Running, | 2334 Animation::RUNNING, |
2363 controller_impl->GetAnimationById(second_animation_id)->run_state()); | 2335 controller_impl->GetAnimationById(second_animation_id)->run_state()); |
2364 EXPECT_EQ(1.f, pending_dummy_impl.opacity()); | 2336 EXPECT_EQ(1.f, pending_dummy_impl.opacity()); |
2365 EXPECT_EQ(1.f, dummy_impl.opacity()); | 2337 EXPECT_EQ(1.f, dummy_impl.opacity()); |
2366 } | 2338 } |
2367 | 2339 |
2368 TEST(LayerAnimationControllerTest, TestIsAnimatingProperty) { | 2340 TEST(LayerAnimationControllerTest, TestIsAnimatingProperty) { |
2369 FakeLayerAnimationValueObserver dummy; | 2341 FakeLayerAnimationValueObserver dummy; |
2370 scoped_refptr<LayerAnimationController> controller( | 2342 scoped_refptr<LayerAnimationController> controller( |
2371 LayerAnimationController::Create(0)); | 2343 LayerAnimationController::Create(0)); |
2372 controller->AddValueObserver(&dummy); | 2344 controller->AddValueObserver(&dummy); |
2373 | 2345 |
2374 scoped_ptr<Animation> animation(CreateAnimation( | 2346 scoped_ptr<Animation> animation(CreateAnimation( |
2375 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 2347 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
2376 1, | 2348 1, Animation::OPACITY)); |
2377 Animation::Opacity)); | |
2378 controller->AddAnimation(animation.Pass()); | 2349 controller->AddAnimation(animation.Pass()); |
2379 controller->Animate(kInitialTickTime); | 2350 controller->Animate(kInitialTickTime); |
2380 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::Opacity)); | 2351 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::OPACITY)); |
2381 controller->UpdateState(true, nullptr); | 2352 controller->UpdateState(true, nullptr); |
2382 EXPECT_TRUE(controller->HasActiveAnimation()); | 2353 EXPECT_TRUE(controller->HasActiveAnimation()); |
2383 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::Opacity)); | 2354 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::OPACITY)); |
2384 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Filter)); | 2355 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::FILTER)); |
2385 EXPECT_EQ(0.f, dummy.opacity()); | 2356 EXPECT_EQ(0.f, dummy.opacity()); |
2386 } | 2357 } |
2387 | 2358 |
2388 TEST(LayerAnimationControllerTest, TestIsAnimatingPropertyTimeOffsetFillMode) { | 2359 TEST(LayerAnimationControllerTest, TestIsAnimatingPropertyTimeOffsetFillMode) { |
2389 FakeLayerAnimationValueObserver dummy; | 2360 FakeLayerAnimationValueObserver dummy; |
2390 scoped_refptr<LayerAnimationController> controller( | 2361 scoped_refptr<LayerAnimationController> controller( |
2391 LayerAnimationController::Create(0)); | 2362 LayerAnimationController::Create(0)); |
2392 controller->AddValueObserver(&dummy); | 2363 controller->AddValueObserver(&dummy); |
2393 | 2364 |
2394 scoped_ptr<Animation> animation(CreateAnimation( | 2365 scoped_ptr<Animation> animation(CreateAnimation( |
2395 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), | 2366 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), |
2396 1, | 2367 1, Animation::OPACITY)); |
2397 Animation::Opacity)); | 2368 animation->set_fill_mode(Animation::FILL_MODE_NONE); |
2398 animation->set_fill_mode(Animation::FillModeNone); | |
2399 animation->set_time_offset(TimeDelta::FromMilliseconds(-2000)); | 2369 animation->set_time_offset(TimeDelta::FromMilliseconds(-2000)); |
2400 controller->AddAnimation(animation.Pass()); | 2370 controller->AddAnimation(animation.Pass()); |
2401 | 2371 |
2402 controller->Animate(kInitialTickTime); | 2372 controller->Animate(kInitialTickTime); |
2403 controller->UpdateState(true, nullptr); | 2373 controller->UpdateState(true, nullptr); |
2404 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Opacity)); | 2374 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::OPACITY)); |
2405 EXPECT_TRUE(controller->HasActiveAnimation()); | 2375 EXPECT_TRUE(controller->HasActiveAnimation()); |
2406 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Opacity)); | 2376 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::OPACITY)); |
2407 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::Filter)); | 2377 EXPECT_FALSE(controller->IsAnimatingProperty(Animation::FILTER)); |
2408 | 2378 |
2409 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); | 2379 controller->Animate(kInitialTickTime + TimeDelta::FromMilliseconds(2000)); |
2410 controller->UpdateState(true, nullptr); | 2380 controller->UpdateState(true, nullptr); |
2411 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::Opacity)); | 2381 EXPECT_TRUE(controller->IsAnimatingProperty(Animation::OPACITY)); |
2412 } | 2382 } |
2413 | 2383 |
2414 } // namespace | 2384 } // namespace |
2415 } // namespace cc | 2385 } // namespace cc |
OLD | NEW |