| Index: ui/gfx/compositor/layer_animator_unittest.cc
|
| diff --git a/ui/gfx/compositor/layer_animator_unittest.cc b/ui/gfx/compositor/layer_animator_unittest.cc
|
| index e92d7c5e91bbda59d03536a2d2d3a4cc09243d52..7d957cfce0375556d519d48b447f831cc96ff2c4 100644
|
| --- a/ui/gfx/compositor/layer_animator_unittest.cc
|
| +++ b/ui/gfx/compositor/layer_animator_unittest.cc
|
| @@ -11,10 +11,11 @@
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/gfx/rect.h"
|
| #include "ui/gfx/transform.h"
|
| -#include "ui/gfx/compositor/dummy_layer_animation_delegate.h"
|
| #include "ui/gfx/compositor/layer_animation_delegate.h"
|
| #include "ui/gfx/compositor/layer_animation_element.h"
|
| #include "ui/gfx/compositor/layer_animation_sequence.h"
|
| +#include "ui/gfx/compositor/test_layer_animation_delegate.h"
|
| +#include "ui/gfx/compositor/test_layer_animation_observer.h"
|
| #include "ui/gfx/compositor/test_utils.h"
|
|
|
| namespace ui {
|
| @@ -27,7 +28,7 @@ TEST(LayerAnimatorTest, ImplicitAnimation) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateImplicitAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
| base::TimeTicks now = base::TimeTicks::Now();
|
| animator->SetOpacity(0.5);
|
| @@ -41,7 +42,7 @@ TEST(LayerAnimatorTest, ImplicitAnimation) {
|
| TEST(LayerAnimatorTest, NoImplicitAnimation) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
| base::TimeTicks now = base::TimeTicks::Now();
|
| animator->SetOpacity(0.5);
|
| @@ -54,7 +55,7 @@ TEST(LayerAnimatorTest, NoImplicitAnimation) {
|
| TEST(LayerAnimatorTest, StopAnimatingProperty) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateImplicitAnimator());
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
| base::TimeTicks now = base::TimeTicks::Now();
|
| double target_opacity(0.5);
|
| @@ -74,7 +75,7 @@ TEST(LayerAnimatorTest, StopAnimatingProperty) {
|
| TEST(LayerAnimatorTest, StopAnimating) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateImplicitAnimator());
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
| base::TimeTicks now = base::TimeTicks::Now();
|
| double target_opacity(0.5);
|
| @@ -94,7 +95,7 @@ TEST(LayerAnimatorTest, ScheduleAnimationThatCanRunImmediately) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -131,7 +132,7 @@ TEST(LayerAnimatorTest, ScheduleTwoAnimationsThatCanRunImmediately) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -181,7 +182,7 @@ TEST(LayerAnimatorTest, ScheduleTwoAnimationsOnSameProperty) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -233,7 +234,7 @@ TEST(LayerAnimatorTest, ScheduleBlockedAnimation) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -311,7 +312,7 @@ TEST(LayerAnimatorTest, ScheduleTogether) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -364,7 +365,7 @@ TEST(LayerAnimatorTest, StartAnimationThatCanRunImmediately) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -399,7 +400,7 @@ TEST(LayerAnimatorTest, StartAnimationThatCanRunImmediately) {
|
| TEST(LayerAnimatorTest, PreemptBySettingNewTarget) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -428,7 +429,7 @@ TEST(LayerAnimatorTest, PreemptByImmediatelyAnimatingToNewTarget) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -480,7 +481,7 @@ TEST(LayerAnimatorTest, PreemptEnqueueNewAnimation) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -533,7 +534,7 @@ TEST(LayerAnimatorTest, PreemptyByReplacingQueuedAnimations) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -588,7 +589,7 @@ TEST(LayerAnimatorTest, CyclicSequences) {
|
| scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| AnimationContainerElement* element = animator.get();
|
| animator->set_disable_timer_for_test(true);
|
| - DummyLayerAnimationDelegate delegate;
|
| + TestLayerAnimationDelegate delegate;
|
| animator->SetDelegate(&delegate);
|
|
|
| double start_opacity(0.0);
|
| @@ -643,6 +644,84 @@ TEST(LayerAnimatorTest, CyclicSequences) {
|
| EXPECT_FALSE(animator->is_animating());
|
| }
|
|
|
| +TEST(LayerAnimatorTest, AddObserverExplicit) {
|
| + scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| + AnimationContainerElement* element = animator.get();
|
| + animator->set_disable_timer_for_test(true);
|
| + TestLayerAnimationObserver observer;
|
| + TestLayerAnimationDelegate delegate;
|
| + animator->SetDelegate(&delegate);
|
| + animator->AddObserver(&observer);
|
| +
|
| + EXPECT_TRUE(!observer.last_ended_sequence());
|
| +
|
| + base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
|
| +
|
| + delegate.SetOpacityFromAnimation(0.0f);
|
| +
|
| + LayerAnimationSequence* sequence = new LayerAnimationSequence(
|
| + LayerAnimationElement::CreateOpacityElement(1.0f, delta));
|
| +
|
| + animator->StartAnimation(sequence);
|
| +
|
| + EXPECT_EQ(observer.last_scheduled_sequence(), sequence);
|
| +
|
| + base::TimeTicks start_time = animator->get_last_step_time_for_test();
|
| +
|
| + element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
|
| +
|
| + EXPECT_EQ(observer.last_ended_sequence(), sequence);
|
| +
|
| + // |sequence| has been destroyed. Recreate it to test abort.
|
| + sequence = new LayerAnimationSequence(
|
| + LayerAnimationElement::CreateOpacityElement(1.0f, delta));
|
| +
|
| + animator->StartAnimation(sequence);
|
| +
|
| + animator.reset();
|
| +
|
| + EXPECT_EQ(observer.last_aborted_sequence(), sequence);
|
| +}
|
| +
|
| +TEST(LayerAnimatorTest, AddObserverImplicit) {
|
| + scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
|
| + AnimationContainerElement* element = animator.get();
|
| + animator->set_disable_timer_for_test(true);
|
| + TestLayerAnimationObserver observer;
|
| + TestLayerAnimationDelegate delegate;
|
| + animator->SetDelegate(&delegate);
|
| + animator->AddObserver(&observer);
|
| +
|
| + // Should not end a sequence with the default animator.
|
| + EXPECT_TRUE(!observer.last_ended_sequence());
|
| + animator->SetOpacity(1.0f);
|
| + base::TimeTicks start_time = base::TimeTicks::Now();
|
| + element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
|
| + EXPECT_TRUE(!observer.last_ended_sequence());
|
| +
|
| + TestLayerAnimationObserver scoped_observer;
|
| + {
|
| + LayerAnimator::ScopedSettings settings(animator.get());
|
| + settings.AddObserver(&scoped_observer);
|
| + for (int i = 0; i < 2; ++i) {
|
| + // reset the observer
|
| + scoped_observer = TestLayerAnimationObserver();
|
| + EXPECT_TRUE(!scoped_observer.last_ended_sequence());
|
| + animator->SetOpacity(1.0f);
|
| + start_time = animator->get_last_step_time_for_test();
|
| + element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
|
| + EXPECT_FALSE(!scoped_observer.last_ended_sequence());
|
| + }
|
| + }
|
| +
|
| + scoped_observer = TestLayerAnimationObserver();
|
| + EXPECT_TRUE(!scoped_observer.last_ended_sequence());
|
| + animator->SetOpacity(1.0f);
|
| + start_time = base::TimeTicks::Now();
|
| + element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
|
| + EXPECT_TRUE(!scoped_observer.last_ended_sequence());
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace ui
|
|
|