| 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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 } | 73 } |
| 74 | 74 |
| 75 bool WasAnimationCompletedForProperty( | 75 bool WasAnimationCompletedForProperty( |
| 76 LayerAnimationElement::AnimatableProperty property) const { | 76 LayerAnimationElement::AnimatableProperty property) const { |
| 77 return ImplicitAnimationObserver::WasAnimationCompletedForProperty( | 77 return ImplicitAnimationObserver::WasAnimationCompletedForProperty( |
| 78 property); | 78 property); |
| 79 } | 79 } |
| 80 | 80 |
| 81 private: | 81 private: |
| 82 // ImplicitAnimationObserver implementation | 82 // ImplicitAnimationObserver implementation |
| 83 virtual void OnImplicitAnimationsCompleted() OVERRIDE { | 83 virtual void OnImplicitAnimationsCompleted() override { |
| 84 animations_completed_ = true; | 84 animations_completed_ = true; |
| 85 } | 85 } |
| 86 | 86 |
| 87 virtual bool RequiresNotificationWhenAnimatorDestroyed() const OVERRIDE { | 87 virtual bool RequiresNotificationWhenAnimatorDestroyed() const override { |
| 88 return notify_when_animator_destructed_; | 88 return notify_when_animator_destructed_; |
| 89 } | 89 } |
| 90 | 90 |
| 91 bool animations_completed_; | 91 bool animations_completed_; |
| 92 bool notify_when_animator_destructed_; | 92 bool notify_when_animator_destructed_; |
| 93 | 93 |
| 94 DISALLOW_COPY_AND_ASSIGN(TestImplicitAnimationObserver); | 94 DISALLOW_COPY_AND_ASSIGN(TestImplicitAnimationObserver); |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 // When notified that an animation has ended, stops all other animations. | 97 // When notified that an animation has ended, stops all other animations. |
| 98 class DeletingLayerAnimationObserver : public LayerAnimationObserver { | 98 class DeletingLayerAnimationObserver : public LayerAnimationObserver { |
| 99 public: | 99 public: |
| 100 DeletingLayerAnimationObserver(LayerAnimator* animator) | 100 DeletingLayerAnimationObserver(LayerAnimator* animator) |
| 101 : animator_(animator) { | 101 : animator_(animator) { |
| 102 } | 102 } |
| 103 | 103 |
| 104 virtual void OnLayerAnimationEnded( | 104 virtual void OnLayerAnimationEnded( |
| 105 LayerAnimationSequence* sequence) OVERRIDE { | 105 LayerAnimationSequence* sequence) override { |
| 106 animator_->StopAnimating(); | 106 animator_->StopAnimating(); |
| 107 } | 107 } |
| 108 | 108 |
| 109 virtual void OnLayerAnimationAborted( | 109 virtual void OnLayerAnimationAborted( |
| 110 LayerAnimationSequence* sequence) OVERRIDE { | 110 LayerAnimationSequence* sequence) override { |
| 111 animator_->StopAnimating(); | 111 animator_->StopAnimating(); |
| 112 } | 112 } |
| 113 | 113 |
| 114 virtual void OnLayerAnimationScheduled( | 114 virtual void OnLayerAnimationScheduled( |
| 115 LayerAnimationSequence* sequence) OVERRIDE { | 115 LayerAnimationSequence* sequence) override { |
| 116 } | 116 } |
| 117 | 117 |
| 118 private: | 118 private: |
| 119 LayerAnimator* animator_; | 119 LayerAnimator* animator_; |
| 120 | 120 |
| 121 DISALLOW_COPY_AND_ASSIGN(DeletingLayerAnimationObserver); | 121 DISALLOW_COPY_AND_ASSIGN(DeletingLayerAnimationObserver); |
| 122 }; | 122 }; |
| 123 | 123 |
| 124 class LayerAnimatorDestructionObserver { | 124 class LayerAnimatorDestructionObserver { |
| 125 public: | 125 public: |
| (...skipping 25 matching lines...) Expand all Loading... |
| 151 } | 151 } |
| 152 | 152 |
| 153 protected: | 153 protected: |
| 154 virtual ~TestLayerAnimator() { | 154 virtual ~TestLayerAnimator() { |
| 155 if (destruction_observer_) { | 155 if (destruction_observer_) { |
| 156 destruction_observer_->NotifyAnimatorDeleted(); | 156 destruction_observer_->NotifyAnimatorDeleted(); |
| 157 } | 157 } |
| 158 } | 158 } |
| 159 | 159 |
| 160 virtual void ProgressAnimation(LayerAnimationSequence* sequence, | 160 virtual void ProgressAnimation(LayerAnimationSequence* sequence, |
| 161 base::TimeTicks now) OVERRIDE { | 161 base::TimeTicks now) override { |
| 162 EXPECT_TRUE(HasAnimation(sequence)); | 162 EXPECT_TRUE(HasAnimation(sequence)); |
| 163 LayerAnimator::ProgressAnimation(sequence, now); | 163 LayerAnimator::ProgressAnimation(sequence, now); |
| 164 } | 164 } |
| 165 | 165 |
| 166 private: | 166 private: |
| 167 LayerAnimatorDestructionObserver* destruction_observer_; | 167 LayerAnimatorDestructionObserver* destruction_observer_; |
| 168 | 168 |
| 169 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimator); | 169 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimator); |
| 170 }; | 170 }; |
| 171 | 171 |
| (...skipping 1769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1941 // callback triggered by the animation progress. | 1941 // callback triggered by the animation progress. |
| 1942 TEST(LayerAnimatorTest, CallbackDeletesAnimationInProgress) { | 1942 TEST(LayerAnimatorTest, CallbackDeletesAnimationInProgress) { |
| 1943 | 1943 |
| 1944 class TestLayerAnimationDeletingDelegate : public TestLayerAnimationDelegate { | 1944 class TestLayerAnimationDeletingDelegate : public TestLayerAnimationDelegate { |
| 1945 public: | 1945 public: |
| 1946 TestLayerAnimationDeletingDelegate(LayerAnimator* animator, int max_width) | 1946 TestLayerAnimationDeletingDelegate(LayerAnimator* animator, int max_width) |
| 1947 : animator_(animator), | 1947 : animator_(animator), |
| 1948 max_width_(max_width) { | 1948 max_width_(max_width) { |
| 1949 } | 1949 } |
| 1950 | 1950 |
| 1951 virtual void SetBoundsFromAnimation(const gfx::Rect& bounds) OVERRIDE { | 1951 virtual void SetBoundsFromAnimation(const gfx::Rect& bounds) override { |
| 1952 TestLayerAnimationDelegate::SetBoundsFromAnimation(bounds); | 1952 TestLayerAnimationDelegate::SetBoundsFromAnimation(bounds); |
| 1953 if (bounds.width() > max_width_) | 1953 if (bounds.width() > max_width_) |
| 1954 animator_->StopAnimating(); | 1954 animator_->StopAnimating(); |
| 1955 } | 1955 } |
| 1956 private: | 1956 private: |
| 1957 LayerAnimator* animator_; | 1957 LayerAnimator* animator_; |
| 1958 int max_width_; | 1958 int max_width_; |
| 1959 // Allow copy and assign. | 1959 // Allow copy and assign. |
| 1960 }; | 1960 }; |
| 1961 | 1961 |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2275 | 2275 |
| 2276 bool delete_on_animation_scheduled() const { | 2276 bool delete_on_animation_scheduled() const { |
| 2277 return delete_on_animation_scheduled_; | 2277 return delete_on_animation_scheduled_; |
| 2278 } | 2278 } |
| 2279 void set_delete_on_animation_scheduled(bool enabled) { | 2279 void set_delete_on_animation_scheduled(bool enabled) { |
| 2280 delete_on_animation_scheduled_ = enabled; | 2280 delete_on_animation_scheduled_ = enabled; |
| 2281 } | 2281 } |
| 2282 | 2282 |
| 2283 // LayerAnimationObserver implementation. | 2283 // LayerAnimationObserver implementation. |
| 2284 virtual void OnLayerAnimationEnded( | 2284 virtual void OnLayerAnimationEnded( |
| 2285 LayerAnimationSequence* sequence) OVERRIDE { | 2285 LayerAnimationSequence* sequence) override { |
| 2286 if (delete_on_animation_ended_) | 2286 if (delete_on_animation_ended_) |
| 2287 delete this; | 2287 delete this; |
| 2288 } | 2288 } |
| 2289 | 2289 |
| 2290 virtual void OnLayerAnimationAborted( | 2290 virtual void OnLayerAnimationAborted( |
| 2291 LayerAnimationSequence* sequence) OVERRIDE { | 2291 LayerAnimationSequence* sequence) override { |
| 2292 if (delete_on_animation_aborted_) | 2292 if (delete_on_animation_aborted_) |
| 2293 delete this; | 2293 delete this; |
| 2294 } | 2294 } |
| 2295 | 2295 |
| 2296 virtual void OnLayerAnimationScheduled( | 2296 virtual void OnLayerAnimationScheduled( |
| 2297 LayerAnimationSequence* sequence) OVERRIDE { | 2297 LayerAnimationSequence* sequence) override { |
| 2298 if (delete_on_animation_scheduled_) | 2298 if (delete_on_animation_scheduled_) |
| 2299 delete this; | 2299 delete this; |
| 2300 } | 2300 } |
| 2301 | 2301 |
| 2302 private: | 2302 private: |
| 2303 scoped_ptr<AnimatorOwner> animator_owner_; | 2303 scoped_ptr<AnimatorOwner> animator_owner_; |
| 2304 bool delete_on_animation_ended_; | 2304 bool delete_on_animation_ended_; |
| 2305 bool delete_on_animation_aborted_; | 2305 bool delete_on_animation_aborted_; |
| 2306 bool delete_on_animation_scheduled_; | 2306 bool delete_on_animation_scheduled_; |
| 2307 bool* was_deleted_; | 2307 bool* was_deleted_; |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2501 << child.GetTargetTransform().ToString(); | 2501 << child.GetTargetTransform().ToString(); |
| 2502 | 2502 |
| 2503 } | 2503 } |
| 2504 | 2504 |
| 2505 class CollectionLayerAnimationDelegate : public TestLayerAnimationDelegate { | 2505 class CollectionLayerAnimationDelegate : public TestLayerAnimationDelegate { |
| 2506 public: | 2506 public: |
| 2507 CollectionLayerAnimationDelegate() : collection(NULL) {} | 2507 CollectionLayerAnimationDelegate() : collection(NULL) {} |
| 2508 virtual ~CollectionLayerAnimationDelegate() {} | 2508 virtual ~CollectionLayerAnimationDelegate() {} |
| 2509 | 2509 |
| 2510 // LayerAnimationDelegate: | 2510 // LayerAnimationDelegate: |
| 2511 virtual LayerAnimatorCollection* GetLayerAnimatorCollection() OVERRIDE { | 2511 virtual LayerAnimatorCollection* GetLayerAnimatorCollection() override { |
| 2512 return &collection; | 2512 return &collection; |
| 2513 } | 2513 } |
| 2514 | 2514 |
| 2515 private: | 2515 private: |
| 2516 LayerAnimatorCollection collection; | 2516 LayerAnimatorCollection collection; |
| 2517 }; | 2517 }; |
| 2518 | 2518 |
| 2519 TEST(LayerAnimatorTest, LayerAnimatorCollectionTickTime) { | 2519 TEST(LayerAnimatorTest, LayerAnimatorCollectionTickTime) { |
| 2520 Layer layer; | 2520 Layer layer; |
| 2521 LayerAnimator* animator = layer.GetAnimator(); | 2521 LayerAnimator* animator = layer.GetAnimator(); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2614 | 2614 |
| 2615 root_2.Add(&layer); | 2615 root_2.Add(&layer); |
| 2616 EXPECT_FALSE(compositor_1->layer_animator_collection()->HasActiveAnimators()); | 2616 EXPECT_FALSE(compositor_1->layer_animator_collection()->HasActiveAnimators()); |
| 2617 EXPECT_TRUE(compositor_2->layer_animator_collection()->HasActiveAnimators()); | 2617 EXPECT_TRUE(compositor_2->layer_animator_collection()->HasActiveAnimators()); |
| 2618 host_2.reset(); | 2618 host_2.reset(); |
| 2619 host_1.reset(); | 2619 host_1.reset(); |
| 2620 TerminateContextFactoryForTests(); | 2620 TerminateContextFactoryForTests(); |
| 2621 } | 2621 } |
| 2622 | 2622 |
| 2623 } // namespace ui | 2623 } // namespace ui |
| OLD | NEW |