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

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

Issue 952893003: Update from https://crrev.com/317530 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix gn for nacl Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/animation/layer_animation_controller.cc ('k') | cc/animation/scroll_offset_animation_curve.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698