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 <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 26 matching lines...) Expand all Loading... |
37 // space and the order if A R G B. | 37 // space and the order if A R G B. |
38 std::string ColorToString(SkColor color) { | 38 std::string ColorToString(SkColor color) { |
39 return base::StringPrintf("%d %d %d %d", SkColorGetA(color), | 39 return base::StringPrintf("%d %d %d %d", SkColorGetA(color), |
40 SkColorGetR(color), SkColorGetG(color), | 40 SkColorGetR(color), SkColorGetG(color), |
41 SkColorGetB(color)); | 41 SkColorGetB(color)); |
42 } | 42 } |
43 | 43 |
44 // Creates vector with two LayerAnimationSequences, based on |first| and | 44 // Creates vector with two LayerAnimationSequences, based on |first| and |
45 // |second| layer animation elements. | 45 // |second| layer animation elements. |
46 std::vector<LayerAnimationSequence*> CreateMultiSequence( | 46 std::vector<LayerAnimationSequence*> CreateMultiSequence( |
47 LayerAnimationElement* first, | 47 std::unique_ptr<LayerAnimationElement> first, |
48 LayerAnimationElement* second) { | 48 std::unique_ptr<LayerAnimationElement> second) { |
49 LayerAnimationSequence* first_sequence = new LayerAnimationSequence(); | 49 LayerAnimationSequence* first_sequence = new LayerAnimationSequence(); |
50 first_sequence->AddElement(first); | 50 first_sequence->AddElement(std::move(first)); |
51 LayerAnimationSequence* second_sequence = new LayerAnimationSequence(); | 51 LayerAnimationSequence* second_sequence = new LayerAnimationSequence(); |
52 second_sequence->AddElement(second); | 52 second_sequence->AddElement(std::move(second)); |
53 | 53 |
54 std::vector<ui::LayerAnimationSequence*> animations; | 54 std::vector<ui::LayerAnimationSequence*> animations; |
55 animations.push_back(first_sequence); | 55 animations.push_back(first_sequence); |
56 animations.push_back(second_sequence); | 56 animations.push_back(second_sequence); |
57 return animations; | 57 return animations; |
58 } | 58 } |
59 | 59 |
60 // Creates a default animator with timers disabled for test. |delegate| and | 60 // Creates a default animator with timers disabled for test. |delegate| and |
61 // |observer| are attached if non-null. | 61 // |observer| are attached if non-null. |
62 LayerAnimator* CreateDefaultTestAnimator(LayerAnimationDelegate* delegate, | 62 LayerAnimator* CreateDefaultTestAnimator(LayerAnimationDelegate* delegate, |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 private: | 235 private: |
236 LayerAnimatorDestructionObserver* destruction_observer_; | 236 LayerAnimatorDestructionObserver* destruction_observer_; |
237 | 237 |
238 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimator); | 238 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimator); |
239 }; | 239 }; |
240 | 240 |
241 // The test layer animation sequence updates a live instances count when it is | 241 // The test layer animation sequence updates a live instances count when it is |
242 // created and destroyed. | 242 // created and destroyed. |
243 class TestLayerAnimationSequence : public LayerAnimationSequence { | 243 class TestLayerAnimationSequence : public LayerAnimationSequence { |
244 public: | 244 public: |
245 TestLayerAnimationSequence(LayerAnimationElement* element, | 245 TestLayerAnimationSequence(std::unique_ptr<LayerAnimationElement> element, |
246 int* num_live_instances) | 246 int* num_live_instances) |
247 : LayerAnimationSequence(element), | 247 : LayerAnimationSequence(std::move(element)), |
248 num_live_instances_(num_live_instances) { | 248 num_live_instances_(num_live_instances) { |
249 (*num_live_instances_)++; | 249 (*num_live_instances_)++; |
250 } | 250 } |
251 | 251 |
252 ~TestLayerAnimationSequence() override { (*num_live_instances_)--; } | 252 ~TestLayerAnimationSequence() override { (*num_live_instances_)--; } |
253 | 253 |
254 private: | 254 private: |
255 int* num_live_instances_; | 255 int* num_live_instances_; |
256 | 256 |
257 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimationSequence); | 257 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimationSequence); |
(...skipping 1841 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2099 TestLayerAnimationDelegate delegate; | 2099 TestLayerAnimationDelegate delegate; |
2100 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); | 2100 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
2101 | 2101 |
2102 double start_opacity(0.0); | 2102 double start_opacity(0.0); |
2103 double target_opacity(1.0); | 2103 double target_opacity(1.0); |
2104 | 2104 |
2105 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 2105 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
2106 | 2106 |
2107 delegate.SetOpacityFromAnimation(start_opacity); | 2107 delegate.SetOpacityFromAnimation(start_opacity); |
2108 | 2108 |
2109 std::unique_ptr<LayerAnimationSequence> sequence(new LayerAnimationSequence( | 2109 std::unique_ptr<LayerAnimationSequence> sequence = |
2110 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); | 2110 base::MakeUnique<LayerAnimationSequence>( |
| 2111 LayerAnimationElement::CreateOpacityElement(target_opacity, delta)); |
2111 | 2112 |
2112 animator->StartAnimation(sequence.release()); | 2113 animator->StartAnimation(sequence.release()); |
2113 | 2114 |
2114 animator->SetOpacity(0.5); | 2115 animator->SetOpacity(0.5); |
2115 | 2116 |
2116 EXPECT_FALSE(animator->is_animating()); | 2117 EXPECT_FALSE(animator->is_animating()); |
2117 EXPECT_EQ(0.5, animator->GetTargetOpacity()); | 2118 EXPECT_EQ(0.5, animator->GetTargetOpacity()); |
2118 } | 2119 } |
2119 | 2120 |
2120 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the | 2121 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the |
(...skipping 12 matching lines...) Expand all Loading... |
2133 { | 2134 { |
2134 // start an implicit bounds animation. | 2135 // start an implicit bounds animation. |
2135 ScopedLayerAnimationSettings settings(animator.get()); | 2136 ScopedLayerAnimationSettings settings(animator.get()); |
2136 animator->SetBounds(middle_bounds); | 2137 animator->SetBounds(middle_bounds); |
2137 } | 2138 } |
2138 | 2139 |
2139 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); | 2140 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); |
2140 | 2141 |
2141 int num_live_instances = 0; | 2142 int num_live_instances = 0; |
2142 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 2143 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
2143 std::unique_ptr<TestLayerAnimationSequence> sequence( | 2144 std::unique_ptr<TestLayerAnimationSequence> sequence = |
2144 new TestLayerAnimationSequence( | 2145 base::MakeUnique<TestLayerAnimationSequence>( |
2145 LayerAnimationElement::CreateBoundsElement(target_bounds, delta), | 2146 LayerAnimationElement::CreateBoundsElement(target_bounds, delta), |
2146 &num_live_instances)); | 2147 &num_live_instances); |
2147 | 2148 |
2148 EXPECT_EQ(1, num_live_instances); | 2149 EXPECT_EQ(1, num_live_instances); |
2149 | 2150 |
2150 // This should interrupt the running sequence causing us to immediately set | 2151 // This should interrupt the running sequence causing us to immediately set |
2151 // the target value. The sequence should alse be destructed. | 2152 // the target value. The sequence should alse be destructed. |
2152 animator->StartAnimation(sequence.release()); | 2153 animator->StartAnimation(sequence.release()); |
2153 | 2154 |
2154 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); | 2155 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); |
2155 EXPECT_EQ(0, num_live_instances); | 2156 EXPECT_EQ(0, num_live_instances); |
2156 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); | 2157 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); |
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2945 EXPECT_EQ(observer.last_ended_sequence(), nullptr); | 2946 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
2946 EXPECT_EQ(observer.last_detached_sequence(), first_sequence); | 2947 EXPECT_EQ(observer.last_detached_sequence(), first_sequence); |
2947 | 2948 |
2948 EXPECT_TRUE(observer.AbortedEpochIsBeforeDetachedEpoch()); | 2949 EXPECT_TRUE(observer.AbortedEpochIsBeforeDetachedEpoch()); |
2949 EXPECT_TRUE(observer.AbortedEpochIsBeforeStartedEpoch()); | 2950 EXPECT_TRUE(observer.AbortedEpochIsBeforeStartedEpoch()); |
2950 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); | 2951 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
2951 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); | 2952 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
2952 } | 2953 } |
2953 | 2954 |
2954 } // namespace ui | 2955 } // namespace ui |
OLD | NEW |