OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "ui/compositor/layer_animator.h" | 5 #include "ui/compositor/layer_animator.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 first_sequence->AddElement(first); | 47 first_sequence->AddElement(first); |
48 LayerAnimationSequence* second_sequence = new LayerAnimationSequence(); | 48 LayerAnimationSequence* second_sequence = new LayerAnimationSequence(); |
49 second_sequence->AddElement(second); | 49 second_sequence->AddElement(second); |
50 | 50 |
51 std::vector<ui::LayerAnimationSequence*> animations; | 51 std::vector<ui::LayerAnimationSequence*> animations; |
52 animations.push_back(first_sequence); | 52 animations.push_back(first_sequence); |
53 animations.push_back(second_sequence); | 53 animations.push_back(second_sequence); |
54 return animations; | 54 return animations; |
55 } | 55 } |
56 | 56 |
| 57 // Creates a default animator with timers disabled for test. |delegate| and |
| 58 // |observer| are attached if non-null. |
| 59 LayerAnimator* CreateDefaultTestAnimator(LayerAnimationDelegate* delegate, |
| 60 LayerAnimationObserver* observer) { |
| 61 LayerAnimator* animator(LayerAnimator::CreateDefaultAnimator()); |
| 62 animator->set_disable_timer_for_test(true); |
| 63 if (delegate) |
| 64 animator->SetDelegate(delegate); |
| 65 if (observer) |
| 66 animator->AddObserver(observer); |
| 67 return animator; |
| 68 } |
| 69 |
| 70 // Creates a default animator with timers disabled for test. |delegate| is |
| 71 // attached if non-null. |
| 72 LayerAnimator* CreateDefaultTestAnimator(LayerAnimationDelegate* delegate) { |
| 73 return CreateDefaultTestAnimator(delegate, nullptr); |
| 74 } |
| 75 |
| 76 // Creates a default animator with timers disabled for test. |
| 77 LayerAnimator* CreateDefaultTestAnimator() { |
| 78 return CreateDefaultTestAnimator(nullptr, nullptr); |
| 79 } |
| 80 |
| 81 // Creates an implicit animator with timers disabled for test. |delegate| and |
| 82 // |observer| are attached if non-null. |
| 83 LayerAnimator* CreateImplicitTestAnimator(LayerAnimationDelegate* delegate, |
| 84 LayerAnimationObserver* observer) { |
| 85 LayerAnimator* animator(LayerAnimator::CreateImplicitAnimator()); |
| 86 animator->set_disable_timer_for_test(true); |
| 87 if (delegate) |
| 88 animator->SetDelegate(delegate); |
| 89 if (observer) |
| 90 animator->AddObserver(observer); |
| 91 return animator; |
| 92 } |
| 93 |
| 94 // Creates an implicit animator with timers disabled for test. |delegate| is |
| 95 // attached if non-null. |
| 96 LayerAnimator* CreateImplicitTestAnimator(LayerAnimationDelegate* delegate) { |
| 97 return CreateImplicitTestAnimator(delegate, nullptr); |
| 98 } |
| 99 |
| 100 // Creates an implicit animator with timers disabled for test. |
| 101 LayerAnimator* CreateImplicitTestAnimator() { |
| 102 return CreateImplicitTestAnimator(nullptr, nullptr); |
| 103 } |
| 104 |
57 class TestImplicitAnimationObserver : public ImplicitAnimationObserver { | 105 class TestImplicitAnimationObserver : public ImplicitAnimationObserver { |
58 public: | 106 public: |
59 explicit TestImplicitAnimationObserver(bool notify_when_animator_destructed) | 107 explicit TestImplicitAnimationObserver(bool notify_when_animator_destructed) |
60 : animations_completed_(false), | 108 : animations_completed_(false), |
61 notify_when_animator_destructed_(notify_when_animator_destructed) { | 109 notify_when_animator_destructed_(notify_when_animator_destructed) { |
62 } | 110 } |
63 | 111 |
64 bool animations_completed() const { return animations_completed_; } | 112 bool animations_completed() const { return animations_completed_; } |
65 void set_animations_completed(bool completed) { | 113 void set_animations_completed(bool completed) { |
66 animations_completed_ = completed; | 114 animations_completed_ = completed; |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 int* num_live_instances_; | 229 int* num_live_instances_; |
182 | 230 |
183 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimationSequence); | 231 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimationSequence); |
184 }; | 232 }; |
185 | 233 |
186 } // namespace | 234 } // namespace |
187 | 235 |
188 // Checks that setting a property on an implicit animator causes an animation to | 236 // Checks that setting a property on an implicit animator causes an animation to |
189 // happen. | 237 // happen. |
190 TEST(LayerAnimatorTest, ImplicitAnimation) { | 238 TEST(LayerAnimatorTest, ImplicitAnimation) { |
191 scoped_refptr<LayerAnimator> animator( | |
192 LayerAnimator::CreateImplicitAnimator()); | |
193 animator->set_disable_timer_for_test(true); | |
194 TestLayerAnimationDelegate delegate; | 239 TestLayerAnimationDelegate delegate; |
195 animator->SetDelegate(&delegate); | 240 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator(&delegate)); |
196 base::TimeTicks now = base::TimeTicks::Now(); | 241 base::TimeTicks now = base::TimeTicks::Now(); |
197 animator->SetBrightness(0.5); | 242 animator->SetBrightness(0.5); |
198 EXPECT_TRUE(animator->is_animating()); | 243 EXPECT_TRUE(animator->is_animating()); |
199 animator->Step(now + base::TimeDelta::FromSeconds(1)); | 244 animator->Step(now + base::TimeDelta::FromSeconds(1)); |
200 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), 0.5); | 245 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), 0.5); |
201 } | 246 } |
202 | 247 |
203 // Checks that if the animator is a default animator, that implicit animations | 248 // Checks that if the animator is a default animator, that implicit animations |
204 // are not started. | 249 // are not started. |
205 TEST(LayerAnimatorTest, NoImplicitAnimation) { | 250 TEST(LayerAnimatorTest, NoImplicitAnimation) { |
206 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
207 animator->set_disable_timer_for_test(true); | |
208 TestLayerAnimationDelegate delegate; | 251 TestLayerAnimationDelegate delegate; |
209 animator->SetDelegate(&delegate); | 252 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
210 animator->SetBrightness(0.5); | 253 animator->SetBrightness(0.5); |
211 EXPECT_FALSE(animator->is_animating()); | 254 EXPECT_FALSE(animator->is_animating()); |
212 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), 0.5); | 255 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), 0.5); |
213 } | 256 } |
214 | 257 |
215 // Checks that StopAnimatingProperty stops animation for that property, and also | 258 // Checks that StopAnimatingProperty stops animation for that property, and also |
216 // skips the stopped animation to the end. | 259 // skips the stopped animation to the end. |
217 TEST(LayerAnimatorTest, StopAnimatingProperty) { | 260 TEST(LayerAnimatorTest, StopAnimatingProperty) { |
218 scoped_refptr<LayerAnimator> animator( | |
219 LayerAnimator::CreateImplicitAnimator()); | |
220 animator->set_disable_timer_for_test(true); | |
221 TestLayerAnimationDelegate delegate; | 261 TestLayerAnimationDelegate delegate; |
222 animator->SetDelegate(&delegate); | 262 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator(&delegate)); |
223 double target_opacity(0.5); | 263 double target_opacity(0.5); |
224 gfx::Rect target_bounds(0, 0, 50, 50); | 264 gfx::Rect target_bounds(0, 0, 50, 50); |
225 animator->SetOpacity(target_opacity); | 265 animator->SetOpacity(target_opacity); |
226 animator->SetBounds(target_bounds); | 266 animator->SetBounds(target_bounds); |
227 animator->StopAnimatingProperty(LayerAnimationElement::OPACITY); | 267 animator->StopAnimatingProperty(LayerAnimationElement::OPACITY); |
228 EXPECT_TRUE(animator->is_animating()); | 268 EXPECT_TRUE(animator->is_animating()); |
229 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); | 269 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); |
230 animator->StopAnimatingProperty(LayerAnimationElement::BOUNDS); | 270 animator->StopAnimatingProperty(LayerAnimationElement::BOUNDS); |
231 EXPECT_FALSE(animator->is_animating()); | 271 EXPECT_FALSE(animator->is_animating()); |
232 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 272 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
233 } | 273 } |
234 | 274 |
235 // Checks that multiple running animation for separate properties can be stopped | 275 // Checks that multiple running animations for separate properties can be |
236 // simultaneously and that all animations are advanced to their target values. | 276 // stopped simultaneously and that all animations are advanced to their target |
| 277 // values. |
237 TEST(LayerAnimatorTest, StopAnimating) { | 278 TEST(LayerAnimatorTest, StopAnimating) { |
238 scoped_refptr<LayerAnimator> animator( | |
239 LayerAnimator::CreateImplicitAnimator()); | |
240 animator->set_disable_timer_for_test(true); | |
241 TestLayerAnimationDelegate delegate; | 279 TestLayerAnimationDelegate delegate; |
242 animator->SetDelegate(&delegate); | 280 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator(&delegate)); |
243 double target_opacity(0.5); | 281 double target_opacity(0.5); |
244 gfx::Rect target_bounds(0, 0, 50, 50); | 282 gfx::Rect target_bounds(0, 0, 50, 50); |
245 animator->SetOpacity(target_opacity); | 283 animator->SetOpacity(target_opacity); |
246 animator->SetBounds(target_bounds); | 284 animator->SetBounds(target_bounds); |
247 EXPECT_TRUE(animator->is_animating()); | 285 EXPECT_TRUE(animator->is_animating()); |
248 animator->StopAnimating(); | 286 animator->StopAnimating(); |
249 EXPECT_FALSE(animator->is_animating()); | 287 EXPECT_FALSE(animator->is_animating()); |
250 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); | 288 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); |
251 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 289 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
252 } | 290 } |
253 | 291 |
254 // Checks that multiple running animation for separate properties can be stopped | 292 // Checks that multiple running animations for separate properties can be |
255 // simultaneously and that all animations are advanced to their target values. | 293 // stopped simultaneously and that aborted animations are NOT advanced to their |
| 294 // target values. |
256 TEST(LayerAnimatorTest, AbortAllAnimations) { | 295 TEST(LayerAnimatorTest, AbortAllAnimations) { |
257 scoped_refptr<LayerAnimator> animator( | |
258 LayerAnimator::CreateImplicitAnimator()); | |
259 animator->set_disable_timer_for_test(true); | |
260 TestLayerAnimationDelegate delegate; | 296 TestLayerAnimationDelegate delegate; |
261 double initial_opacity(1.0); | 297 double initial_opacity(1.0); |
262 gfx::Rect initial_bounds(0, 0, 10, 10); | 298 gfx::Rect initial_bounds(0, 0, 10, 10); |
263 delegate.SetOpacityFromAnimation(initial_opacity); | 299 delegate.SetOpacityFromAnimation(initial_opacity); |
264 delegate.SetBoundsFromAnimation(initial_bounds); | 300 delegate.SetBoundsFromAnimation(initial_bounds); |
265 animator->SetDelegate(&delegate); | 301 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator(&delegate)); |
266 double target_opacity(0.5); | 302 double target_opacity(0.5); |
267 gfx::Rect target_bounds(0, 0, 50, 50); | 303 gfx::Rect target_bounds(0, 0, 50, 50); |
268 animator->SetOpacity(target_opacity); | 304 animator->SetOpacity(target_opacity); |
269 animator->SetBounds(target_bounds); | 305 animator->SetBounds(target_bounds); |
270 EXPECT_TRUE(animator->is_animating()); | 306 EXPECT_TRUE(animator->is_animating()); |
271 animator->AbortAllAnimations(); | 307 animator->AbortAllAnimations(); |
272 EXPECT_FALSE(animator->is_animating()); | 308 EXPECT_FALSE(animator->is_animating()); |
273 EXPECT_FLOAT_EQ(initial_opacity, delegate.GetOpacityForAnimation()); | 309 EXPECT_FLOAT_EQ(initial_opacity, delegate.GetOpacityForAnimation()); |
274 CheckApproximatelyEqual(initial_bounds, delegate.GetBoundsForAnimation()); | 310 CheckApproximatelyEqual(initial_bounds, delegate.GetBoundsForAnimation()); |
275 } | 311 } |
276 | 312 |
277 // Schedule a non-threaded animation that can run immediately. This is the | 313 // Schedule a non-threaded animation that can run immediately. This is the |
278 // trivial case and should result in the animation being started immediately. | 314 // trivial case and should result in the animation being started immediately. |
279 TEST(LayerAnimatorTest, ScheduleAnimationThatCanRunImmediately) { | 315 TEST(LayerAnimatorTest, ScheduleAnimationThatCanRunImmediately) { |
280 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
281 animator->set_disable_timer_for_test(true); | |
282 TestLayerAnimationDelegate delegate; | 316 TestLayerAnimationDelegate delegate; |
283 animator->SetDelegate(&delegate); | 317 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
284 | 318 |
285 double start_brightness(0.0); | 319 double start_brightness(0.0); |
286 double middle_brightness(0.5); | 320 double middle_brightness(0.5); |
287 double target_brightness(1.0); | 321 double target_brightness(1.0); |
288 | 322 |
289 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 323 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
290 | 324 |
291 delegate.SetBrightnessFromAnimation(start_brightness); | 325 delegate.SetBrightnessFromAnimation(start_brightness); |
292 | 326 |
293 animator->ScheduleAnimation( | 327 animator->ScheduleAnimation( |
(...skipping 13 matching lines...) Expand all Loading... |
307 | 341 |
308 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 342 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
309 | 343 |
310 EXPECT_FALSE(animator->is_animating()); | 344 EXPECT_FALSE(animator->is_animating()); |
311 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); | 345 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); |
312 } | 346 } |
313 | 347 |
314 // Schedule a threaded animation that can run immediately. | 348 // Schedule a threaded animation that can run immediately. |
315 TEST(LayerAnimatorTest, ScheduleThreadedAnimationThatCanRunImmediately) { | 349 TEST(LayerAnimatorTest, ScheduleThreadedAnimationThatCanRunImmediately) { |
316 double epsilon = 0.00001; | 350 double epsilon = 0.00001; |
| 351 TestLayerAnimationDelegate delegate; |
317 LayerAnimatorTestController test_controller( | 352 LayerAnimatorTestController test_controller( |
318 LayerAnimator::CreateDefaultAnimator()); | 353 CreateDefaultTestAnimator(&delegate)); |
319 LayerAnimator* animator = test_controller.animator(); | 354 LayerAnimator* animator = test_controller.animator(); |
320 test_controller.animator()->set_disable_timer_for_test(true); | |
321 TestLayerAnimationDelegate delegate; | |
322 test_controller.animator()->SetDelegate(&delegate); | |
323 | 355 |
324 double start_opacity(0.0); | 356 double start_opacity(0.0); |
325 double target_opacity(1.0); | 357 double target_opacity(1.0); |
326 | 358 |
327 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 359 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
328 | 360 |
329 delegate.SetOpacityFromAnimation(start_opacity); | 361 delegate.SetOpacityFromAnimation(start_opacity); |
330 | 362 |
331 test_controller.animator()->ScheduleAnimation( | 363 test_controller.animator()->ScheduleAnimation( |
332 new LayerAnimationSequence( | 364 new LayerAnimationSequence( |
(...skipping 22 matching lines...) Expand all Loading... |
355 | 387 |
356 animator->Step(effective_start + delta); | 388 animator->Step(effective_start + delta); |
357 | 389 |
358 EXPECT_FALSE(test_controller.animator()->is_animating()); | 390 EXPECT_FALSE(test_controller.animator()->is_animating()); |
359 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); | 391 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); |
360 } | 392 } |
361 | 393 |
362 // Schedule two non-threaded animations on separate properties. Both animations | 394 // Schedule two non-threaded animations on separate properties. Both animations |
363 // should start immediately and should progress in lock step. | 395 // should start immediately and should progress in lock step. |
364 TEST(LayerAnimatorTest, ScheduleTwoAnimationsThatCanRunImmediately) { | 396 TEST(LayerAnimatorTest, ScheduleTwoAnimationsThatCanRunImmediately) { |
365 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
366 animator->set_disable_timer_for_test(true); | |
367 TestLayerAnimationDelegate delegate; | 397 TestLayerAnimationDelegate delegate; |
368 animator->SetDelegate(&delegate); | 398 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
369 | 399 |
370 double start_brightness(0.0); | 400 double start_brightness(0.0); |
371 double middle_brightness(0.5); | 401 double middle_brightness(0.5); |
372 double target_brightness(1.0); | 402 double target_brightness(1.0); |
373 | 403 |
374 gfx::Rect start_bounds, target_bounds, middle_bounds; | 404 gfx::Rect start_bounds, target_bounds, middle_bounds; |
375 start_bounds = target_bounds = middle_bounds = gfx::Rect(0, 0, 50, 50); | 405 start_bounds = target_bounds = middle_bounds = gfx::Rect(0, 0, 50, 50); |
376 start_bounds.set_x(-90); | 406 start_bounds.set_x(-90); |
377 target_bounds.set_x(90); | 407 target_bounds.set_x(90); |
378 | 408 |
(...skipping 27 matching lines...) Expand all Loading... |
406 | 436 |
407 EXPECT_FALSE(animator->is_animating()); | 437 EXPECT_FALSE(animator->is_animating()); |
408 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); | 438 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); |
409 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 439 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
410 } | 440 } |
411 | 441 |
412 // Schedule a threaded and a non-threaded animation on separate properties. Both | 442 // Schedule a threaded and a non-threaded animation on separate properties. Both |
413 // animations should progress in lock step. | 443 // animations should progress in lock step. |
414 TEST(LayerAnimatorTest, ScheduleThreadedAndNonThreadedAnimations) { | 444 TEST(LayerAnimatorTest, ScheduleThreadedAndNonThreadedAnimations) { |
415 double epsilon = 0.00001; | 445 double epsilon = 0.00001; |
| 446 TestLayerAnimationDelegate delegate; |
416 LayerAnimatorTestController test_controller( | 447 LayerAnimatorTestController test_controller( |
417 LayerAnimator::CreateDefaultAnimator()); | 448 CreateDefaultTestAnimator(&delegate)); |
418 LayerAnimator* animator = test_controller.animator(); | 449 LayerAnimator* animator = test_controller.animator(); |
419 test_controller.animator()->set_disable_timer_for_test(true); | |
420 TestLayerAnimationDelegate delegate; | |
421 test_controller.animator()->SetDelegate(&delegate); | |
422 | 450 |
423 double start_opacity(0.0); | 451 double start_opacity(0.0); |
424 double target_opacity(1.0); | 452 double target_opacity(1.0); |
425 | 453 |
426 gfx::Rect start_bounds, target_bounds, middle_bounds; | 454 gfx::Rect start_bounds, target_bounds, middle_bounds; |
427 start_bounds = target_bounds = middle_bounds = gfx::Rect(0, 0, 50, 50); | 455 start_bounds = target_bounds = middle_bounds = gfx::Rect(0, 0, 50, 50); |
428 start_bounds.set_x(-90); | 456 start_bounds.set_x(-90); |
429 target_bounds.set_x(90); | 457 target_bounds.set_x(90); |
430 | 458 |
431 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 459 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 animator->Step(effective_start + delta); | 498 animator->Step(effective_start + delta); |
471 | 499 |
472 EXPECT_FALSE(test_controller.animator()->is_animating()); | 500 EXPECT_FALSE(test_controller.animator()->is_animating()); |
473 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); | 501 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); |
474 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 502 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
475 } | 503 } |
476 | 504 |
477 // Schedule two animations on the same property. In this case, the two | 505 // Schedule two animations on the same property. In this case, the two |
478 // animations should run one after another. | 506 // animations should run one after another. |
479 TEST(LayerAnimatorTest, ScheduleTwoAnimationsOnSameProperty) { | 507 TEST(LayerAnimatorTest, ScheduleTwoAnimationsOnSameProperty) { |
480 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
481 animator->set_disable_timer_for_test(true); | |
482 TestLayerAnimationDelegate delegate; | 508 TestLayerAnimationDelegate delegate; |
483 animator->SetDelegate(&delegate); | 509 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
484 | 510 |
485 double start_brightness(0.0); | 511 double start_brightness(0.0); |
486 double middle_brightness(0.5); | 512 double middle_brightness(0.5); |
487 double target_brightness(1.0); | 513 double target_brightness(1.0); |
488 | 514 |
489 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 515 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
490 | 516 |
491 delegate.SetBrightnessFromAnimation(start_brightness); | 517 delegate.SetBrightnessFromAnimation(start_brightness); |
492 | 518 |
493 animator->ScheduleAnimation( | 519 animator->ScheduleAnimation( |
(...skipping 29 matching lines...) Expand all Loading... |
523 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); | 549 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); |
524 | 550 |
525 EXPECT_FALSE(animator->is_animating()); | 551 EXPECT_FALSE(animator->is_animating()); |
526 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 552 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
527 } | 553 } |
528 | 554 |
529 // Schedule [{g}, {g,b}, {b}] and ensure that {b} doesn't run right away. That | 555 // Schedule [{g}, {g,b}, {b}] and ensure that {b} doesn't run right away. That |
530 // is, ensure that all animations targetting a particular property are run in | 556 // is, ensure that all animations targetting a particular property are run in |
531 // order. | 557 // order. |
532 TEST(LayerAnimatorTest, ScheduleBlockedAnimation) { | 558 TEST(LayerAnimatorTest, ScheduleBlockedAnimation) { |
533 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
534 animator->set_disable_timer_for_test(true); | |
535 TestLayerAnimationDelegate delegate; | 559 TestLayerAnimationDelegate delegate; |
536 animator->SetDelegate(&delegate); | 560 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
537 | 561 |
538 double start_grayscale(0.0); | 562 double start_grayscale(0.0); |
539 double middle_grayscale(0.5); | 563 double middle_grayscale(0.5); |
540 double target_grayscale(1.0); | 564 double target_grayscale(1.0); |
541 | 565 |
542 gfx::Rect start_bounds, target_bounds, middle_bounds; | 566 gfx::Rect start_bounds, target_bounds, middle_bounds; |
543 start_bounds = target_bounds = middle_bounds = gfx::Rect(0, 0, 50, 50); | 567 start_bounds = target_bounds = middle_bounds = gfx::Rect(0, 0, 50, 50); |
544 start_bounds.set_x(-90); | 568 start_bounds.set_x(-90); |
545 target_bounds.set_x(90); | 569 target_bounds.set_x(90); |
546 | 570 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 | 626 |
603 EXPECT_FALSE(animator->is_animating()); | 627 EXPECT_FALSE(animator->is_animating()); |
604 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); | 628 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); |
605 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), start_bounds); | 629 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), start_bounds); |
606 } | 630 } |
607 | 631 |
608 // Schedule {g} and then schedule {g} and {b} together. In this case, since | 632 // Schedule {g} and then schedule {g} and {b} together. In this case, since |
609 // ScheduleTogether is being used, the bounds animation should not start until | 633 // ScheduleTogether is being used, the bounds animation should not start until |
610 // the second grayscale animation starts. | 634 // the second grayscale animation starts. |
611 TEST(LayerAnimatorTest, ScheduleTogether) { | 635 TEST(LayerAnimatorTest, ScheduleTogether) { |
612 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
613 animator->set_disable_timer_for_test(true); | |
614 TestLayerAnimationDelegate delegate; | 636 TestLayerAnimationDelegate delegate; |
615 animator->SetDelegate(&delegate); | 637 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
616 | 638 |
617 double start_grayscale(0.0); | 639 double start_grayscale(0.0); |
618 double target_grayscale(1.0); | 640 double target_grayscale(1.0); |
619 | 641 |
620 gfx::Rect start_bounds, target_bounds, middle_bounds; | 642 gfx::Rect start_bounds, target_bounds, middle_bounds; |
621 start_bounds = target_bounds = gfx::Rect(0, 0, 50, 50); | 643 start_bounds = target_bounds = gfx::Rect(0, 0, 50, 50); |
622 start_bounds.set_x(-90); | 644 start_bounds.set_x(-90); |
623 target_bounds.set_x(90); | 645 target_bounds.set_x(90); |
624 | 646 |
625 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 647 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
(...skipping 29 matching lines...) Expand all Loading... |
655 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); | 677 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); |
656 | 678 |
657 EXPECT_FALSE(animator->is_animating()); | 679 EXPECT_FALSE(animator->is_animating()); |
658 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); | 680 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); |
659 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 681 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
660 } | 682 } |
661 | 683 |
662 // Start non-threaded animation (that can run immediately). This is the trivial | 684 // Start non-threaded animation (that can run immediately). This is the trivial |
663 // case (see the trival case for ScheduleAnimation). | 685 // case (see the trival case for ScheduleAnimation). |
664 TEST(LayerAnimatorTest, StartAnimationThatCanRunImmediately) { | 686 TEST(LayerAnimatorTest, StartAnimationThatCanRunImmediately) { |
665 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
666 animator->set_disable_timer_for_test(true); | |
667 TestLayerAnimationDelegate delegate; | 687 TestLayerAnimationDelegate delegate; |
668 animator->SetDelegate(&delegate); | 688 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
669 | 689 |
670 double start_brightness(0.0); | 690 double start_brightness(0.0); |
671 double middle_brightness(0.5); | 691 double middle_brightness(0.5); |
672 double target_brightness(1.0); | 692 double target_brightness(1.0); |
673 | 693 |
674 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 694 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
675 | 695 |
676 delegate.SetBrightnessFromAnimation(start_brightness); | 696 delegate.SetBrightnessFromAnimation(start_brightness); |
677 | 697 |
678 animator->StartAnimation( | 698 animator->StartAnimation( |
(...skipping 13 matching lines...) Expand all Loading... |
692 | 712 |
693 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 713 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
694 | 714 |
695 EXPECT_FALSE(animator->is_animating()); | 715 EXPECT_FALSE(animator->is_animating()); |
696 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); | 716 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); |
697 } | 717 } |
698 | 718 |
699 // Start threaded animation (that can run immediately). | 719 // Start threaded animation (that can run immediately). |
700 TEST(LayerAnimatorTest, StartThreadedAnimationThatCanRunImmediately) { | 720 TEST(LayerAnimatorTest, StartThreadedAnimationThatCanRunImmediately) { |
701 double epsilon = 0.00001; | 721 double epsilon = 0.00001; |
| 722 TestLayerAnimationDelegate delegate; |
702 LayerAnimatorTestController test_controller( | 723 LayerAnimatorTestController test_controller( |
703 LayerAnimator::CreateDefaultAnimator()); | 724 CreateDefaultTestAnimator(&delegate)); |
704 LayerAnimator* animator = test_controller.animator(); | 725 LayerAnimator* animator = test_controller.animator(); |
705 test_controller.animator()->set_disable_timer_for_test(true); | |
706 TestLayerAnimationDelegate delegate; | |
707 test_controller.animator()->SetDelegate(&delegate); | |
708 | 726 |
709 double start_opacity(0.0); | 727 double start_opacity(0.0); |
710 double target_opacity(1.0); | 728 double target_opacity(1.0); |
711 | 729 |
712 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 730 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
713 | 731 |
714 delegate.SetOpacityFromAnimation(start_opacity); | 732 delegate.SetOpacityFromAnimation(start_opacity); |
715 | 733 |
716 test_controller.animator()->StartAnimation( | 734 test_controller.animator()->StartAnimation( |
717 new LayerAnimationSequence( | 735 new LayerAnimationSequence( |
(...skipping 20 matching lines...) Expand all Loading... |
738 last_progressed_fraction(), | 756 last_progressed_fraction(), |
739 epsilon); | 757 epsilon); |
740 | 758 |
741 animator->Step(effective_start + delta); | 759 animator->Step(effective_start + delta); |
742 EXPECT_FALSE(test_controller.animator()->is_animating()); | 760 EXPECT_FALSE(test_controller.animator()->is_animating()); |
743 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); | 761 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); |
744 } | 762 } |
745 | 763 |
746 // Preempt by immediately setting new target. | 764 // Preempt by immediately setting new target. |
747 TEST(LayerAnimatorTest, PreemptBySettingNewTarget) { | 765 TEST(LayerAnimatorTest, PreemptBySettingNewTarget) { |
748 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
749 animator->set_disable_timer_for_test(true); | |
750 TestLayerAnimationDelegate delegate; | 766 TestLayerAnimationDelegate delegate; |
751 animator->SetDelegate(&delegate); | 767 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
752 | 768 |
753 double start_opacity(0.0); | 769 double start_opacity(0.0); |
754 double target_opacity(1.0); | 770 double target_opacity(1.0); |
755 | 771 |
756 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 772 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
757 | 773 |
758 delegate.SetOpacityFromAnimation(start_opacity); | 774 delegate.SetOpacityFromAnimation(start_opacity); |
759 | 775 |
760 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); | 776 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); |
761 | 777 |
762 animator->StartAnimation( | 778 animator->StartAnimation( |
763 new LayerAnimationSequence( | 779 new LayerAnimationSequence( |
764 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); | 780 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); |
765 | 781 |
766 animator->StartAnimation( | 782 animator->StartAnimation( |
767 new LayerAnimationSequence( | 783 new LayerAnimationSequence( |
768 LayerAnimationElement::CreateOpacityElement(start_opacity, delta))); | 784 LayerAnimationElement::CreateOpacityElement(start_opacity, delta))); |
769 | 785 |
770 EXPECT_FALSE(animator->is_animating()); | 786 EXPECT_FALSE(animator->is_animating()); |
771 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); | 787 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); |
772 } | 788 } |
773 | 789 |
774 // Preempt by animating to new target, with a non-threaded animation. | 790 // Preempt by animating to new target, with a non-threaded animation. |
775 TEST(LayerAnimatorTest, PreemptByImmediatelyAnimatingToNewTarget) { | 791 TEST(LayerAnimatorTest, PreemptByImmediatelyAnimatingToNewTarget) { |
776 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
777 animator->set_disable_timer_for_test(true); | |
778 TestLayerAnimationDelegate delegate; | 792 TestLayerAnimationDelegate delegate; |
779 animator->SetDelegate(&delegate); | 793 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
780 | 794 |
781 double start_brightness(0.0); | 795 double start_brightness(0.0); |
782 double middle_brightness(0.5); | 796 double middle_brightness(0.5); |
783 double target_brightness(1.0); | 797 double target_brightness(1.0); |
784 | 798 |
785 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 799 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
786 | 800 |
787 delegate.SetBrightnessFromAnimation(start_brightness); | 801 delegate.SetBrightnessFromAnimation(start_brightness); |
788 | 802 |
789 animator->set_preemption_strategy( | 803 animator->set_preemption_strategy( |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 | 835 |
822 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1500)); | 836 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1500)); |
823 | 837 |
824 EXPECT_FALSE(animator->is_animating()); | 838 EXPECT_FALSE(animator->is_animating()); |
825 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 839 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
826 } | 840 } |
827 | 841 |
828 // Preempt by animating to new target, with a threaded animation. | 842 // Preempt by animating to new target, with a threaded animation. |
829 TEST(LayerAnimatorTest, PreemptThreadedByImmediatelyAnimatingToNewTarget) { | 843 TEST(LayerAnimatorTest, PreemptThreadedByImmediatelyAnimatingToNewTarget) { |
830 double epsilon = 0.00001; | 844 double epsilon = 0.00001; |
| 845 TestLayerAnimationDelegate delegate; |
831 LayerAnimatorTestController test_controller( | 846 LayerAnimatorTestController test_controller( |
832 LayerAnimator::CreateDefaultAnimator()); | 847 CreateDefaultTestAnimator(&delegate)); |
833 LayerAnimator* animator = test_controller.animator(); | 848 LayerAnimator* animator = test_controller.animator(); |
834 test_controller.animator()->set_disable_timer_for_test(true); | |
835 TestLayerAnimationDelegate delegate; | |
836 test_controller.animator()->SetDelegate(&delegate); | |
837 | 849 |
838 double start_opacity(0.0); | 850 double start_opacity(0.0); |
839 double middle_opacity(0.5); | 851 double middle_opacity(0.5); |
840 double target_opacity(1.0); | 852 double target_opacity(1.0); |
841 | 853 |
842 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 854 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
843 | 855 |
844 delegate.SetOpacityFromAnimation(start_opacity); | 856 delegate.SetOpacityFromAnimation(start_opacity); |
845 | 857 |
846 test_controller.animator()->set_preemption_strategy( | 858 test_controller.animator()->set_preemption_strategy( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 epsilon); | 904 epsilon); |
893 | 905 |
894 animator->Step(second_effective_start + delta); | 906 animator->Step(second_effective_start + delta); |
895 | 907 |
896 EXPECT_FALSE(test_controller.animator()->is_animating()); | 908 EXPECT_FALSE(test_controller.animator()->is_animating()); |
897 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); | 909 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); |
898 } | 910 } |
899 | 911 |
900 // Preempt by enqueuing the new animation. | 912 // Preempt by enqueuing the new animation. |
901 TEST(LayerAnimatorTest, PreemptEnqueueNewAnimation) { | 913 TEST(LayerAnimatorTest, PreemptEnqueueNewAnimation) { |
902 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
903 animator->set_disable_timer_for_test(true); | |
904 TestLayerAnimationDelegate delegate; | 914 TestLayerAnimationDelegate delegate; |
905 animator->SetDelegate(&delegate); | 915 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
906 | 916 |
907 double start_brightness(0.0); | 917 double start_brightness(0.0); |
908 double middle_brightness(0.5); | 918 double middle_brightness(0.5); |
909 double target_brightness(1.0); | 919 double target_brightness(1.0); |
910 | 920 |
911 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 921 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
912 | 922 |
913 delegate.SetBrightnessFromAnimation(start_brightness); | 923 delegate.SetBrightnessFromAnimation(start_brightness); |
914 | 924 |
915 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); | 925 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); |
(...skipping 30 matching lines...) Expand all Loading... |
946 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); | 956 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); |
947 | 957 |
948 EXPECT_FALSE(animator->is_animating()); | 958 EXPECT_FALSE(animator->is_animating()); |
949 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 959 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
950 } | 960 } |
951 | 961 |
952 // Start an animation when there are sequences waiting in the queue. In this | 962 // Start an animation when there are sequences waiting in the queue. In this |
953 // case, all pending and running animations should be finished, and the new | 963 // case, all pending and running animations should be finished, and the new |
954 // animation started. | 964 // animation started. |
955 TEST(LayerAnimatorTest, PreemptyByReplacingQueuedAnimations) { | 965 TEST(LayerAnimatorTest, PreemptyByReplacingQueuedAnimations) { |
956 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
957 animator->set_disable_timer_for_test(true); | |
958 TestLayerAnimationDelegate delegate; | 966 TestLayerAnimationDelegate delegate; |
959 animator->SetDelegate(&delegate); | 967 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
960 | 968 |
961 double start_brightness(0.0); | 969 double start_brightness(0.0); |
962 double middle_brightness(0.5); | 970 double middle_brightness(0.5); |
963 double target_brightness(1.0); | 971 double target_brightness(1.0); |
964 | 972 |
965 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 973 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
966 | 974 |
967 delegate.SetBrightnessFromAnimation(start_brightness); | 975 delegate.SetBrightnessFromAnimation(start_brightness); |
968 | 976 |
969 animator->set_preemption_strategy(LayerAnimator::REPLACE_QUEUED_ANIMATIONS); | 977 animator->set_preemption_strategy(LayerAnimator::REPLACE_QUEUED_ANIMATIONS); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1002 EXPECT_TRUE(animator->is_animating()); | 1010 EXPECT_TRUE(animator->is_animating()); |
1003 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), middle_brightness); | 1011 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), middle_brightness); |
1004 | 1012 |
1005 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); | 1013 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); |
1006 | 1014 |
1007 EXPECT_FALSE(animator->is_animating()); | 1015 EXPECT_FALSE(animator->is_animating()); |
1008 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 1016 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
1009 } | 1017 } |
1010 | 1018 |
1011 TEST(LayerAnimatorTest, StartTogetherSetsLastStepTime) { | 1019 TEST(LayerAnimatorTest, StartTogetherSetsLastStepTime) { |
1012 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1013 animator->set_disable_timer_for_test(true); | |
1014 TestLayerAnimationDelegate delegate; | 1020 TestLayerAnimationDelegate delegate; |
1015 animator->SetDelegate(&delegate); | 1021 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1016 | 1022 |
1017 double start_grayscale(0.0); | 1023 double start_grayscale(0.0); |
1018 double target_grayscale(1.0); | 1024 double target_grayscale(1.0); |
1019 double start_brightness(0.1); | 1025 double start_brightness(0.1); |
1020 double target_brightness(0.9); | 1026 double target_brightness(0.9); |
1021 | 1027 |
1022 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1028 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1023 | 1029 |
1024 delegate.SetGrayscaleFromAnimation(start_grayscale); | 1030 delegate.SetGrayscaleFromAnimation(start_grayscale); |
1025 delegate.SetBrightnessFromAnimation(start_brightness); | 1031 delegate.SetBrightnessFromAnimation(start_brightness); |
(...skipping 15 matching lines...) Expand all Loading... |
1041 // miniscule (fractions of a millisecond). If set correctly, then the delta | 1047 // miniscule (fractions of a millisecond). If set correctly, then the delta |
1042 // should be enormous. Arbitrarily choosing 1 minute as the threshold, | 1048 // should be enormous. Arbitrarily choosing 1 minute as the threshold, |
1043 // though a much smaller value would probably have sufficed. | 1049 // though a much smaller value would probably have sufficed. |
1044 delta = base::TimeTicks::Now() - animator->last_step_time(); | 1050 delta = base::TimeTicks::Now() - animator->last_step_time(); |
1045 EXPECT_GT(60.0, delta.InSecondsF()); | 1051 EXPECT_GT(60.0, delta.InSecondsF()); |
1046 } | 1052 } |
1047 | 1053 |
1048 //------------------------------------------------------- | 1054 //------------------------------------------------------- |
1049 // Preempt by immediately setting new target. | 1055 // Preempt by immediately setting new target. |
1050 TEST(LayerAnimatorTest, MultiPreemptBySettingNewTarget) { | 1056 TEST(LayerAnimatorTest, MultiPreemptBySettingNewTarget) { |
1051 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1052 animator->set_disable_timer_for_test(true); | |
1053 TestLayerAnimationDelegate delegate; | 1057 TestLayerAnimationDelegate delegate; |
1054 animator->SetDelegate(&delegate); | 1058 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1055 | 1059 |
1056 double start_opacity(0.0); | 1060 double start_opacity(0.0); |
1057 double target_opacity(1.0); | 1061 double target_opacity(1.0); |
1058 double start_brightness(0.1); | 1062 double start_brightness(0.1); |
1059 double target_brightness(0.9); | 1063 double target_brightness(0.9); |
1060 | 1064 |
1061 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1065 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1062 | 1066 |
1063 delegate.SetOpacityFromAnimation(start_opacity); | 1067 delegate.SetOpacityFromAnimation(start_opacity); |
1064 delegate.SetBrightnessFromAnimation(start_brightness); | 1068 delegate.SetBrightnessFromAnimation(start_brightness); |
(...skipping 14 matching lines...) Expand all Loading... |
1079 delta) | 1083 delta) |
1080 )); | 1084 )); |
1081 | 1085 |
1082 EXPECT_FALSE(animator->is_animating()); | 1086 EXPECT_FALSE(animator->is_animating()); |
1083 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); | 1087 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); |
1084 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 1088 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
1085 } | 1089 } |
1086 | 1090 |
1087 // Preempt by animating to new target. | 1091 // Preempt by animating to new target. |
1088 TEST(LayerAnimatorTest, MultiPreemptByImmediatelyAnimatingToNewTarget) { | 1092 TEST(LayerAnimatorTest, MultiPreemptByImmediatelyAnimatingToNewTarget) { |
1089 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1090 animator->set_disable_timer_for_test(true); | |
1091 TestLayerAnimationDelegate delegate; | 1093 TestLayerAnimationDelegate delegate; |
1092 animator->SetDelegate(&delegate); | 1094 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1093 | 1095 |
1094 double start_grayscale(0.0); | 1096 double start_grayscale(0.0); |
1095 double middle_grayscale(0.5); | 1097 double middle_grayscale(0.5); |
1096 double target_grayscale(1.0); | 1098 double target_grayscale(1.0); |
1097 | 1099 |
1098 double start_brightness(0.1); | 1100 double start_brightness(0.1); |
1099 double middle_brightness(0.2); | 1101 double middle_brightness(0.2); |
1100 double target_brightness(0.3); | 1102 double target_brightness(0.3); |
1101 | 1103 |
1102 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1104 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1500)); | 1150 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1500)); |
1149 | 1151 |
1150 EXPECT_FALSE(animator->is_animating()); | 1152 EXPECT_FALSE(animator->is_animating()); |
1151 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); | 1153 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); |
1152 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 1154 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
1153 } | 1155 } |
1154 | 1156 |
1155 // Preempt a threaded animation by animating to new target. | 1157 // Preempt a threaded animation by animating to new target. |
1156 TEST(LayerAnimatorTest, MultiPreemptThreadedByImmediatelyAnimatingToNewTarget) { | 1158 TEST(LayerAnimatorTest, MultiPreemptThreadedByImmediatelyAnimatingToNewTarget) { |
1157 double epsilon = 0.00001; | 1159 double epsilon = 0.00001; |
| 1160 TestLayerAnimationDelegate delegate; |
1158 LayerAnimatorTestController test_controller( | 1161 LayerAnimatorTestController test_controller( |
1159 LayerAnimator::CreateDefaultAnimator()); | 1162 CreateDefaultTestAnimator(&delegate)); |
1160 LayerAnimator* animator = test_controller.animator(); | 1163 LayerAnimator* animator = test_controller.animator(); |
1161 test_controller.animator()->set_disable_timer_for_test(true); | |
1162 TestLayerAnimationDelegate delegate; | |
1163 test_controller.animator()->SetDelegate(&delegate); | |
1164 | 1164 |
1165 double start_opacity(0.0); | 1165 double start_opacity(0.0); |
1166 double middle_opacity(0.5); | 1166 double middle_opacity(0.5); |
1167 double target_opacity(1.0); | 1167 double target_opacity(1.0); |
1168 | 1168 |
1169 double start_brightness(0.1); | 1169 double start_brightness(0.1); |
1170 double middle_brightness(0.2); | 1170 double middle_brightness(0.2); |
1171 double target_brightness(0.3); | 1171 double target_brightness(0.3); |
1172 | 1172 |
1173 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1173 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1236 | 1236 |
1237 animator->Step(second_effective_start + delta); | 1237 animator->Step(second_effective_start + delta); |
1238 | 1238 |
1239 EXPECT_FALSE(test_controller.animator()->is_animating()); | 1239 EXPECT_FALSE(test_controller.animator()->is_animating()); |
1240 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); | 1240 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); |
1241 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 1241 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
1242 } | 1242 } |
1243 | 1243 |
1244 // Preempt by enqueuing the new animation. | 1244 // Preempt by enqueuing the new animation. |
1245 TEST(LayerAnimatorTest, MultiPreemptEnqueueNewAnimation) { | 1245 TEST(LayerAnimatorTest, MultiPreemptEnqueueNewAnimation) { |
1246 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1247 animator->set_disable_timer_for_test(true); | |
1248 TestLayerAnimationDelegate delegate; | 1246 TestLayerAnimationDelegate delegate; |
1249 animator->SetDelegate(&delegate); | 1247 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1250 | 1248 |
1251 double start_grayscale(0.0); | 1249 double start_grayscale(0.0); |
1252 double middle_grayscale(0.5); | 1250 double middle_grayscale(0.5); |
1253 double target_grayscale(1.0); | 1251 double target_grayscale(1.0); |
1254 | 1252 |
1255 double start_brightness(0.1); | 1253 double start_brightness(0.1); |
1256 double middle_brightness(0.2); | 1254 double middle_brightness(0.2); |
1257 double target_brightness(0.3); | 1255 double target_brightness(0.3); |
1258 | 1256 |
1259 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1257 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1302 | 1300 |
1303 EXPECT_FALSE(animator->is_animating()); | 1301 EXPECT_FALSE(animator->is_animating()); |
1304 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); | 1302 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); |
1305 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 1303 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
1306 } | 1304 } |
1307 | 1305 |
1308 // Start an animation when there are sequences waiting in the queue. In this | 1306 // Start an animation when there are sequences waiting in the queue. In this |
1309 // case, all pending and running animations should be finished, and the new | 1307 // case, all pending and running animations should be finished, and the new |
1310 // animation started. | 1308 // animation started. |
1311 TEST(LayerAnimatorTest, MultiPreemptByReplacingQueuedAnimations) { | 1309 TEST(LayerAnimatorTest, MultiPreemptByReplacingQueuedAnimations) { |
1312 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1313 animator->set_disable_timer_for_test(true); | |
1314 TestLayerAnimationDelegate delegate; | 1310 TestLayerAnimationDelegate delegate; |
1315 animator->SetDelegate(&delegate); | 1311 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1316 | 1312 |
1317 double start_grayscale(0.0); | 1313 double start_grayscale(0.0); |
1318 double middle_grayscale(0.5); | 1314 double middle_grayscale(0.5); |
1319 double target_grayscale(1.0); | 1315 double target_grayscale(1.0); |
1320 | 1316 |
1321 double start_brightness(0.1); | 1317 double start_brightness(0.1); |
1322 double middle_brightness(0.2); | 1318 double middle_brightness(0.2); |
1323 double target_brightness(0.3); | 1319 double target_brightness(0.3); |
1324 | 1320 |
1325 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1321 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1373 | 1369 |
1374 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); | 1370 animator->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); |
1375 | 1371 |
1376 EXPECT_FALSE(animator->is_animating()); | 1372 EXPECT_FALSE(animator->is_animating()); |
1377 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); | 1373 EXPECT_FLOAT_EQ(delegate.GetGrayscaleForAnimation(), start_grayscale); |
1378 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); | 1374 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), start_brightness); |
1379 } | 1375 } |
1380 //------------------------------------------------------- | 1376 //------------------------------------------------------- |
1381 // Test that non-threaded cyclic sequences continue to animate. | 1377 // Test that non-threaded cyclic sequences continue to animate. |
1382 TEST(LayerAnimatorTest, CyclicSequences) { | 1378 TEST(LayerAnimatorTest, CyclicSequences) { |
1383 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1384 animator->set_disable_timer_for_test(true); | |
1385 TestLayerAnimationDelegate delegate; | 1379 TestLayerAnimationDelegate delegate; |
1386 animator->SetDelegate(&delegate); | 1380 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1387 | 1381 |
1388 double start_brightness(0.0); | 1382 double start_brightness(0.0); |
1389 double target_brightness(1.0); | 1383 double target_brightness(1.0); |
1390 | 1384 |
1391 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1385 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1392 | 1386 |
1393 delegate.SetBrightnessFromAnimation(start_brightness); | 1387 delegate.SetBrightnessFromAnimation(start_brightness); |
1394 | 1388 |
1395 scoped_ptr<LayerAnimationSequence> sequence( | 1389 scoped_ptr<LayerAnimationSequence> sequence( |
1396 new LayerAnimationSequence( | 1390 new LayerAnimationSequence( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1433 EXPECT_TRUE(animator->is_animating()); | 1427 EXPECT_TRUE(animator->is_animating()); |
1434 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); | 1428 EXPECT_FLOAT_EQ(delegate.GetBrightnessForAnimation(), target_brightness); |
1435 | 1429 |
1436 animator->StopAnimatingProperty(LayerAnimationElement::BRIGHTNESS); | 1430 animator->StopAnimatingProperty(LayerAnimationElement::BRIGHTNESS); |
1437 | 1431 |
1438 EXPECT_FALSE(animator->is_animating()); | 1432 EXPECT_FALSE(animator->is_animating()); |
1439 } | 1433 } |
1440 | 1434 |
1441 // Test that threaded cyclic sequences continue to animate. | 1435 // Test that threaded cyclic sequences continue to animate. |
1442 TEST(LayerAnimatorTest, ThreadedCyclicSequences) { | 1436 TEST(LayerAnimatorTest, ThreadedCyclicSequences) { |
| 1437 TestLayerAnimationDelegate delegate; |
1443 LayerAnimatorTestController test_controller( | 1438 LayerAnimatorTestController test_controller( |
1444 LayerAnimator::CreateDefaultAnimator()); | 1439 CreateDefaultTestAnimator(&delegate)); |
1445 LayerAnimator* animator = test_controller.animator(); | 1440 LayerAnimator* animator = test_controller.animator(); |
1446 test_controller.animator()->set_disable_timer_for_test(true); | |
1447 TestLayerAnimationDelegate delegate; | |
1448 test_controller.animator()->SetDelegate(&delegate); | |
1449 | 1441 |
1450 double start_opacity(0.0); | 1442 double start_opacity(0.0); |
1451 double target_opacity(1.0); | 1443 double target_opacity(1.0); |
1452 | 1444 |
1453 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1445 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1454 | 1446 |
1455 delegate.SetOpacityFromAnimation(start_opacity); | 1447 delegate.SetOpacityFromAnimation(start_opacity); |
1456 | 1448 |
1457 scoped_ptr<LayerAnimationSequence> sequence( | 1449 scoped_ptr<LayerAnimationSequence> sequence( |
1458 new LayerAnimationSequence( | 1450 new LayerAnimationSequence( |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 EXPECT_TRUE(test_controller.animator()->is_animating()); | 1519 EXPECT_TRUE(test_controller.animator()->is_animating()); |
1528 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); | 1520 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); |
1529 | 1521 |
1530 test_controller.animator()->StopAnimatingProperty( | 1522 test_controller.animator()->StopAnimatingProperty( |
1531 LayerAnimationElement::OPACITY); | 1523 LayerAnimationElement::OPACITY); |
1532 | 1524 |
1533 EXPECT_FALSE(test_controller.animator()->is_animating()); | 1525 EXPECT_FALSE(test_controller.animator()->is_animating()); |
1534 } | 1526 } |
1535 | 1527 |
1536 TEST(LayerAnimatorTest, AddObserverExplicit) { | 1528 TEST(LayerAnimatorTest, AddObserverExplicit) { |
1537 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1538 animator->set_disable_timer_for_test(true); | |
1539 TestLayerAnimationObserver observer; | 1529 TestLayerAnimationObserver observer; |
1540 TestLayerAnimationDelegate delegate; | 1530 TestLayerAnimationDelegate delegate; |
1541 animator->SetDelegate(&delegate); | 1531 scoped_refptr<LayerAnimator> animator( |
1542 animator->AddObserver(&observer); | 1532 CreateDefaultTestAnimator(&delegate, &observer)); |
1543 observer.set_requires_notification_when_animator_destroyed(true); | 1533 observer.set_requires_notification_when_animator_destroyed(true); |
1544 | 1534 |
1545 EXPECT_TRUE(!observer.last_ended_sequence()); | 1535 EXPECT_TRUE(!observer.last_ended_sequence()); |
1546 | 1536 |
1547 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1537 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1548 | 1538 |
1549 delegate.SetBrightnessFromAnimation(0.0f); | 1539 delegate.SetBrightnessFromAnimation(0.0f); |
1550 | 1540 |
1551 LayerAnimationSequence* sequence = new LayerAnimationSequence( | 1541 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
1552 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); | 1542 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); |
(...skipping 15 matching lines...) Expand all Loading... |
1568 animator->StartAnimation(sequence); | 1558 animator->StartAnimation(sequence); |
1569 | 1559 |
1570 animator = NULL; | 1560 animator = NULL; |
1571 | 1561 |
1572 EXPECT_EQ(observer.last_aborted_sequence(), sequence); | 1562 EXPECT_EQ(observer.last_aborted_sequence(), sequence); |
1573 } | 1563 } |
1574 | 1564 |
1575 // Tests that an observer added to a scoped settings object is still notified | 1565 // Tests that an observer added to a scoped settings object is still notified |
1576 // when the object goes out of scope. | 1566 // when the object goes out of scope. |
1577 TEST(LayerAnimatorTest, ImplicitAnimationObservers) { | 1567 TEST(LayerAnimatorTest, ImplicitAnimationObservers) { |
1578 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1568 TestLayerAnimationDelegate delegate; |
1579 animator->set_disable_timer_for_test(true); | 1569 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1580 TestImplicitAnimationObserver observer(false); | 1570 TestImplicitAnimationObserver observer(false); |
1581 TestLayerAnimationDelegate delegate; | |
1582 animator->SetDelegate(&delegate); | |
1583 | 1571 |
1584 EXPECT_FALSE(observer.animations_completed()); | 1572 EXPECT_FALSE(observer.animations_completed()); |
1585 animator->SetBrightness(1.0f); | 1573 animator->SetBrightness(1.0f); |
1586 | 1574 |
1587 { | 1575 { |
1588 ScopedLayerAnimationSettings settings(animator.get()); | 1576 ScopedLayerAnimationSettings settings(animator.get()); |
1589 settings.AddObserver(&observer); | 1577 settings.AddObserver(&observer); |
1590 animator->SetBrightness(0.0f); | 1578 animator->SetBrightness(0.0f); |
1591 } | 1579 } |
1592 | 1580 |
1593 EXPECT_FALSE(observer.animations_completed()); | 1581 EXPECT_FALSE(observer.animations_completed()); |
1594 base::TimeTicks start_time = animator->last_step_time(); | 1582 base::TimeTicks start_time = animator->last_step_time(); |
1595 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 1583 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
1596 EXPECT_TRUE(observer.animations_completed()); | 1584 EXPECT_TRUE(observer.animations_completed()); |
1597 EXPECT_TRUE(observer.WasAnimationCompletedForProperty( | 1585 EXPECT_TRUE(observer.WasAnimationCompletedForProperty( |
1598 LayerAnimationElement::BRIGHTNESS)); | 1586 LayerAnimationElement::BRIGHTNESS)); |
1599 EXPECT_FLOAT_EQ(0.0f, delegate.GetBrightnessForAnimation()); | 1587 EXPECT_FLOAT_EQ(0.0f, delegate.GetBrightnessForAnimation()); |
1600 } | 1588 } |
1601 | 1589 |
1602 // Tests that an observer added to a scoped settings object is still notified | 1590 // Tests that an observer added to a scoped settings object is still notified |
1603 // when the object goes out of scope due to the animation being interrupted. | 1591 // when the object goes out of scope due to the animation being interrupted. |
1604 TEST(LayerAnimatorTest, InterruptedImplicitAnimationObservers) { | 1592 TEST(LayerAnimatorTest, InterruptedImplicitAnimationObservers) { |
1605 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1593 TestLayerAnimationDelegate delegate; |
1606 animator->set_disable_timer_for_test(true); | 1594 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1607 TestImplicitAnimationObserver observer(false); | 1595 TestImplicitAnimationObserver observer(false); |
1608 TestLayerAnimationDelegate delegate; | |
1609 animator->SetDelegate(&delegate); | |
1610 | 1596 |
1611 EXPECT_FALSE(observer.animations_completed()); | 1597 EXPECT_FALSE(observer.animations_completed()); |
1612 animator->SetBrightness(1.0f); | 1598 animator->SetBrightness(1.0f); |
1613 | 1599 |
1614 { | 1600 { |
1615 ScopedLayerAnimationSettings settings(animator.get()); | 1601 ScopedLayerAnimationSettings settings(animator.get()); |
1616 settings.AddObserver(&observer); | 1602 settings.AddObserver(&observer); |
1617 animator->SetBrightness(0.0f); | 1603 animator->SetBrightness(0.0f); |
1618 } | 1604 } |
1619 | 1605 |
(...skipping 26 matching lines...) Expand all Loading... |
1646 animator->Step(now + base::TimeDelta::FromSeconds(1)); | 1632 animator->Step(now + base::TimeDelta::FromSeconds(1)); |
1647 EXPECT_FALSE(destruction_observer.IsAnimatorDeleted()); | 1633 EXPECT_FALSE(destruction_observer.IsAnimatorDeleted()); |
1648 } | 1634 } |
1649 // ScopedLayerAnimationSettings was destroyed, so Animator should be deleted. | 1635 // ScopedLayerAnimationSettings was destroyed, so Animator should be deleted. |
1650 EXPECT_TRUE(destruction_observer.IsAnimatorDeleted()); | 1636 EXPECT_TRUE(destruction_observer.IsAnimatorDeleted()); |
1651 } | 1637 } |
1652 | 1638 |
1653 // Tests that an observer added to a scoped settings object is not notified | 1639 // Tests that an observer added to a scoped settings object is not notified |
1654 // when the animator is destroyed unless explicitly requested. | 1640 // when the animator is destroyed unless explicitly requested. |
1655 TEST(LayerAnimatorTest, ImplicitObserversAtAnimatorDestruction) { | 1641 TEST(LayerAnimatorTest, ImplicitObserversAtAnimatorDestruction) { |
1656 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1642 TestLayerAnimationDelegate delegate; |
1657 animator->set_disable_timer_for_test(true); | 1643 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1658 TestImplicitAnimationObserver observer_notify(true); | 1644 TestImplicitAnimationObserver observer_notify(true); |
1659 TestImplicitAnimationObserver observer_do_not_notify(false); | 1645 TestImplicitAnimationObserver observer_do_not_notify(false); |
1660 TestLayerAnimationDelegate delegate; | |
1661 animator->SetDelegate(&delegate); | |
1662 | 1646 |
1663 EXPECT_FALSE(observer_notify.animations_completed()); | 1647 EXPECT_FALSE(observer_notify.animations_completed()); |
1664 EXPECT_FALSE(observer_do_not_notify.animations_completed()); | 1648 EXPECT_FALSE(observer_do_not_notify.animations_completed()); |
1665 | 1649 |
1666 animator->SetBrightness(1.0f); | 1650 animator->SetBrightness(1.0f); |
1667 | 1651 |
1668 { | 1652 { |
1669 ScopedLayerAnimationSettings settings(animator.get()); | 1653 ScopedLayerAnimationSettings settings(animator.get()); |
1670 settings.AddObserver(&observer_notify); | 1654 settings.AddObserver(&observer_notify); |
1671 settings.AddObserver(&observer_do_not_notify); | 1655 settings.AddObserver(&observer_do_not_notify); |
1672 animator->SetBrightness(0.0f); | 1656 animator->SetBrightness(0.0f); |
1673 } | 1657 } |
1674 | 1658 |
1675 EXPECT_FALSE(observer_notify.animations_completed()); | 1659 EXPECT_FALSE(observer_notify.animations_completed()); |
1676 EXPECT_FALSE(observer_do_not_notify.animations_completed()); | 1660 EXPECT_FALSE(observer_do_not_notify.animations_completed()); |
1677 animator = NULL; | 1661 animator = NULL; |
1678 EXPECT_TRUE(observer_notify.animations_completed()); | 1662 EXPECT_TRUE(observer_notify.animations_completed()); |
1679 EXPECT_TRUE(observer_notify.WasAnimationAbortedForProperty( | 1663 EXPECT_TRUE(observer_notify.WasAnimationAbortedForProperty( |
1680 LayerAnimationElement::BRIGHTNESS)); | 1664 LayerAnimationElement::BRIGHTNESS)); |
1681 EXPECT_FALSE(observer_do_not_notify.animations_completed()); | 1665 EXPECT_FALSE(observer_do_not_notify.animations_completed()); |
1682 } | 1666 } |
1683 | 1667 |
1684 TEST(LayerAnimatorTest, AbortedAnimationStatusInImplicitObservers) { | 1668 TEST(LayerAnimatorTest, AbortedAnimationStatusInImplicitObservers) { |
1685 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1669 TestLayerAnimationDelegate delegate; |
1686 animator->set_disable_timer_for_test(true); | 1670 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1687 TestImplicitAnimationObserver observer(false); | 1671 TestImplicitAnimationObserver observer(false); |
1688 TestLayerAnimationDelegate delegate; | |
1689 animator->SetDelegate(&delegate); | |
1690 | 1672 |
1691 EXPECT_FALSE(observer.animations_completed()); | 1673 EXPECT_FALSE(observer.animations_completed()); |
1692 animator->SetBrightness(1.0f); | 1674 animator->SetBrightness(1.0f); |
1693 | 1675 |
1694 { | 1676 { |
1695 ScopedLayerAnimationSettings settings(animator.get()); | 1677 ScopedLayerAnimationSettings settings(animator.get()); |
1696 settings.AddObserver(&observer); | 1678 settings.AddObserver(&observer); |
1697 animator->SetBrightness(0.0f); | 1679 animator->SetBrightness(0.0f); |
1698 } | 1680 } |
1699 EXPECT_FALSE(observer.animations_completed()); | 1681 EXPECT_FALSE(observer.animations_completed()); |
(...skipping 15 matching lines...) Expand all Loading... |
1715 | 1697 |
1716 animator->AbortAllAnimations(); | 1698 animator->AbortAllAnimations(); |
1717 EXPECT_TRUE(observer.animations_completed()); | 1699 EXPECT_TRUE(observer.animations_completed()); |
1718 EXPECT_TRUE(observer.WasAnimationAbortedForProperty( | 1700 EXPECT_TRUE(observer.WasAnimationAbortedForProperty( |
1719 LayerAnimationElement::BRIGHTNESS)); | 1701 LayerAnimationElement::BRIGHTNESS)); |
1720 EXPECT_TRUE(observer.WasAnimationAbortedForProperty( | 1702 EXPECT_TRUE(observer.WasAnimationAbortedForProperty( |
1721 LayerAnimationElement::OPACITY)); | 1703 LayerAnimationElement::OPACITY)); |
1722 } | 1704 } |
1723 | 1705 |
1724 TEST(LayerAnimatorTest, RemoveObserverShouldRemoveFromSequences) { | 1706 TEST(LayerAnimatorTest, RemoveObserverShouldRemoveFromSequences) { |
1725 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1707 TestLayerAnimationDelegate delegate; |
1726 animator->set_disable_timer_for_test(true); | 1708 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1727 TestLayerAnimationObserver observer; | 1709 TestLayerAnimationObserver observer; |
1728 TestLayerAnimationObserver removed_observer; | 1710 TestLayerAnimationObserver removed_observer; |
1729 TestLayerAnimationDelegate delegate; | |
1730 animator->SetDelegate(&delegate); | |
1731 | 1711 |
1732 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1712 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1733 | 1713 |
1734 LayerAnimationSequence* sequence = new LayerAnimationSequence( | 1714 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
1735 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); | 1715 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); |
1736 | 1716 |
1737 sequence->AddObserver(&observer); | 1717 sequence->AddObserver(&observer); |
1738 sequence->AddObserver(&removed_observer); | 1718 sequence->AddObserver(&removed_observer); |
1739 | 1719 |
1740 animator->StartAnimation(sequence); | 1720 animator->StartAnimation(sequence); |
1741 | 1721 |
1742 EXPECT_EQ(observer.last_scheduled_sequence(), sequence); | 1722 EXPECT_EQ(observer.last_scheduled_sequence(), sequence); |
1743 EXPECT_TRUE(!observer.last_ended_sequence()); | 1723 EXPECT_TRUE(!observer.last_ended_sequence()); |
1744 EXPECT_EQ(removed_observer.last_scheduled_sequence(), sequence); | 1724 EXPECT_EQ(removed_observer.last_scheduled_sequence(), sequence); |
1745 EXPECT_TRUE(!removed_observer.last_ended_sequence()); | 1725 EXPECT_TRUE(!removed_observer.last_ended_sequence()); |
1746 | 1726 |
1747 // This should stop the observer from observing sequence. | 1727 // This should stop the observer from observing sequence. |
1748 animator->RemoveObserver(&removed_observer); | 1728 animator->RemoveObserver(&removed_observer); |
1749 | 1729 |
1750 base::TimeTicks start_time = animator->last_step_time(); | 1730 base::TimeTicks start_time = animator->last_step_time(); |
1751 | 1731 |
1752 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 1732 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
1753 | 1733 |
1754 EXPECT_EQ(observer.last_ended_sequence(), sequence); | 1734 EXPECT_EQ(observer.last_ended_sequence(), sequence); |
1755 EXPECT_TRUE(!removed_observer.last_ended_sequence()); | 1735 EXPECT_TRUE(!removed_observer.last_ended_sequence()); |
1756 } | 1736 } |
1757 | 1737 |
1758 TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) { | 1738 TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) { |
1759 TestLayerAnimationDelegate delegate; | 1739 TestLayerAnimationDelegate delegate; |
1760 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
1761 animator->set_disable_timer_for_test(true); | |
1762 | |
1763 scoped_ptr<TestLayerAnimationObserver> observer( | 1740 scoped_ptr<TestLayerAnimationObserver> observer( |
1764 new TestLayerAnimationObserver); | 1741 new TestLayerAnimationObserver); |
1765 animator->SetDelegate(&delegate); | 1742 scoped_refptr<LayerAnimator> animator( |
1766 animator->AddObserver(observer.get()); | 1743 CreateDefaultTestAnimator(&delegate, observer.get())); |
1767 | 1744 |
1768 delegate.SetOpacityFromAnimation(0.0f); | 1745 delegate.SetOpacityFromAnimation(0.0f); |
1769 | 1746 |
1770 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1747 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1771 LayerAnimationSequence* sequence = new LayerAnimationSequence( | 1748 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
1772 LayerAnimationElement::CreateOpacityElement(1.0f, delta)); | 1749 LayerAnimationElement::CreateOpacityElement(1.0f, delta)); |
1773 | 1750 |
1774 animator->StartAnimation(sequence); | 1751 animator->StartAnimation(sequence); |
1775 | 1752 |
1776 // |observer| should be attached to |sequence|. | 1753 // |observer| should be attached to |sequence|. |
1777 EXPECT_TRUE(sequence->observers_.might_have_observers()); | 1754 EXPECT_TRUE(sequence->observers_.might_have_observers()); |
1778 | 1755 |
1779 // Now, release |observer| | 1756 // Now, release |observer| |
1780 observer.reset(); | 1757 observer.reset(); |
1781 | 1758 |
1782 // And |sequence| should no longer be attached to |observer|. | 1759 // And |sequence| should no longer be attached to |observer|. |
1783 EXPECT_FALSE(sequence->observers_.might_have_observers()); | 1760 EXPECT_FALSE(sequence->observers_.might_have_observers()); |
1784 } | 1761 } |
1785 | 1762 |
1786 TEST(LayerAnimatorTest, ObserverAttachedAfterAnimationStarted) { | 1763 TEST(LayerAnimatorTest, ObserverAttachedAfterAnimationStarted) { |
1787 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1764 TestLayerAnimationDelegate delegate; |
1788 animator->set_disable_timer_for_test(true); | 1765 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1789 | 1766 |
1790 TestImplicitAnimationObserver observer(false); | 1767 TestImplicitAnimationObserver observer(false); |
1791 TestLayerAnimationDelegate delegate; | |
1792 animator->SetDelegate(&delegate); | |
1793 | 1768 |
1794 delegate.SetBrightnessFromAnimation(0.0f); | 1769 delegate.SetBrightnessFromAnimation(0.0f); |
1795 | 1770 |
1796 { | 1771 { |
1797 ScopedLayerAnimationSettings setter(animator.get()); | 1772 ScopedLayerAnimationSettings setter(animator.get()); |
1798 | 1773 |
1799 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1774 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1800 LayerAnimationSequence* sequence = new LayerAnimationSequence( | 1775 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
1801 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); | 1776 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); |
1802 | 1777 |
1803 animator->StartAnimation(sequence); | 1778 animator->StartAnimation(sequence); |
1804 base::TimeTicks start_time = animator->last_step_time(); | 1779 base::TimeTicks start_time = animator->last_step_time(); |
1805 animator->Step(start_time + base::TimeDelta::FromMilliseconds(500)); | 1780 animator->Step(start_time + base::TimeDelta::FromMilliseconds(500)); |
1806 | 1781 |
1807 setter.AddObserver(&observer); | 1782 setter.AddObserver(&observer); |
1808 | 1783 |
1809 // Start observing an in-flight animation. | 1784 // Start observing an in-flight animation. |
1810 sequence->AddObserver(&observer); | 1785 sequence->AddObserver(&observer); |
1811 | 1786 |
1812 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 1787 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
1813 } | 1788 } |
1814 | 1789 |
1815 EXPECT_TRUE(observer.animations_completed()); | 1790 EXPECT_TRUE(observer.animations_completed()); |
1816 EXPECT_TRUE(observer.WasAnimationCompletedForProperty( | 1791 EXPECT_TRUE(observer.WasAnimationCompletedForProperty( |
1817 LayerAnimationElement::BRIGHTNESS)); | 1792 LayerAnimationElement::BRIGHTNESS)); |
1818 } | 1793 } |
1819 | 1794 |
1820 TEST(LayerAnimatorTest, ObserverDetachedBeforeAnimationFinished) { | 1795 TEST(LayerAnimatorTest, ObserverDetachedBeforeAnimationFinished) { |
1821 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 1796 TestLayerAnimationDelegate delegate; |
1822 animator->set_disable_timer_for_test(true); | 1797 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1823 | 1798 |
1824 TestImplicitAnimationObserver observer(false); | 1799 TestImplicitAnimationObserver observer(false); |
1825 TestLayerAnimationDelegate delegate; | |
1826 animator->SetDelegate(&delegate); | |
1827 | 1800 |
1828 delegate.SetBrightnessFromAnimation(0.0f); | 1801 delegate.SetBrightnessFromAnimation(0.0f); |
1829 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1802 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1830 LayerAnimationSequence* sequence = new LayerAnimationSequence( | 1803 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
1831 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); | 1804 LayerAnimationElement::CreateBrightnessElement(1.0f, delta)); |
1832 | 1805 |
1833 { | 1806 { |
1834 ScopedLayerAnimationSettings setter(animator.get()); | 1807 ScopedLayerAnimationSettings setter(animator.get()); |
1835 setter.AddObserver(&observer); | 1808 setter.AddObserver(&observer); |
1836 | 1809 |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2010 // brightness animation. |observer| should have stopped the bounds animation | 1983 // brightness animation. |observer| should have stopped the bounds animation |
2011 // as a result. | 1984 // as a result. |
2012 ASSERT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); | 1985 ASSERT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); |
2013 | 1986 |
2014 animator->RemoveObserver(observer.get()); | 1987 animator->RemoveObserver(observer.get()); |
2015 } | 1988 } |
2016 | 1989 |
2017 // Check that setting a property during an animation with a default animator | 1990 // Check that setting a property during an animation with a default animator |
2018 // cancels the original animation. | 1991 // cancels the original animation. |
2019 TEST(LayerAnimatorTest, SettingPropertyDuringAnAnimation) { | 1992 TEST(LayerAnimatorTest, SettingPropertyDuringAnAnimation) { |
2020 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
2021 animator->set_disable_timer_for_test(true); | |
2022 TestLayerAnimationDelegate delegate; | 1993 TestLayerAnimationDelegate delegate; |
2023 animator->SetDelegate(&delegate); | 1994 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2024 | 1995 |
2025 double start_opacity(0.0); | 1996 double start_opacity(0.0); |
2026 double target_opacity(1.0); | 1997 double target_opacity(1.0); |
2027 | 1998 |
2028 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1999 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
2029 | 2000 |
2030 delegate.SetOpacityFromAnimation(start_opacity); | 2001 delegate.SetOpacityFromAnimation(start_opacity); |
2031 | 2002 |
2032 scoped_ptr<LayerAnimationSequence> sequence( | 2003 scoped_ptr<LayerAnimationSequence> sequence( |
2033 new LayerAnimationSequence( | 2004 new LayerAnimationSequence( |
2034 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); | 2005 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); |
2035 | 2006 |
2036 animator->StartAnimation(sequence.release()); | 2007 animator->StartAnimation(sequence.release()); |
2037 | 2008 |
2038 animator->SetOpacity(0.5); | 2009 animator->SetOpacity(0.5); |
2039 | 2010 |
2040 EXPECT_FALSE(animator->is_animating()); | 2011 EXPECT_FALSE(animator->is_animating()); |
2041 EXPECT_EQ(0.5, animator->GetTargetOpacity()); | 2012 EXPECT_EQ(0.5, animator->GetTargetOpacity()); |
2042 } | 2013 } |
2043 | 2014 |
2044 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the | 2015 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the |
2045 // second sequence to be leaked. | 2016 // second sequence to be leaked. |
2046 TEST(LayerAnimatorTest, ImmediatelySettingNewTargetDoesNotLeak) { | 2017 TEST(LayerAnimatorTest, ImmediatelySettingNewTargetDoesNotLeak) { |
2047 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 2018 TestLayerAnimationDelegate delegate; |
| 2019 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2048 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); | 2020 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); |
2049 animator->set_disable_timer_for_test(true); | |
2050 TestLayerAnimationDelegate delegate; | |
2051 animator->SetDelegate(&delegate); | |
2052 | 2021 |
2053 gfx::Rect start_bounds(0, 0, 50, 50); | 2022 gfx::Rect start_bounds(0, 0, 50, 50); |
2054 gfx::Rect middle_bounds(10, 10, 100, 100); | 2023 gfx::Rect middle_bounds(10, 10, 100, 100); |
2055 gfx::Rect target_bounds(5, 5, 5, 5); | 2024 gfx::Rect target_bounds(5, 5, 5, 5); |
2056 | 2025 |
2057 delegate.SetBoundsFromAnimation(start_bounds); | 2026 delegate.SetBoundsFromAnimation(start_bounds); |
2058 | 2027 |
2059 { | 2028 { |
2060 // start an implicit bounds animation. | 2029 // start an implicit bounds animation. |
2061 ScopedLayerAnimationSettings settings(animator.get()); | 2030 ScopedLayerAnimationSettings settings(animator.get()); |
(...skipping 16 matching lines...) Expand all Loading... |
2078 animator->StartAnimation(sequence.release()); | 2047 animator->StartAnimation(sequence.release()); |
2079 | 2048 |
2080 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); | 2049 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); |
2081 EXPECT_EQ(0, num_live_instances); | 2050 EXPECT_EQ(0, num_live_instances); |
2082 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 2051 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
2083 } | 2052 } |
2084 | 2053 |
2085 // Verifies GetTargetOpacity() works when multiple sequences are scheduled. | 2054 // Verifies GetTargetOpacity() works when multiple sequences are scheduled. |
2086 TEST(LayerAnimatorTest, GetTargetOpacity) { | 2055 TEST(LayerAnimatorTest, GetTargetOpacity) { |
2087 TestLayerAnimationDelegate delegate; | 2056 TestLayerAnimationDelegate delegate; |
2088 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 2057 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2089 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); | 2058 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); |
2090 animator->set_disable_timer_for_test(true); | |
2091 animator->SetDelegate(&delegate); | |
2092 | 2059 |
2093 delegate.SetOpacityFromAnimation(0.0); | 2060 delegate.SetOpacityFromAnimation(0.0); |
2094 | 2061 |
2095 { | 2062 { |
2096 ScopedLayerAnimationSettings settings(animator.get()); | 2063 ScopedLayerAnimationSettings settings(animator.get()); |
2097 animator->SetOpacity(0.5); | 2064 animator->SetOpacity(0.5); |
2098 EXPECT_EQ(0.5, animator->GetTargetOpacity()); | 2065 EXPECT_EQ(0.5, animator->GetTargetOpacity()); |
2099 | 2066 |
2100 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. | 2067 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. |
2101 animator->SetOpacity(1.0); | 2068 animator->SetOpacity(1.0); |
2102 EXPECT_EQ(1.0, animator->GetTargetOpacity()); | 2069 EXPECT_EQ(1.0, animator->GetTargetOpacity()); |
2103 } | 2070 } |
2104 } | 2071 } |
2105 | 2072 |
2106 // Verifies GetTargetBrightness() works when multiple sequences are scheduled. | 2073 // Verifies GetTargetBrightness() works when multiple sequences are scheduled. |
2107 TEST(LayerAnimatorTest, GetTargetBrightness) { | 2074 TEST(LayerAnimatorTest, GetTargetBrightness) { |
2108 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 2075 TestLayerAnimationDelegate delegate; |
| 2076 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2109 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); | 2077 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); |
2110 animator->set_disable_timer_for_test(true); | |
2111 TestLayerAnimationDelegate delegate; | |
2112 animator->SetDelegate(&delegate); | |
2113 | 2078 |
2114 delegate.SetBrightnessFromAnimation(0.0); | 2079 delegate.SetBrightnessFromAnimation(0.0); |
2115 | 2080 |
2116 { | 2081 { |
2117 ScopedLayerAnimationSettings settings(animator.get()); | 2082 ScopedLayerAnimationSettings settings(animator.get()); |
2118 animator->SetBrightness(0.5); | 2083 animator->SetBrightness(0.5); |
2119 EXPECT_EQ(0.5, animator->GetTargetBrightness()); | 2084 EXPECT_EQ(0.5, animator->GetTargetBrightness()); |
2120 | 2085 |
2121 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. | 2086 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. |
2122 animator->SetBrightness(1.0); | 2087 animator->SetBrightness(1.0); |
2123 EXPECT_EQ(1.0, animator->GetTargetBrightness()); | 2088 EXPECT_EQ(1.0, animator->GetTargetBrightness()); |
2124 } | 2089 } |
2125 } | 2090 } |
2126 | 2091 |
2127 // Verifies GetTargetGrayscale() works when multiple sequences are scheduled. | 2092 // Verifies GetTargetGrayscale() works when multiple sequences are scheduled. |
2128 TEST(LayerAnimatorTest, GetTargetGrayscale) { | 2093 TEST(LayerAnimatorTest, GetTargetGrayscale) { |
2129 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 2094 TestLayerAnimationDelegate delegate; |
| 2095 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2130 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); | 2096 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); |
2131 animator->set_disable_timer_for_test(true); | |
2132 TestLayerAnimationDelegate delegate; | |
2133 animator->SetDelegate(&delegate); | |
2134 | 2097 |
2135 delegate.SetGrayscaleFromAnimation(0.0); | 2098 delegate.SetGrayscaleFromAnimation(0.0); |
2136 | 2099 |
2137 { | 2100 { |
2138 ScopedLayerAnimationSettings settings(animator.get()); | 2101 ScopedLayerAnimationSettings settings(animator.get()); |
2139 animator->SetGrayscale(0.5); | 2102 animator->SetGrayscale(0.5); |
2140 EXPECT_EQ(0.5, animator->GetTargetGrayscale()); | 2103 EXPECT_EQ(0.5, animator->GetTargetGrayscale()); |
2141 | 2104 |
2142 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. | 2105 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. |
2143 animator->SetGrayscale(1.0); | 2106 animator->SetGrayscale(1.0); |
2144 EXPECT_EQ(1.0, animator->GetTargetGrayscale()); | 2107 EXPECT_EQ(1.0, animator->GetTargetGrayscale()); |
2145 } | 2108 } |
2146 } | 2109 } |
2147 | 2110 |
2148 // Verifies color property is modified appropriately. | 2111 // Verifies color property is modified appropriately. |
2149 TEST(LayerAnimatorTest, Color) { | 2112 TEST(LayerAnimatorTest, Color) { |
2150 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | |
2151 animator->set_disable_timer_for_test(true); | |
2152 TestLayerAnimationDelegate delegate; | 2113 TestLayerAnimationDelegate delegate; |
2153 animator->SetDelegate(&delegate); | 2114 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2154 | 2115 |
2155 SkColor start_color = SkColorSetARGB( 64, 20, 40, 60); | 2116 SkColor start_color = SkColorSetARGB( 64, 20, 40, 60); |
2156 SkColor middle_color = SkColorSetARGB(128, 35, 70, 120); | 2117 SkColor middle_color = SkColorSetARGB(128, 35, 70, 120); |
2157 SkColor target_color = SkColorSetARGB(192, 40, 80, 140); | 2118 SkColor target_color = SkColorSetARGB(192, 40, 80, 140); |
2158 | 2119 |
2159 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 2120 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
2160 | 2121 |
2161 delegate.SetColorFromAnimation(start_color); | 2122 delegate.SetColorFromAnimation(start_color); |
2162 | 2123 |
2163 animator->ScheduleAnimation( | 2124 animator->ScheduleAnimation( |
(...skipping 14 matching lines...) Expand all Loading... |
2178 | 2139 |
2179 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 2140 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
2180 | 2141 |
2181 EXPECT_FALSE(animator->is_animating()); | 2142 EXPECT_FALSE(animator->is_animating()); |
2182 EXPECT_EQ(ColorToString(target_color), | 2143 EXPECT_EQ(ColorToString(target_color), |
2183 ColorToString(delegate.GetColorForAnimation())); | 2144 ColorToString(delegate.GetColorForAnimation())); |
2184 } | 2145 } |
2185 | 2146 |
2186 // Verifies SchedulePauseForProperties(). | 2147 // Verifies SchedulePauseForProperties(). |
2187 TEST(LayerAnimatorTest, SchedulePauseForProperties) { | 2148 TEST(LayerAnimatorTest, SchedulePauseForProperties) { |
2188 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 2149 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator()); |
2189 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); | 2150 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); |
2190 animator->SchedulePauseForProperties( | 2151 animator->SchedulePauseForProperties( |
2191 base::TimeDelta::FromMilliseconds(100), | 2152 base::TimeDelta::FromMilliseconds(100), |
2192 LayerAnimationElement::TRANSFORM | LayerAnimationElement::BOUNDS); | 2153 LayerAnimationElement::TRANSFORM | LayerAnimationElement::BOUNDS); |
2193 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::TRANSFORM)); | 2154 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::TRANSFORM)); |
2194 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); | 2155 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); |
2195 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::OPACITY)); | 2156 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::OPACITY)); |
2196 } | 2157 } |
2197 | 2158 |
2198 | 2159 |
2199 class AnimatorOwner { | 2160 class AnimatorOwner { |
2200 public: | 2161 public: |
2201 AnimatorOwner() | 2162 AnimatorOwner() : animator_(CreateDefaultTestAnimator()) {} |
2202 : animator_(LayerAnimator::CreateDefaultAnimator()) { | |
2203 } | |
2204 | 2163 |
2205 LayerAnimator* animator() { return animator_.get(); } | 2164 LayerAnimator* animator() { return animator_.get(); } |
2206 | 2165 |
2207 private: | 2166 private: |
2208 scoped_refptr<LayerAnimator> animator_; | 2167 scoped_refptr<LayerAnimator> animator_; |
2209 | 2168 |
2210 DISALLOW_COPY_AND_ASSIGN(AnimatorOwner); | 2169 DISALLOW_COPY_AND_ASSIGN(AnimatorOwner); |
2211 }; | 2170 }; |
2212 | 2171 |
2213 class DeletingObserver : public LayerAnimationObserver { | 2172 class DeletingObserver : public LayerAnimationObserver { |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2274 | 2233 |
2275 DISALLOW_COPY_AND_ASSIGN(DeletingObserver); | 2234 DISALLOW_COPY_AND_ASSIGN(DeletingObserver); |
2276 }; | 2235 }; |
2277 | 2236 |
2278 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterFinishingAnimation) { | 2237 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterFinishingAnimation) { |
2279 bool observer_was_deleted = false; | 2238 bool observer_was_deleted = false; |
2280 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); | 2239 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); |
2281 observer->set_delete_on_animation_ended(true); | 2240 observer->set_delete_on_animation_ended(true); |
2282 observer->set_delete_on_animation_aborted(true); | 2241 observer->set_delete_on_animation_aborted(true); |
2283 LayerAnimator* animator = observer->animator(); | 2242 LayerAnimator* animator = observer->animator(); |
2284 animator->set_disable_timer_for_test(true); | |
2285 TestLayerAnimationDelegate delegate; | 2243 TestLayerAnimationDelegate delegate; |
2286 animator->SetDelegate(&delegate); | 2244 animator->SetDelegate(&delegate); |
2287 | 2245 |
2288 delegate.SetBrightnessFromAnimation(0.0f); | 2246 delegate.SetBrightnessFromAnimation(0.0f); |
2289 | 2247 |
2290 gfx::Rect start_bounds(0, 0, 50, 50); | 2248 gfx::Rect start_bounds(0, 0, 50, 50); |
2291 gfx::Rect target_bounds(10, 10, 100, 100); | 2249 gfx::Rect target_bounds(10, 10, 100, 100); |
2292 | 2250 |
2293 delegate.SetBoundsFromAnimation(start_bounds); | 2251 delegate.SetBoundsFromAnimation(start_bounds); |
2294 | 2252 |
(...skipping 12 matching lines...) Expand all Loading... |
2307 | 2265 |
2308 EXPECT_TRUE(observer_was_deleted); | 2266 EXPECT_TRUE(observer_was_deleted); |
2309 } | 2267 } |
2310 | 2268 |
2311 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterStoppingAnimating) { | 2269 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterStoppingAnimating) { |
2312 bool observer_was_deleted = false; | 2270 bool observer_was_deleted = false; |
2313 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); | 2271 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); |
2314 observer->set_delete_on_animation_ended(true); | 2272 observer->set_delete_on_animation_ended(true); |
2315 observer->set_delete_on_animation_aborted(true); | 2273 observer->set_delete_on_animation_aborted(true); |
2316 LayerAnimator* animator = observer->animator(); | 2274 LayerAnimator* animator = observer->animator(); |
2317 animator->set_disable_timer_for_test(true); | |
2318 TestLayerAnimationDelegate delegate; | 2275 TestLayerAnimationDelegate delegate; |
2319 animator->SetDelegate(&delegate); | 2276 animator->SetDelegate(&delegate); |
2320 | 2277 |
2321 delegate.SetOpacityFromAnimation(0.0f); | 2278 delegate.SetOpacityFromAnimation(0.0f); |
2322 | 2279 |
2323 gfx::Rect start_bounds(0, 0, 50, 50); | 2280 gfx::Rect start_bounds(0, 0, 50, 50); |
2324 gfx::Rect target_bounds(10, 10, 100, 100); | 2281 gfx::Rect target_bounds(10, 10, 100, 100); |
2325 | 2282 |
2326 delegate.SetBoundsFromAnimation(start_bounds); | 2283 delegate.SetBoundsFromAnimation(start_bounds); |
2327 | 2284 |
(...skipping 11 matching lines...) Expand all Loading... |
2339 | 2296 |
2340 EXPECT_TRUE(observer_was_deleted); | 2297 EXPECT_TRUE(observer_was_deleted); |
2341 } | 2298 } |
2342 | 2299 |
2343 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterScheduling) { | 2300 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterScheduling) { |
2344 bool observer_was_deleted = false; | 2301 bool observer_was_deleted = false; |
2345 TestLayerAnimationDelegate delegate; | 2302 TestLayerAnimationDelegate delegate; |
2346 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); | 2303 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); |
2347 observer->set_delete_on_animation_scheduled(true); | 2304 observer->set_delete_on_animation_scheduled(true); |
2348 LayerAnimator* animator = observer->animator(); | 2305 LayerAnimator* animator = observer->animator(); |
2349 animator->set_disable_timer_for_test(true); | |
2350 animator->SetDelegate(&delegate); | 2306 animator->SetDelegate(&delegate); |
2351 | 2307 |
2352 delegate.SetOpacityFromAnimation(0.0f); | 2308 delegate.SetOpacityFromAnimation(0.0f); |
2353 | 2309 |
2354 gfx::Rect start_bounds(0, 0, 50, 50); | 2310 gfx::Rect start_bounds(0, 0, 50, 50); |
2355 gfx::Rect target_bounds(10, 10, 100, 100); | 2311 gfx::Rect target_bounds(10, 10, 100, 100); |
2356 | 2312 |
2357 delegate.SetBoundsFromAnimation(start_bounds); | 2313 delegate.SetBoundsFromAnimation(start_bounds); |
2358 | 2314 |
2359 std::vector<LayerAnimationSequence*> to_start; | 2315 std::vector<LayerAnimationSequence*> to_start; |
(...skipping 12 matching lines...) Expand all Loading... |
2372 } | 2328 } |
2373 | 2329 |
2374 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterAborted) { | 2330 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterAborted) { |
2375 bool observer_was_deleted = false; | 2331 bool observer_was_deleted = false; |
2376 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); | 2332 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); |
2377 TestLayerAnimationDelegate delegate; | 2333 TestLayerAnimationDelegate delegate; |
2378 observer->set_delete_on_animation_aborted(true); | 2334 observer->set_delete_on_animation_aborted(true); |
2379 LayerAnimator* animator = observer->animator(); | 2335 LayerAnimator* animator = observer->animator(); |
2380 animator->set_preemption_strategy( | 2336 animator->set_preemption_strategy( |
2381 LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 2337 LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
2382 animator->set_disable_timer_for_test(true); | |
2383 animator->SetDelegate(&delegate); | 2338 animator->SetDelegate(&delegate); |
2384 | 2339 |
2385 delegate.SetOpacityFromAnimation(0.0f); | 2340 delegate.SetOpacityFromAnimation(0.0f); |
2386 | 2341 |
2387 gfx::Rect start_bounds(0, 0, 50, 50); | 2342 gfx::Rect start_bounds(0, 0, 50, 50); |
2388 gfx::Rect target_bounds(10, 10, 100, 100); | 2343 gfx::Rect target_bounds(10, 10, 100, 100); |
2389 | 2344 |
2390 delegate.SetBoundsFromAnimation(start_bounds); | 2345 delegate.SetBoundsFromAnimation(start_bounds); |
2391 | 2346 |
2392 std::vector<LayerAnimationSequence*> to_start; | 2347 std::vector<LayerAnimationSequence*> to_start; |
(...skipping 12 matching lines...) Expand all Loading... |
2405 | 2360 |
2406 animator->StartAnimation(new LayerAnimationSequence( | 2361 animator->StartAnimation(new LayerAnimationSequence( |
2407 LayerAnimationElement::CreateOpacityElement(1.0f, delta))); | 2362 LayerAnimationElement::CreateOpacityElement(1.0f, delta))); |
2408 | 2363 |
2409 EXPECT_TRUE(observer_was_deleted); | 2364 EXPECT_TRUE(observer_was_deleted); |
2410 } | 2365 } |
2411 | 2366 |
2412 | 2367 |
2413 TEST(LayerAnimatorTest, TestSetterRespectEnqueueStrategy) { | 2368 TEST(LayerAnimatorTest, TestSetterRespectEnqueueStrategy) { |
2414 TestLayerAnimationDelegate delegate; | 2369 TestLayerAnimationDelegate delegate; |
2415 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); | 2370 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2416 animator->set_disable_timer_for_test(true); | |
2417 | |
2418 animator->SetDelegate(&delegate); | |
2419 | 2371 |
2420 float start_opacity = 0.0f; | 2372 float start_opacity = 0.0f; |
2421 float target_opacity = 1.0f; | 2373 float target_opacity = 1.0f; |
2422 float magic_opacity = 0.123f; | 2374 float magic_opacity = 0.123f; |
2423 | 2375 |
2424 delegate.SetOpacityFromAnimation(start_opacity); | 2376 delegate.SetOpacityFromAnimation(start_opacity); |
2425 | 2377 |
2426 ScopedLayerAnimationSettings settings(animator.get()); | 2378 ScopedLayerAnimationSettings settings(animator.get()); |
2427 settings.SetPreemptionStrategy( | 2379 settings.SetPreemptionStrategy( |
2428 LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); | 2380 LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2611 | 2563 |
2612 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override {} | 2564 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override {} |
2613 | 2565 |
2614 private: | 2566 private: |
2615 scoped_ptr<Layer> animator_layer_; | 2567 scoped_ptr<Layer> animator_layer_; |
2616 | 2568 |
2617 DISALLOW_COPY_AND_ASSIGN(LayerOwnerAnimationObserver); | 2569 DISALLOW_COPY_AND_ASSIGN(LayerOwnerAnimationObserver); |
2618 }; | 2570 }; |
2619 | 2571 |
2620 TEST(LayerAnimatorTest, ObserverDeletesLayerInStopAnimating) { | 2572 TEST(LayerAnimatorTest, ObserverDeletesLayerInStopAnimating) { |
2621 scoped_refptr<LayerAnimator> animator( | 2573 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator()); |
2622 LayerAnimator::CreateImplicitAnimator()); | |
2623 animator->set_disable_timer_for_test(true); | |
2624 LayerOwnerAnimationObserver observer(animator.get()); | 2574 LayerOwnerAnimationObserver observer(animator.get()); |
2625 LayerAnimationDelegate* delegate = observer.animator_layer(); | 2575 LayerAnimationDelegate* delegate = observer.animator_layer(); |
2626 | 2576 |
2627 const gfx::Rect start_bounds(0, 0, 50, 50); | 2577 const gfx::Rect start_bounds(0, 0, 50, 50); |
2628 const gfx::Rect target_bounds(10, 10, 100, 100); | 2578 const gfx::Rect target_bounds(10, 10, 100, 100); |
2629 const double target_opacity = 1.0; | 2579 const double target_opacity = 1.0; |
2630 | 2580 |
2631 delegate->SetOpacityFromAnimation(0.0f); | 2581 delegate->SetOpacityFromAnimation(0.0f); |
2632 delegate->SetBoundsFromAnimation(start_bounds); | 2582 delegate->SetBoundsFromAnimation(start_bounds); |
2633 | 2583 |
2634 base::TimeDelta time_delta = base::TimeDelta::FromSeconds(1); | 2584 base::TimeDelta time_delta = base::TimeDelta::FromSeconds(1); |
2635 LayerAnimationSequence* opacity = new LayerAnimationSequence( | 2585 LayerAnimationSequence* opacity = new LayerAnimationSequence( |
2636 LayerAnimationElement::CreateOpacityElement(target_opacity, time_delta)); | 2586 LayerAnimationElement::CreateOpacityElement(target_opacity, time_delta)); |
2637 opacity->AddObserver(&observer); | 2587 opacity->AddObserver(&observer); |
2638 animator->ScheduleAnimation(opacity); | 2588 animator->ScheduleAnimation(opacity); |
2639 time_delta = base::TimeDelta::FromSeconds(2); | 2589 time_delta = base::TimeDelta::FromSeconds(2); |
2640 LayerAnimationSequence* move = new LayerAnimationSequence( | 2590 LayerAnimationSequence* move = new LayerAnimationSequence( |
2641 LayerAnimationElement::CreateBoundsElement(target_bounds, time_delta)); | 2591 LayerAnimationElement::CreateBoundsElement(target_bounds, time_delta)); |
2642 animator->ScheduleAnimation(move); | 2592 animator->ScheduleAnimation(move); |
2643 EXPECT_TRUE(animator->is_animating()); | 2593 EXPECT_TRUE(animator->is_animating()); |
2644 animator->Step(animator->last_step_time() + | 2594 animator->Step(animator->last_step_time() + |
2645 base::TimeDelta::FromMilliseconds(500)); | 2595 base::TimeDelta::FromMilliseconds(500)); |
2646 animator->StopAnimating(); | 2596 animator->StopAnimating(); |
2647 | 2597 |
2648 EXPECT_EQ(nullptr, observer.animator_layer()); | 2598 EXPECT_EQ(nullptr, observer.animator_layer()); |
2649 EXPECT_TRUE(animator->is_animating()); | 2599 EXPECT_TRUE(animator->is_animating()); |
2650 } | 2600 } |
2651 | 2601 |
| 2602 // Verifies the LayerAnimatorObserver notification order for an animation |
| 2603 // sequence that completes successfully. |
| 2604 TEST(LayerAnimatorObserverNotificationOrderTest, |
| 2605 SuccessfulCompletionOfSequence) { |
| 2606 TestLayerAnimationObserver observer; |
| 2607 TestLayerAnimationDelegate delegate; |
| 2608 scoped_refptr<LayerAnimator> animator( |
| 2609 CreateDefaultTestAnimator(&delegate, &observer)); |
| 2610 observer.set_requires_notification_when_animator_destroyed(true); |
| 2611 |
| 2612 const base::TimeDelta animation_duration = base::TimeDelta::FromSeconds(100); |
| 2613 |
| 2614 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
| 2615 LayerAnimationElement::CreateBrightnessElement(1.0f, animation_duration)); |
| 2616 |
| 2617 EXPECT_TRUE(observer.NoEventsObserved()); |
| 2618 |
| 2619 animator->StartAnimation(sequence); |
| 2620 |
| 2621 EXPECT_EQ(observer.last_attached_sequence(), sequence); |
| 2622 EXPECT_EQ(observer.last_scheduled_sequence(), sequence); |
| 2623 EXPECT_EQ(observer.last_started_sequence(), sequence); |
| 2624 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2625 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2626 EXPECT_EQ(observer.last_detached_sequence(), nullptr); |
| 2627 |
| 2628 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
| 2629 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
| 2630 |
| 2631 observer.ResetLayerAnimationObserverations(); |
| 2632 |
| 2633 const base::TimeTicks start_time = animator->last_step_time(); |
| 2634 |
| 2635 animator->Step(start_time + animation_duration); |
| 2636 |
| 2637 EXPECT_EQ(observer.last_attached_sequence(), nullptr); |
| 2638 EXPECT_EQ(observer.last_scheduled_sequence(), nullptr); |
| 2639 EXPECT_EQ(observer.last_started_sequence(), nullptr); |
| 2640 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2641 EXPECT_EQ(observer.last_ended_sequence(), sequence); |
| 2642 EXPECT_EQ(observer.last_detached_sequence(), sequence); |
| 2643 |
| 2644 EXPECT_TRUE(observer.EndedEpochIsBeforeDetachedEpoch()); |
| 2645 } |
| 2646 |
| 2647 // Verifies the LayerAnimatorObserver notification order for an animation |
| 2648 // sequence that is aborted after being scheduled. |
| 2649 TEST(LayerAnimatorObserverNotificationOrderTest, AbortingAScheduledSequence) { |
| 2650 TestLayerAnimationObserver observer; |
| 2651 TestLayerAnimationDelegate delegate; |
| 2652 scoped_refptr<LayerAnimator> animator( |
| 2653 CreateDefaultTestAnimator(&delegate, &observer)); |
| 2654 observer.set_requires_notification_when_animator_destroyed(true); |
| 2655 |
| 2656 const base::TimeDelta animation_duration = base::TimeDelta::FromSeconds(100); |
| 2657 |
| 2658 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
| 2659 LayerAnimationElement::CreateBrightnessElement(1.0f, animation_duration)); |
| 2660 |
| 2661 EXPECT_TRUE(observer.NoEventsObserved()); |
| 2662 |
| 2663 animator->StartAnimation(sequence); |
| 2664 |
| 2665 EXPECT_EQ(observer.last_attached_sequence(), sequence); |
| 2666 EXPECT_EQ(observer.last_scheduled_sequence(), sequence); |
| 2667 EXPECT_EQ(observer.last_started_sequence(), sequence); |
| 2668 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2669 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2670 EXPECT_EQ(observer.last_detached_sequence(), nullptr); |
| 2671 |
| 2672 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
| 2673 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
| 2674 |
| 2675 observer.ResetLayerAnimationObserverations(); |
| 2676 |
| 2677 animator->AbortAllAnimations(); |
| 2678 |
| 2679 EXPECT_EQ(observer.last_attached_sequence(), nullptr); |
| 2680 EXPECT_EQ(observer.last_scheduled_sequence(), nullptr); |
| 2681 EXPECT_EQ(observer.last_started_sequence(), nullptr); |
| 2682 EXPECT_EQ(observer.last_aborted_sequence(), sequence); |
| 2683 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2684 EXPECT_EQ(observer.last_detached_sequence(), sequence); |
| 2685 |
| 2686 EXPECT_TRUE(observer.AbortedEpochIsBeforeDetachedEpoch()); |
| 2687 } |
| 2688 |
| 2689 // Verifies the LayerAnimatorObserver notification order for an animation |
| 2690 // sequence that is queued up after another sequence that |
| 2691 // completes successfully. |
| 2692 TEST(LayerAnimatorObserverNotificationOrderTest, |
| 2693 RunningASequenceThatIsQueuedForLaterStartTime) { |
| 2694 TestLayerAnimationObserver observer; |
| 2695 TestLayerAnimationDelegate delegate; |
| 2696 scoped_refptr<LayerAnimator> animator( |
| 2697 CreateDefaultTestAnimator(&delegate, &observer)); |
| 2698 observer.set_requires_notification_when_animator_destroyed(true); |
| 2699 |
| 2700 const base::TimeDelta animation_duration = base::TimeDelta::FromSeconds(100); |
| 2701 |
| 2702 LayerAnimationSequence* first_sequence = new LayerAnimationSequence( |
| 2703 LayerAnimationElement::CreateBrightnessElement(1.0f, animation_duration)); |
| 2704 |
| 2705 LayerAnimationSequence* queued_sequence = new LayerAnimationSequence( |
| 2706 LayerAnimationElement::CreateBrightnessElement(1.0f, animation_duration)); |
| 2707 |
| 2708 EXPECT_TRUE(observer.NoEventsObserved()); |
| 2709 |
| 2710 animator->StartAnimation(first_sequence); |
| 2711 |
| 2712 EXPECT_EQ(observer.last_attached_sequence(), first_sequence); |
| 2713 EXPECT_EQ(observer.last_scheduled_sequence(), first_sequence); |
| 2714 EXPECT_EQ(observer.last_started_sequence(), first_sequence); |
| 2715 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2716 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2717 EXPECT_EQ(observer.last_detached_sequence(), nullptr); |
| 2718 |
| 2719 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
| 2720 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
| 2721 |
| 2722 observer.ResetLayerAnimationObserverations(); |
| 2723 |
| 2724 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); |
| 2725 animator->StartAnimation(queued_sequence); |
| 2726 |
| 2727 EXPECT_EQ(observer.last_attached_sequence(), queued_sequence); |
| 2728 EXPECT_EQ(observer.last_scheduled_sequence(), queued_sequence); |
| 2729 EXPECT_EQ(observer.last_started_sequence(), nullptr); |
| 2730 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2731 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2732 EXPECT_EQ(observer.last_detached_sequence(), nullptr); |
| 2733 |
| 2734 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
| 2735 |
| 2736 observer.ResetLayerAnimationObserverations(); |
| 2737 |
| 2738 base::TimeTicks start_time = animator->last_step_time(); |
| 2739 |
| 2740 animator->Step(start_time + animation_duration); |
| 2741 |
| 2742 EXPECT_EQ(observer.last_attached_sequence(), nullptr); |
| 2743 EXPECT_EQ(observer.last_scheduled_sequence(), nullptr); |
| 2744 EXPECT_EQ(observer.last_started_sequence(), queued_sequence); |
| 2745 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2746 EXPECT_EQ(observer.last_ended_sequence(), first_sequence); |
| 2747 EXPECT_EQ(observer.last_detached_sequence(), first_sequence); |
| 2748 |
| 2749 EXPECT_TRUE(observer.EndedEpochIsBeforeDetachedEpoch()); |
| 2750 EXPECT_TRUE(observer.EndedEpochIsBeforeStartedEpoch()); |
| 2751 } |
| 2752 |
| 2753 // Verifies the LayerAnimatorObserver notification order for an animation |
| 2754 // sequence that pre-empts another sequence. |
| 2755 TEST(LayerAnimatorObserverNotificationOrderTest, |
| 2756 RunningASequenceThatPreEmptsAnotherSequence) { |
| 2757 TestLayerAnimationObserver observer; |
| 2758 TestLayerAnimationDelegate delegate; |
| 2759 scoped_refptr<LayerAnimator> animator( |
| 2760 CreateDefaultTestAnimator(&delegate, &observer)); |
| 2761 observer.set_requires_notification_when_animator_destroyed(true); |
| 2762 |
| 2763 const base::TimeDelta animation_duration = base::TimeDelta::FromSeconds(100); |
| 2764 |
| 2765 LayerAnimationSequence* first_sequence = new LayerAnimationSequence( |
| 2766 LayerAnimationElement::CreateBrightnessElement(1.0f, animation_duration)); |
| 2767 |
| 2768 LayerAnimationSequence* queued_sequence = new LayerAnimationSequence( |
| 2769 LayerAnimationElement::CreateBrightnessElement(1.0f, animation_duration)); |
| 2770 |
| 2771 EXPECT_TRUE(observer.NoEventsObserved()); |
| 2772 |
| 2773 animator->StartAnimation(first_sequence); |
| 2774 |
| 2775 EXPECT_EQ(observer.last_attached_sequence(), first_sequence); |
| 2776 EXPECT_EQ(observer.last_scheduled_sequence(), first_sequence); |
| 2777 EXPECT_EQ(observer.last_started_sequence(), first_sequence); |
| 2778 EXPECT_EQ(observer.last_aborted_sequence(), nullptr); |
| 2779 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2780 EXPECT_EQ(observer.last_detached_sequence(), nullptr); |
| 2781 |
| 2782 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
| 2783 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
| 2784 |
| 2785 observer.ResetLayerAnimationObserverations(); |
| 2786 |
| 2787 animator->set_preemption_strategy( |
| 2788 LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| 2789 animator->StartAnimation(queued_sequence); |
| 2790 |
| 2791 EXPECT_EQ(observer.last_attached_sequence(), queued_sequence); |
| 2792 EXPECT_EQ(observer.last_scheduled_sequence(), queued_sequence); |
| 2793 EXPECT_EQ(observer.last_started_sequence(), queued_sequence); |
| 2794 EXPECT_EQ(observer.last_aborted_sequence(), first_sequence); |
| 2795 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
| 2796 EXPECT_EQ(observer.last_detached_sequence(), first_sequence); |
| 2797 |
| 2798 EXPECT_TRUE(observer.AbortedEpochIsBeforeDetachedEpoch()); |
| 2799 EXPECT_TRUE(observer.AbortedEpochIsBeforeStartedEpoch()); |
| 2800 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
| 2801 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
| 2802 } |
| 2803 |
2652 } // namespace ui | 2804 } // namespace ui |
OLD | NEW |