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