| 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_animation_element.h" | 5 #include "ui/compositor/layer_animation_element.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/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 TestLayerAnimationDelegate delegate; | 359 TestLayerAnimationDelegate delegate; |
| 360 float start = 0.0; | 360 float start = 0.0; |
| 361 float target = 1.0; | 361 float target = 1.0; |
| 362 base::TimeTicks start_time; | 362 base::TimeTicks start_time; |
| 363 base::TimeTicks effective_start_time; | 363 base::TimeTicks effective_start_time; |
| 364 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 364 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
| 365 scoped_ptr<LayerAnimationElement> element( | 365 scoped_ptr<LayerAnimationElement> element( |
| 366 LayerAnimationElement::CreateOpacityElement(target, delta)); | 366 LayerAnimationElement::CreateOpacityElement(target, delta)); |
| 367 | 367 |
| 368 // Choose a non-linear Tween type. | 368 // Choose a non-linear Tween type. |
| 369 Tween::Type tween_type = Tween::EASE_IN; | 369 gfx::Tween::Type tween_type = gfx::Tween::EASE_IN; |
| 370 element->set_tween_type(tween_type); | 370 element->set_tween_type(tween_type); |
| 371 | 371 |
| 372 delegate.SetOpacityFromAnimation(start); | 372 delegate.SetOpacityFromAnimation(start); |
| 373 | 373 |
| 374 // Aborting the element before it has started should not update the delegate. | 374 // Aborting the element before it has started should not update the delegate. |
| 375 element->Abort(&delegate); | 375 element->Abort(&delegate); |
| 376 EXPECT_FLOAT_EQ(start, delegate.GetOpacityForAnimation()); | 376 EXPECT_FLOAT_EQ(start, delegate.GetOpacityForAnimation()); |
| 377 | 377 |
| 378 start_time += delta; | 378 start_time += delta; |
| 379 element->set_requested_start_time(start_time); | 379 element->set_requested_start_time(start_time); |
| 380 element->Start(&delegate, 1); | 380 element->Start(&delegate, 1); |
| 381 element->Progress(start_time, &delegate); | 381 element->Progress(start_time, &delegate); |
| 382 effective_start_time = start_time + delta; | 382 effective_start_time = start_time + delta; |
| 383 element->set_effective_start_time(effective_start_time); | 383 element->set_effective_start_time(effective_start_time); |
| 384 element->Progress(effective_start_time, &delegate); | 384 element->Progress(effective_start_time, &delegate); |
| 385 element->Progress(effective_start_time + delta/2, &delegate); | 385 element->Progress(effective_start_time + delta/2, &delegate); |
| 386 | 386 |
| 387 // Since the element has started, it should update the delegate when | 387 // Since the element has started, it should update the delegate when |
| 388 // aborted. | 388 // aborted. |
| 389 element->Abort(&delegate); | 389 element->Abort(&delegate); |
| 390 EXPECT_FLOAT_EQ(Tween::CalculateValue(tween_type, 0.5), | 390 EXPECT_FLOAT_EQ(gfx::Tween::CalculateValue(tween_type, 0.5), |
| 391 delegate.GetOpacityForAnimation()); | 391 delegate.GetOpacityForAnimation()); |
| 392 } | 392 } |
| 393 | 393 |
| 394 // Check that a threaded transform element updates the delegate as expected when | 394 // Check that a threaded transform element updates the delegate as expected when |
| 395 // aborted. | 395 // aborted. |
| 396 TEST(LayerAnimationElementTest, AbortTransformElement) { | 396 TEST(LayerAnimationElementTest, AbortTransformElement) { |
| 397 TestLayerAnimationDelegate delegate; | 397 TestLayerAnimationDelegate delegate; |
| 398 gfx::Transform start_transform, target_transform; | 398 gfx::Transform start_transform, target_transform; |
| 399 start_transform.Rotate(-30.0); | 399 start_transform.Rotate(-30.0); |
| 400 target_transform.Rotate(30.0); | 400 target_transform.Rotate(30.0); |
| 401 base::TimeTicks start_time; | 401 base::TimeTicks start_time; |
| 402 base::TimeTicks effective_start_time; | 402 base::TimeTicks effective_start_time; |
| 403 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 403 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
| 404 scoped_ptr<LayerAnimationElement> element( | 404 scoped_ptr<LayerAnimationElement> element( |
| 405 LayerAnimationElement::CreateTransformElement(target_transform, delta)); | 405 LayerAnimationElement::CreateTransformElement(target_transform, delta)); |
| 406 | 406 |
| 407 // Choose a non-linear Tween type. | 407 // Choose a non-linear Tween type. |
| 408 Tween::Type tween_type = Tween::EASE_IN; | 408 gfx::Tween::Type tween_type = gfx::Tween::EASE_IN; |
| 409 element->set_tween_type(tween_type); | 409 element->set_tween_type(tween_type); |
| 410 | 410 |
| 411 delegate.SetTransformFromAnimation(start_transform); | 411 delegate.SetTransformFromAnimation(start_transform); |
| 412 | 412 |
| 413 // Aborting the element before it has started should not update the delegate. | 413 // Aborting the element before it has started should not update the delegate. |
| 414 element->Abort(&delegate); | 414 element->Abort(&delegate); |
| 415 CheckApproximatelyEqual(start_transform, delegate.GetTransformForAnimation()); | 415 CheckApproximatelyEqual(start_transform, delegate.GetTransformForAnimation()); |
| 416 | 416 |
| 417 start_time += delta; | 417 start_time += delta; |
| 418 element->set_requested_start_time(start_time); | 418 element->set_requested_start_time(start_time); |
| 419 element->Start(&delegate, 1); | 419 element->Start(&delegate, 1); |
| 420 element->Progress(start_time, &delegate); | 420 element->Progress(start_time, &delegate); |
| 421 effective_start_time = start_time + delta; | 421 effective_start_time = start_time + delta; |
| 422 element->set_effective_start_time(effective_start_time); | 422 element->set_effective_start_time(effective_start_time); |
| 423 element->Progress(effective_start_time, &delegate); | 423 element->Progress(effective_start_time, &delegate); |
| 424 element->Progress(effective_start_time + delta/2, &delegate); | 424 element->Progress(effective_start_time + delta/2, &delegate); |
| 425 | 425 |
| 426 // Since the element has started, it should update the delegate when | 426 // Since the element has started, it should update the delegate when |
| 427 // aborted. | 427 // aborted. |
| 428 element->Abort(&delegate); | 428 element->Abort(&delegate); |
| 429 target_transform.Blend(start_transform, | 429 target_transform.Blend(start_transform, |
| 430 Tween::CalculateValue(tween_type, 0.5)); | 430 gfx::Tween::CalculateValue(tween_type, 0.5)); |
| 431 CheckApproximatelyEqual(target_transform, | 431 CheckApproximatelyEqual(target_transform, |
| 432 delegate.GetTransformForAnimation()); | 432 delegate.GetTransformForAnimation()); |
| 433 } | 433 } |
| 434 | 434 |
| 435 } // namespace | 435 } // namespace |
| 436 | 436 |
| 437 } // namespace ui | 437 } // namespace ui |
| OLD | NEW |