Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: ui/compositor/layer_animator_unittest.cc

Issue 10919195: LayerAnimator must be prepared for its owning layer's deletion whenever it notifies observers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing the unit tests. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/compositor/layer_animator.cc ('k') | ui/views/view_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/time.h" 10 #include "base/time.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 private: 71 private:
72 LayerAnimator* animator_; 72 LayerAnimator* animator_;
73 LayerAnimationSequence* sequence_; 73 LayerAnimationSequence* sequence_;
74 74
75 DISALLOW_COPY_AND_ASSIGN(DeletingLayerAnimationObserver); 75 DISALLOW_COPY_AND_ASSIGN(DeletingLayerAnimationObserver);
76 }; 76 };
77 77
78 class TestLayerAnimator : public LayerAnimator { 78 class TestLayerAnimator : public LayerAnimator {
79 public: 79 public:
80 TestLayerAnimator() : LayerAnimator(base::TimeDelta::FromSeconds(0)) {} 80 TestLayerAnimator() : LayerAnimator(base::TimeDelta::FromSeconds(0)) {}
81
82 protected:
81 virtual ~TestLayerAnimator() {} 83 virtual ~TestLayerAnimator() {}
82 84
83 protected: 85 virtual void ProgressAnimation(LayerAnimationSequence* sequence,
84 virtual bool ProgressAnimation(LayerAnimationSequence* sequence,
85 base::TimeDelta delta) OVERRIDE { 86 base::TimeDelta delta) OVERRIDE {
86 EXPECT_TRUE(HasAnimation(sequence)); 87 EXPECT_TRUE(HasAnimation(sequence));
87 return LayerAnimator::ProgressAnimation(sequence, delta); 88 LayerAnimator::ProgressAnimation(sequence, delta);
88 } 89 }
89 90
90 private: 91 private:
91 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimator); 92 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimator);
92 }; 93 };
93 94
94 // The test layer animation sequence updates a live instances count when it is 95 // The test layer animation sequence updates a live instances count when it is
95 // created and destroyed. 96 // created and destroyed.
96 class TestLayerAnimationSequence : public LayerAnimationSequence { 97 class TestLayerAnimationSequence : public LayerAnimationSequence {
97 public: 98 public:
(...skipping 12 matching lines...) Expand all
110 int* num_live_instances_; 111 int* num_live_instances_;
111 112
112 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimationSequence); 113 DISALLOW_COPY_AND_ASSIGN(TestLayerAnimationSequence);
113 }; 114 };
114 115
115 } // namespace 116 } // namespace
116 117
117 // Checks that setting a property on an implicit animator causes an animation to 118 // Checks that setting a property on an implicit animator causes an animation to
118 // happen. 119 // happen.
119 TEST(LayerAnimatorTest, ImplicitAnimation) { 120 TEST(LayerAnimatorTest, ImplicitAnimation) {
120 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateImplicitAnimator()); 121 scoped_refptr<LayerAnimator> animator(
122 LayerAnimator::CreateImplicitAnimator());
121 AnimationContainerElement* element = animator.get(); 123 AnimationContainerElement* element = animator.get();
122 animator->set_disable_timer_for_test(true); 124 animator->set_disable_timer_for_test(true);
123 TestLayerAnimationDelegate delegate; 125 TestLayerAnimationDelegate delegate;
124 animator->SetDelegate(&delegate); 126 animator->SetDelegate(&delegate);
125 base::TimeTicks now = base::TimeTicks::Now(); 127 base::TimeTicks now = base::TimeTicks::Now();
126 animator->SetOpacity(0.5); 128 animator->SetOpacity(0.5);
127 EXPECT_TRUE(animator->is_animating()); 129 EXPECT_TRUE(animator->is_animating());
128 element->Step(now + base::TimeDelta::FromSeconds(1)); 130 element->Step(now + base::TimeDelta::FromSeconds(1));
129 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); 131 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5);
130 } 132 }
131 133
132 // Checks that if the animator is a default animator, that implicit animations 134 // Checks that if the animator is a default animator, that implicit animations
133 // are not started. 135 // are not started.
134 TEST(LayerAnimatorTest, NoImplicitAnimation) { 136 TEST(LayerAnimatorTest, NoImplicitAnimation) {
135 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 137 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
136 animator->set_disable_timer_for_test(true); 138 animator->set_disable_timer_for_test(true);
137 TestLayerAnimationDelegate delegate; 139 TestLayerAnimationDelegate delegate;
138 animator->SetDelegate(&delegate); 140 animator->SetDelegate(&delegate);
139 animator->SetOpacity(0.5); 141 animator->SetOpacity(0.5);
140 EXPECT_FALSE(animator->is_animating()); 142 EXPECT_FALSE(animator->is_animating());
141 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); 143 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5);
142 } 144 }
143 145
144 // Checks that StopAnimatingProperty stops animation for that property, and also 146 // Checks that StopAnimatingProperty stops animation for that property, and also
145 // skips the stopped animation to the end. 147 // skips the stopped animation to the end.
146 TEST(LayerAnimatorTest, StopAnimatingProperty) { 148 TEST(LayerAnimatorTest, StopAnimatingProperty) {
147 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateImplicitAnimator()); 149 scoped_refptr<LayerAnimator> animator(
150 LayerAnimator::CreateImplicitAnimator());
148 animator->set_disable_timer_for_test(true); 151 animator->set_disable_timer_for_test(true);
149 TestLayerAnimationDelegate delegate; 152 TestLayerAnimationDelegate delegate;
150 animator->SetDelegate(&delegate); 153 animator->SetDelegate(&delegate);
151 double target_opacity(0.5); 154 double target_opacity(0.5);
152 gfx::Rect target_bounds(0, 0, 50, 50); 155 gfx::Rect target_bounds(0, 0, 50, 50);
153 animator->SetOpacity(target_opacity); 156 animator->SetOpacity(target_opacity);
154 animator->SetBounds(target_bounds); 157 animator->SetBounds(target_bounds);
155 animator->StopAnimatingProperty(LayerAnimationElement::OPACITY); 158 animator->StopAnimatingProperty(LayerAnimationElement::OPACITY);
156 EXPECT_TRUE(animator->is_animating()); 159 EXPECT_TRUE(animator->is_animating());
157 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); 160 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5);
158 animator->StopAnimatingProperty(LayerAnimationElement::BOUNDS); 161 animator->StopAnimatingProperty(LayerAnimationElement::BOUNDS);
159 EXPECT_FALSE(animator->is_animating()); 162 EXPECT_FALSE(animator->is_animating());
160 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); 163 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds);
161 } 164 }
162 165
163 // Checks that multiple running animation for separate properties can be stopped 166 // Checks that multiple running animation for separate properties can be stopped
164 // simultaneously and that all animations are advanced to their target values. 167 // simultaneously and that all animations are advanced to their target values.
165 TEST(LayerAnimatorTest, StopAnimating) { 168 TEST(LayerAnimatorTest, StopAnimating) {
166 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateImplicitAnimator()); 169 scoped_refptr<LayerAnimator> animator(
170 LayerAnimator::CreateImplicitAnimator());
167 animator->set_disable_timer_for_test(true); 171 animator->set_disable_timer_for_test(true);
168 TestLayerAnimationDelegate delegate; 172 TestLayerAnimationDelegate delegate;
169 animator->SetDelegate(&delegate); 173 animator->SetDelegate(&delegate);
170 double target_opacity(0.5); 174 double target_opacity(0.5);
171 gfx::Rect target_bounds(0, 0, 50, 50); 175 gfx::Rect target_bounds(0, 0, 50, 50);
172 animator->SetOpacity(target_opacity); 176 animator->SetOpacity(target_opacity);
173 animator->SetBounds(target_bounds); 177 animator->SetBounds(target_bounds);
174 EXPECT_TRUE(animator->is_animating()); 178 EXPECT_TRUE(animator->is_animating());
175 animator->StopAnimating(); 179 animator->StopAnimating();
176 EXPECT_FALSE(animator->is_animating()); 180 EXPECT_FALSE(animator->is_animating());
177 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5); 181 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), 0.5);
178 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); 182 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds);
179 } 183 }
180 184
181 // Schedule an animation that can run immediately. This is the trivial case and 185 // Schedule an animation that can run immediately. This is the trivial case and
182 // should result in the animation being started immediately. 186 // should result in the animation being started immediately.
183 TEST(LayerAnimatorTest, ScheduleAnimationThatCanRunImmediately) { 187 TEST(LayerAnimatorTest, ScheduleAnimationThatCanRunImmediately) {
184 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 188 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
185 AnimationContainerElement* element = animator.get(); 189 AnimationContainerElement* element = animator.get();
186 animator->set_disable_timer_for_test(true); 190 animator->set_disable_timer_for_test(true);
187 TestLayerAnimationDelegate delegate; 191 TestLayerAnimationDelegate delegate;
188 animator->SetDelegate(&delegate); 192 animator->SetDelegate(&delegate);
189 193
190 double start_opacity(0.0); 194 double start_opacity(0.0);
191 double middle_opacity(0.5); 195 double middle_opacity(0.5);
192 double target_opacity(1.0); 196 double target_opacity(1.0);
193 197
194 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 198 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
(...skipping 16 matching lines...) Expand all
211 215
212 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 216 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
213 217
214 EXPECT_FALSE(animator->is_animating()); 218 EXPECT_FALSE(animator->is_animating());
215 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); 219 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity);
216 } 220 }
217 221
218 // Schedule two animations on separate properties. Both animations should 222 // Schedule two animations on separate properties. Both animations should
219 // start immediately and should progress in lock step. 223 // start immediately and should progress in lock step.
220 TEST(LayerAnimatorTest, ScheduleTwoAnimationsThatCanRunImmediately) { 224 TEST(LayerAnimatorTest, ScheduleTwoAnimationsThatCanRunImmediately) {
221 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 225 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
222 AnimationContainerElement* element = animator.get(); 226 AnimationContainerElement* element = animator.get();
223 animator->set_disable_timer_for_test(true); 227 animator->set_disable_timer_for_test(true);
224 TestLayerAnimationDelegate delegate; 228 TestLayerAnimationDelegate delegate;
225 animator->SetDelegate(&delegate); 229 animator->SetDelegate(&delegate);
226 230
227 double start_opacity(0.0); 231 double start_opacity(0.0);
228 double middle_opacity(0.5); 232 double middle_opacity(0.5);
229 double target_opacity(1.0); 233 double target_opacity(1.0);
230 234
231 gfx::Rect start_bounds, target_bounds, middle_bounds; 235 gfx::Rect start_bounds, target_bounds, middle_bounds;
(...skipping 29 matching lines...) Expand all
261 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 265 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
262 266
263 EXPECT_FALSE(animator->is_animating()); 267 EXPECT_FALSE(animator->is_animating());
264 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); 268 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity);
265 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); 269 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds);
266 } 270 }
267 271
268 // Schedule two animations on the same property. In this case, the two 272 // Schedule two animations on the same property. In this case, the two
269 // animations should run one after another. 273 // animations should run one after another.
270 TEST(LayerAnimatorTest, ScheduleTwoAnimationsOnSameProperty) { 274 TEST(LayerAnimatorTest, ScheduleTwoAnimationsOnSameProperty) {
271 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 275 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
272 AnimationContainerElement* element = animator.get(); 276 AnimationContainerElement* element = animator.get();
273 animator->set_disable_timer_for_test(true); 277 animator->set_disable_timer_for_test(true);
274 TestLayerAnimationDelegate delegate; 278 TestLayerAnimationDelegate delegate;
275 animator->SetDelegate(&delegate); 279 animator->SetDelegate(&delegate);
276 280
277 double start_opacity(0.0); 281 double start_opacity(0.0);
278 double middle_opacity(0.5); 282 double middle_opacity(0.5);
279 double target_opacity(1.0); 283 double target_opacity(1.0);
280 284
281 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 285 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); 317 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000));
314 318
315 EXPECT_FALSE(animator->is_animating()); 319 EXPECT_FALSE(animator->is_animating());
316 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 320 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
317 } 321 }
318 322
319 // Schedule [{o}, {o,b}, {b}] and ensure that {b} doesn't run right away. That 323 // Schedule [{o}, {o,b}, {b}] and ensure that {b} doesn't run right away. That
320 // is, ensure that all animations targetting a particular property are run in 324 // is, ensure that all animations targetting a particular property are run in
321 // order. 325 // order.
322 TEST(LayerAnimatorTest, ScheduleBlockedAnimation) { 326 TEST(LayerAnimatorTest, ScheduleBlockedAnimation) {
323 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 327 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
324 AnimationContainerElement* element = animator.get(); 328 AnimationContainerElement* element = animator.get();
325 animator->set_disable_timer_for_test(true); 329 animator->set_disable_timer_for_test(true);
326 TestLayerAnimationDelegate delegate; 330 TestLayerAnimationDelegate delegate;
327 animator->SetDelegate(&delegate); 331 animator->SetDelegate(&delegate);
328 332
329 double start_opacity(0.0); 333 double start_opacity(0.0);
330 double middle_opacity(0.5); 334 double middle_opacity(0.5);
331 double target_opacity(1.0); 335 double target_opacity(1.0);
332 336
333 gfx::Rect start_bounds, target_bounds, middle_bounds; 337 gfx::Rect start_bounds, target_bounds, middle_bounds;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 395
392 EXPECT_FALSE(animator->is_animating()); 396 EXPECT_FALSE(animator->is_animating());
393 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 397 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
394 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), start_bounds); 398 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), start_bounds);
395 } 399 }
396 400
397 // Schedule {o} and then schedule {o} and {b} together. In this case, since 401 // Schedule {o} and then schedule {o} and {b} together. In this case, since
398 // ScheduleTogether is being used, the bounds animation should not start until 402 // ScheduleTogether is being used, the bounds animation should not start until
399 // the second opacity animation starts. 403 // the second opacity animation starts.
400 TEST(LayerAnimatorTest, ScheduleTogether) { 404 TEST(LayerAnimatorTest, ScheduleTogether) {
401 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 405 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
402 AnimationContainerElement* element = animator.get(); 406 AnimationContainerElement* element = animator.get();
403 animator->set_disable_timer_for_test(true); 407 animator->set_disable_timer_for_test(true);
404 TestLayerAnimationDelegate delegate; 408 TestLayerAnimationDelegate delegate;
405 animator->SetDelegate(&delegate); 409 animator->SetDelegate(&delegate);
406 410
407 double start_opacity(0.0); 411 double start_opacity(0.0);
408 double target_opacity(1.0); 412 double target_opacity(1.0);
409 413
410 gfx::Rect start_bounds, target_bounds, middle_bounds; 414 gfx::Rect start_bounds, target_bounds, middle_bounds;
411 start_bounds = target_bounds = gfx::Rect(0, 0, 50, 50); 415 start_bounds = target_bounds = gfx::Rect(0, 0, 50, 50);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); 448 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000));
445 449
446 EXPECT_FALSE(animator->is_animating()); 450 EXPECT_FALSE(animator->is_animating());
447 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 451 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
448 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); 452 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds);
449 } 453 }
450 454
451 // Start animation (that can run immediately). This is the trivial case (see 455 // Start animation (that can run immediately). This is the trivial case (see
452 // the trival case for ScheduleAnimation). 456 // the trival case for ScheduleAnimation).
453 TEST(LayerAnimatorTest, StartAnimationThatCanRunImmediately) { 457 TEST(LayerAnimatorTest, StartAnimationThatCanRunImmediately) {
454 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 458 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
455 AnimationContainerElement* element = animator.get(); 459 AnimationContainerElement* element = animator.get();
456 animator->set_disable_timer_for_test(true); 460 animator->set_disable_timer_for_test(true);
457 TestLayerAnimationDelegate delegate; 461 TestLayerAnimationDelegate delegate;
458 animator->SetDelegate(&delegate); 462 animator->SetDelegate(&delegate);
459 463
460 double start_opacity(0.0); 464 double start_opacity(0.0);
461 double middle_opacity(0.5); 465 double middle_opacity(0.5);
462 double target_opacity(1.0); 466 double target_opacity(1.0);
463 467
464 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 468 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
(...skipping 15 matching lines...) Expand all
480 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), middle_opacity); 484 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), middle_opacity);
481 485
482 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 486 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
483 487
484 EXPECT_FALSE(animator->is_animating()); 488 EXPECT_FALSE(animator->is_animating());
485 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); 489 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity);
486 } 490 }
487 491
488 // Preempt by immediately setting new target. 492 // Preempt by immediately setting new target.
489 TEST(LayerAnimatorTest, PreemptBySettingNewTarget) { 493 TEST(LayerAnimatorTest, PreemptBySettingNewTarget) {
490 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 494 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
491 animator->set_disable_timer_for_test(true); 495 animator->set_disable_timer_for_test(true);
492 TestLayerAnimationDelegate delegate; 496 TestLayerAnimationDelegate delegate;
493 animator->SetDelegate(&delegate); 497 animator->SetDelegate(&delegate);
494 498
495 double start_opacity(0.0); 499 double start_opacity(0.0);
496 double target_opacity(1.0); 500 double target_opacity(1.0);
497 501
498 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 502 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
499 503
500 delegate.SetOpacityFromAnimation(start_opacity); 504 delegate.SetOpacityFromAnimation(start_opacity);
501 505
502 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); 506 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET);
503 507
504 animator->StartAnimation( 508 animator->StartAnimation(
505 new LayerAnimationSequence( 509 new LayerAnimationSequence(
506 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); 510 LayerAnimationElement::CreateOpacityElement(target_opacity, delta)));
507 511
508 animator->StartAnimation( 512 animator->StartAnimation(
509 new LayerAnimationSequence( 513 new LayerAnimationSequence(
510 LayerAnimationElement::CreateOpacityElement(start_opacity, delta))); 514 LayerAnimationElement::CreateOpacityElement(start_opacity, delta)));
511 515
512 EXPECT_FALSE(animator->is_animating()); 516 EXPECT_FALSE(animator->is_animating());
513 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 517 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
514 } 518 }
515 519
516 // Preempt by animating to new target. 520 // Preempt by animating to new target.
517 TEST(LayerAnimatorTest, PreemptByImmediatelyAnimatingToNewTarget) { 521 TEST(LayerAnimatorTest, PreemptByImmediatelyAnimatingToNewTarget) {
518 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 522 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
519 AnimationContainerElement* element = animator.get(); 523 AnimationContainerElement* element = animator.get();
520 animator->set_disable_timer_for_test(true); 524 animator->set_disable_timer_for_test(true);
521 TestLayerAnimationDelegate delegate; 525 TestLayerAnimationDelegate delegate;
522 animator->SetDelegate(&delegate); 526 animator->SetDelegate(&delegate);
523 527
524 double start_opacity(0.0); 528 double start_opacity(0.0);
525 double middle_opacity(0.5); 529 double middle_opacity(0.5);
526 double target_opacity(1.0); 530 double target_opacity(1.0);
527 531
528 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 532 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 0.5 * (start_opacity + middle_opacity)); 564 0.5 * (start_opacity + middle_opacity));
561 565
562 element->Step(start_time + base::TimeDelta::FromMilliseconds(1500)); 566 element->Step(start_time + base::TimeDelta::FromMilliseconds(1500));
563 567
564 EXPECT_FALSE(animator->is_animating()); 568 EXPECT_FALSE(animator->is_animating());
565 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 569 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
566 } 570 }
567 571
568 // Preempt by enqueuing the new animation. 572 // Preempt by enqueuing the new animation.
569 TEST(LayerAnimatorTest, PreemptEnqueueNewAnimation) { 573 TEST(LayerAnimatorTest, PreemptEnqueueNewAnimation) {
570 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 574 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
571 AnimationContainerElement* element = animator.get(); 575 AnimationContainerElement* element = animator.get();
572 animator->set_disable_timer_for_test(true); 576 animator->set_disable_timer_for_test(true);
573 TestLayerAnimationDelegate delegate; 577 TestLayerAnimationDelegate delegate;
574 animator->SetDelegate(&delegate); 578 animator->SetDelegate(&delegate);
575 579
576 double start_opacity(0.0); 580 double start_opacity(0.0);
577 double middle_opacity(0.5); 581 double middle_opacity(0.5);
578 double target_opacity(1.0); 582 double target_opacity(1.0);
579 583
580 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 584 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); 617 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000));
614 618
615 EXPECT_FALSE(animator->is_animating()); 619 EXPECT_FALSE(animator->is_animating());
616 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 620 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
617 } 621 }
618 622
619 // Start an animation when there are sequences waiting in the queue. In this 623 // Start an animation when there are sequences waiting in the queue. In this
620 // case, all pending and running animations should be finished, and the new 624 // case, all pending and running animations should be finished, and the new
621 // animation started. 625 // animation started.
622 TEST(LayerAnimatorTest, PreemptyByReplacingQueuedAnimations) { 626 TEST(LayerAnimatorTest, PreemptyByReplacingQueuedAnimations) {
623 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 627 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
624 AnimationContainerElement* element = animator.get(); 628 AnimationContainerElement* element = animator.get();
625 animator->set_disable_timer_for_test(true); 629 animator->set_disable_timer_for_test(true);
626 TestLayerAnimationDelegate delegate; 630 TestLayerAnimationDelegate delegate;
627 animator->SetDelegate(&delegate); 631 animator->SetDelegate(&delegate);
628 632
629 double start_opacity(0.0); 633 double start_opacity(0.0);
630 double middle_opacity(0.5); 634 double middle_opacity(0.5);
631 double target_opacity(1.0); 635 double target_opacity(1.0);
632 636
633 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 637 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), middle_opacity); 672 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), middle_opacity);
669 673
670 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000)); 674 element->Step(start_time + base::TimeDelta::FromMilliseconds(2000));
671 675
672 EXPECT_FALSE(animator->is_animating()); 676 EXPECT_FALSE(animator->is_animating());
673 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity); 677 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), start_opacity);
674 } 678 }
675 679
676 // Test that cyclic sequences continue to animate. 680 // Test that cyclic sequences continue to animate.
677 TEST(LayerAnimatorTest, CyclicSequences) { 681 TEST(LayerAnimatorTest, CyclicSequences) {
678 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 682 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
679 AnimationContainerElement* element = animator.get(); 683 AnimationContainerElement* element = animator.get();
680 animator->set_disable_timer_for_test(true); 684 animator->set_disable_timer_for_test(true);
681 TestLayerAnimationDelegate delegate; 685 TestLayerAnimationDelegate delegate;
682 animator->SetDelegate(&delegate); 686 animator->SetDelegate(&delegate);
683 687
684 double start_opacity(0.0); 688 double start_opacity(0.0);
685 double target_opacity(1.0); 689 double target_opacity(1.0);
686 690
687 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 691 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
688 692
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 731
728 EXPECT_TRUE(animator->is_animating()); 732 EXPECT_TRUE(animator->is_animating());
729 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity); 733 EXPECT_FLOAT_EQ(delegate.GetOpacityForAnimation(), target_opacity);
730 734
731 animator->StopAnimatingProperty(LayerAnimationElement::OPACITY); 735 animator->StopAnimatingProperty(LayerAnimationElement::OPACITY);
732 736
733 EXPECT_FALSE(animator->is_animating()); 737 EXPECT_FALSE(animator->is_animating());
734 } 738 }
735 739
736 TEST(LayerAnimatorTest, AddObserverExplicit) { 740 TEST(LayerAnimatorTest, AddObserverExplicit) {
737 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 741 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
738 AnimationContainerElement* element = animator.get(); 742 AnimationContainerElement* element = animator.get();
739 animator->set_disable_timer_for_test(true); 743 animator->set_disable_timer_for_test(true);
740 TestLayerAnimationObserver observer; 744 TestLayerAnimationObserver observer;
741 TestLayerAnimationDelegate delegate; 745 TestLayerAnimationDelegate delegate;
742 animator->SetDelegate(&delegate); 746 animator->SetDelegate(&delegate);
743 animator->AddObserver(&observer); 747 animator->AddObserver(&observer);
744 observer.set_requires_notification_when_animator_destroyed(true); 748 observer.set_requires_notification_when_animator_destroyed(true);
745 749
746 EXPECT_TRUE(!observer.last_ended_sequence()); 750 EXPECT_TRUE(!observer.last_ended_sequence());
747 751
(...skipping 13 matching lines...) Expand all
761 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 765 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
762 766
763 EXPECT_EQ(observer.last_ended_sequence(), sequence); 767 EXPECT_EQ(observer.last_ended_sequence(), sequence);
764 768
765 // |sequence| has been destroyed. Recreate it to test abort. 769 // |sequence| has been destroyed. Recreate it to test abort.
766 sequence = new LayerAnimationSequence( 770 sequence = new LayerAnimationSequence(
767 LayerAnimationElement::CreateOpacityElement(1.0f, delta)); 771 LayerAnimationElement::CreateOpacityElement(1.0f, delta));
768 772
769 animator->StartAnimation(sequence); 773 animator->StartAnimation(sequence);
770 774
771 animator.reset(); 775 animator = NULL;
772 776
773 EXPECT_EQ(observer.last_aborted_sequence(), sequence); 777 EXPECT_EQ(observer.last_aborted_sequence(), sequence);
774 } 778 }
775 779
776 // Tests that an observer added to a scoped settings object is still notified 780 // Tests that an observer added to a scoped settings object is still notified
777 // when the object goes out of scope. 781 // when the object goes out of scope.
778 TEST(LayerAnimatorTest, ImplicitAnimationObservers) { 782 TEST(LayerAnimatorTest, ImplicitAnimationObservers) {
779 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 783 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
780 AnimationContainerElement* element = animator.get(); 784 AnimationContainerElement* element = animator.get();
781 animator->set_disable_timer_for_test(true); 785 animator->set_disable_timer_for_test(true);
782 TestImplicitAnimationObserver observer(false); 786 TestImplicitAnimationObserver observer(false);
783 TestLayerAnimationDelegate delegate; 787 TestLayerAnimationDelegate delegate;
784 animator->SetDelegate(&delegate); 788 animator->SetDelegate(&delegate);
785 789
786 EXPECT_FALSE(observer.animations_completed()); 790 EXPECT_FALSE(observer.animations_completed());
787 animator->SetOpacity(1.0f); 791 animator->SetOpacity(1.0f);
788 792
789 { 793 {
790 ScopedLayerAnimationSettings settings(animator.get()); 794 ScopedLayerAnimationSettings settings(animator.get());
791 settings.AddObserver(&observer); 795 settings.AddObserver(&observer);
792 animator->SetOpacity(0.0f); 796 animator->SetOpacity(0.0f);
793 } 797 }
794 798
795 EXPECT_FALSE(observer.animations_completed()); 799 EXPECT_FALSE(observer.animations_completed());
796 base::TimeTicks start_time = animator->last_step_time(); 800 base::TimeTicks start_time = animator->last_step_time();
797 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 801 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
798 EXPECT_TRUE(observer.animations_completed()); 802 EXPECT_TRUE(observer.animations_completed());
799 EXPECT_FLOAT_EQ(0.0f, delegate.GetOpacityForAnimation()); 803 EXPECT_FLOAT_EQ(0.0f, delegate.GetOpacityForAnimation());
800 } 804 }
801 805
802 // Tests that an observer added to a scoped settings object is still notified 806 // Tests that an observer added to a scoped settings object is still notified
803 // when the object goes out of scope due to the animation being interrupted. 807 // when the object goes out of scope due to the animation being interrupted.
804 TEST(LayerAnimatorTest, InterruptedImplicitAnimationObservers) { 808 TEST(LayerAnimatorTest, InterruptedImplicitAnimationObservers) {
805 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 809 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
806 animator->set_disable_timer_for_test(true); 810 animator->set_disable_timer_for_test(true);
807 TestImplicitAnimationObserver observer(false); 811 TestImplicitAnimationObserver observer(false);
808 TestLayerAnimationDelegate delegate; 812 TestLayerAnimationDelegate delegate;
809 animator->SetDelegate(&delegate); 813 animator->SetDelegate(&delegate);
810 814
811 EXPECT_FALSE(observer.animations_completed()); 815 EXPECT_FALSE(observer.animations_completed());
812 animator->SetOpacity(1.0f); 816 animator->SetOpacity(1.0f);
813 817
814 { 818 {
815 ScopedLayerAnimationSettings settings(animator.get()); 819 ScopedLayerAnimationSettings settings(animator.get());
816 settings.AddObserver(&observer); 820 settings.AddObserver(&observer);
817 animator->SetOpacity(0.0f); 821 animator->SetOpacity(0.0f);
818 } 822 }
819 823
820 EXPECT_FALSE(observer.animations_completed()); 824 EXPECT_FALSE(observer.animations_completed());
821 // This should interrupt the implicit animation causing the observer to be 825 // This should interrupt the implicit animation causing the observer to be
822 // notified immediately. 826 // notified immediately.
823 animator->SetOpacity(1.0f); 827 animator->SetOpacity(1.0f);
824 EXPECT_TRUE(observer.animations_completed()); 828 EXPECT_TRUE(observer.animations_completed());
825 EXPECT_FLOAT_EQ(1.0f, delegate.GetOpacityForAnimation()); 829 EXPECT_FLOAT_EQ(1.0f, delegate.GetOpacityForAnimation());
826 } 830 }
827 831
828 // Tests that an observer added to a scoped settings object is not notified 832 // Tests that an observer added to a scoped settings object is not notified
829 // when the animator is destroyed unless explicitly requested. 833 // when the animator is destroyed unless explicitly requested.
830 TEST(LayerAnimatorTest, ImplicitObserversAtAnimatorDestruction) { 834 TEST(LayerAnimatorTest, ImplicitObserversAtAnimatorDestruction) {
831 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 835 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
832 animator->set_disable_timer_for_test(true); 836 animator->set_disable_timer_for_test(true);
833 TestImplicitAnimationObserver observer_notify(true); 837 TestImplicitAnimationObserver observer_notify(true);
834 TestImplicitAnimationObserver observer_do_not_notify(false); 838 TestImplicitAnimationObserver observer_do_not_notify(false);
835 TestLayerAnimationDelegate delegate; 839 TestLayerAnimationDelegate delegate;
836 animator->SetDelegate(&delegate); 840 animator->SetDelegate(&delegate);
837 841
838 EXPECT_FALSE(observer_notify.animations_completed()); 842 EXPECT_FALSE(observer_notify.animations_completed());
839 EXPECT_FALSE(observer_do_not_notify.animations_completed()); 843 EXPECT_FALSE(observer_do_not_notify.animations_completed());
840 844
841 animator->SetOpacity(1.0f); 845 animator->SetOpacity(1.0f);
842 846
843 { 847 {
844 ScopedLayerAnimationSettings settings(animator.get()); 848 ScopedLayerAnimationSettings settings(animator.get());
845 settings.AddObserver(&observer_notify); 849 settings.AddObserver(&observer_notify);
846 settings.AddObserver(&observer_do_not_notify); 850 settings.AddObserver(&observer_do_not_notify);
847 animator->SetOpacity(0.0f); 851 animator->SetOpacity(0.0f);
848 } 852 }
849 853
850 EXPECT_FALSE(observer_notify.animations_completed()); 854 EXPECT_FALSE(observer_notify.animations_completed());
851 EXPECT_FALSE(observer_do_not_notify.animations_completed()); 855 EXPECT_FALSE(observer_do_not_notify.animations_completed());
852 animator.reset(NULL); 856 animator = NULL;
853 EXPECT_TRUE(observer_notify.animations_completed()); 857 EXPECT_TRUE(observer_notify.animations_completed());
854 EXPECT_FALSE(observer_do_not_notify.animations_completed()); 858 EXPECT_FALSE(observer_do_not_notify.animations_completed());
855 } 859 }
856 860
857 861
858 TEST(LayerAnimatorTest, RemoveObserverShouldRemoveFromSequences) { 862 TEST(LayerAnimatorTest, RemoveObserverShouldRemoveFromSequences) {
859 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 863 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
860 AnimationContainerElement* element = animator.get(); 864 AnimationContainerElement* element = animator.get();
861 animator->set_disable_timer_for_test(true); 865 animator->set_disable_timer_for_test(true);
862 TestLayerAnimationObserver observer; 866 TestLayerAnimationObserver observer;
863 TestLayerAnimationObserver removed_observer; 867 TestLayerAnimationObserver removed_observer;
864 TestLayerAnimationDelegate delegate; 868 TestLayerAnimationDelegate delegate;
865 animator->SetDelegate(&delegate); 869 animator->SetDelegate(&delegate);
866 870
867 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 871 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
868 872
869 LayerAnimationSequence* sequence = new LayerAnimationSequence( 873 LayerAnimationSequence* sequence = new LayerAnimationSequence(
(...skipping 14 matching lines...) Expand all
884 888
885 base::TimeTicks start_time = animator->last_step_time(); 889 base::TimeTicks start_time = animator->last_step_time();
886 890
887 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 891 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
888 892
889 EXPECT_EQ(observer.last_ended_sequence(), sequence); 893 EXPECT_EQ(observer.last_ended_sequence(), sequence);
890 EXPECT_TRUE(!removed_observer.last_ended_sequence()); 894 EXPECT_TRUE(!removed_observer.last_ended_sequence());
891 } 895 }
892 896
893 TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) { 897 TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) {
894 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 898 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
895 animator->set_disable_timer_for_test(true); 899 animator->set_disable_timer_for_test(true);
896 900
897 scoped_ptr<TestLayerAnimationObserver> observer( 901 scoped_ptr<TestLayerAnimationObserver> observer(
898 new TestLayerAnimationObserver); 902 new TestLayerAnimationObserver);
899 TestLayerAnimationDelegate delegate; 903 TestLayerAnimationDelegate delegate;
900 animator->SetDelegate(&delegate); 904 animator->SetDelegate(&delegate);
901 animator->AddObserver(observer.get()); 905 animator->AddObserver(observer.get());
902 906
903 delegate.SetOpacityFromAnimation(0.0f); 907 delegate.SetOpacityFromAnimation(0.0f);
904 908
905 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 909 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
906 LayerAnimationSequence* sequence = new LayerAnimationSequence( 910 LayerAnimationSequence* sequence = new LayerAnimationSequence(
907 LayerAnimationElement::CreateOpacityElement(1.0f, delta)); 911 LayerAnimationElement::CreateOpacityElement(1.0f, delta));
908 912
909 animator->StartAnimation(sequence); 913 animator->StartAnimation(sequence);
910 914
911 // |observer| should be attached to |sequence|. 915 // |observer| should be attached to |sequence|.
912 EXPECT_EQ(static_cast<size_t>(1), sequence->observers_.size()); 916 EXPECT_EQ(static_cast<size_t>(1), sequence->observers_.size());
913 917
914 // Now, release |observer| 918 // Now, release |observer|
915 observer.reset(); 919 observer.reset();
916 920
917 // And |sequence| should no longer be attached to |observer|. 921 // And |sequence| should no longer be attached to |observer|.
918 EXPECT_EQ(static_cast<size_t>(0), sequence->observers_.size()); 922 EXPECT_EQ(static_cast<size_t>(0), sequence->observers_.size());
919 } 923 }
920 924
921 TEST(LayerAnimatorTest, ObserverAttachedAfterAnimationStarted) { 925 TEST(LayerAnimatorTest, ObserverAttachedAfterAnimationStarted) {
922 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 926 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
923 AnimationContainerElement* element = animator.get(); 927 AnimationContainerElement* element = animator.get();
924 animator->set_disable_timer_for_test(true); 928 animator->set_disable_timer_for_test(true);
925 929
926 TestImplicitAnimationObserver observer(false); 930 TestImplicitAnimationObserver observer(false);
927 TestLayerAnimationDelegate delegate; 931 TestLayerAnimationDelegate delegate;
928 animator->SetDelegate(&delegate); 932 animator->SetDelegate(&delegate);
929 933
930 delegate.SetOpacityFromAnimation(0.0f); 934 delegate.SetOpacityFromAnimation(0.0f);
931 935
932 { 936 {
(...skipping 12 matching lines...) Expand all
945 // Start observing an in-flight animation. 949 // Start observing an in-flight animation.
946 sequence->AddObserver(&observer); 950 sequence->AddObserver(&observer);
947 951
948 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); 952 element->Step(start_time + base::TimeDelta::FromMilliseconds(1000));
949 } 953 }
950 954
951 EXPECT_TRUE(observer.animations_completed()); 955 EXPECT_TRUE(observer.animations_completed());
952 } 956 }
953 957
954 TEST(LayerAnimatorTest, ObserverDetachedBeforeAnimationFinished) { 958 TEST(LayerAnimatorTest, ObserverDetachedBeforeAnimationFinished) {
955 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 959 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
956 AnimationContainerElement* element = animator.get(); 960 AnimationContainerElement* element = animator.get();
957 animator->set_disable_timer_for_test(true); 961 animator->set_disable_timer_for_test(true);
958 962
959 TestImplicitAnimationObserver observer(false); 963 TestImplicitAnimationObserver observer(false);
960 TestLayerAnimationDelegate delegate; 964 TestLayerAnimationDelegate delegate;
961 animator->SetDelegate(&delegate); 965 animator->SetDelegate(&delegate);
962 966
963 delegate.SetOpacityFromAnimation(0.0f); 967 delegate.SetOpacityFromAnimation(0.0f);
964 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 968 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
965 LayerAnimationSequence* sequence = new LayerAnimationSequence( 969 LayerAnimationSequence* sequence = new LayerAnimationSequence(
(...skipping 16 matching lines...) Expand all
982 EXPECT_TRUE(observer.animations_completed()); 986 EXPECT_TRUE(observer.animations_completed());
983 } 987 }
984 988
985 // This checks that if an animation is deleted due to a callback, that the 989 // This checks that if an animation is deleted due to a callback, that the
986 // animator does not try to use the deleted animation. For example, if we have 990 // animator does not try to use the deleted animation. For example, if we have
987 // two running animations, and the first finishes and the resulting callback 991 // two running animations, and the first finishes and the resulting callback
988 // causes the second to be deleted, we should not attempt to animate the second 992 // causes the second to be deleted, we should not attempt to animate the second
989 // animation. 993 // animation.
990 TEST(LayerAnimatorTest, ObserverDeletesAnimations) { 994 TEST(LayerAnimatorTest, ObserverDeletesAnimations) {
991 LayerAnimator::set_disable_animations_for_test(false); 995 LayerAnimator::set_disable_animations_for_test(false);
992 scoped_ptr<LayerAnimator> animator(new TestLayerAnimator()); 996 scoped_refptr<LayerAnimator> animator(new TestLayerAnimator());
993 AnimationContainerElement* element = animator.get(); 997 AnimationContainerElement* element = animator.get();
994 animator->set_disable_timer_for_test(true); 998 animator->set_disable_timer_for_test(true);
995 TestLayerAnimationDelegate delegate; 999 TestLayerAnimationDelegate delegate;
996 animator->SetDelegate(&delegate); 1000 animator->SetDelegate(&delegate);
997 1001
998 double start_opacity(0.0); 1002 double start_opacity(0.0);
999 double target_opacity(1.0); 1003 double target_opacity(1.0);
1000 1004
1001 gfx::Rect start_bounds(0, 0, 50, 50); 1005 gfx::Rect start_bounds(0, 0, 50, 50);
1002 gfx::Rect target_bounds(5, 5, 5, 5); 1006 gfx::Rect target_bounds(5, 5, 5, 5);
(...skipping 22 matching lines...) Expand all
1025 1029
1026 base::TimeTicks start_time = animator->last_step_time(); 1030 base::TimeTicks start_time = animator->last_step_time();
1027 element->Step(start_time + halfway_delta); 1031 element->Step(start_time + halfway_delta);
1028 1032
1029 animator->RemoveObserver(observer.get()); 1033 animator->RemoveObserver(observer.get());
1030 } 1034 }
1031 1035
1032 // Check that setting a property during an animation with a default animator 1036 // Check that setting a property during an animation with a default animator
1033 // cancels the original animation. 1037 // cancels the original animation.
1034 TEST(LayerAnimatorTest, SettingPropertyDuringAnAnimation) { 1038 TEST(LayerAnimatorTest, SettingPropertyDuringAnAnimation) {
1035 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 1039 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
1036 animator->set_disable_timer_for_test(true); 1040 animator->set_disable_timer_for_test(true);
1037 TestLayerAnimationDelegate delegate; 1041 TestLayerAnimationDelegate delegate;
1038 animator->SetDelegate(&delegate); 1042 animator->SetDelegate(&delegate);
1039 1043
1040 double start_opacity(0.0); 1044 double start_opacity(0.0);
1041 double target_opacity(1.0); 1045 double target_opacity(1.0);
1042 1046
1043 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); 1047 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
1044 1048
1045 delegate.SetOpacityFromAnimation(start_opacity); 1049 delegate.SetOpacityFromAnimation(start_opacity);
1046 1050
1047 scoped_ptr<LayerAnimationSequence> sequence( 1051 scoped_ptr<LayerAnimationSequence> sequence(
1048 new LayerAnimationSequence( 1052 new LayerAnimationSequence(
1049 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); 1053 LayerAnimationElement::CreateOpacityElement(target_opacity, delta)));
1050 1054
1051 animator->StartAnimation(sequence.release()); 1055 animator->StartAnimation(sequence.release());
1052 1056
1053 animator->SetOpacity(0.5); 1057 animator->SetOpacity(0.5);
1054 1058
1055 EXPECT_FALSE(animator->is_animating()); 1059 EXPECT_FALSE(animator->is_animating());
1056 EXPECT_EQ(0.5, animator->GetTargetOpacity()); 1060 EXPECT_EQ(0.5, animator->GetTargetOpacity());
1057 } 1061 }
1058 1062
1059 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the 1063 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the
1060 // second sequence to be leaked. 1064 // second sequence to be leaked.
1061 TEST(LayerAnimatorTest, ImmediatelySettingNewTargetDoesNotLeak) { 1065 TEST(LayerAnimatorTest, ImmediatelySettingNewTargetDoesNotLeak) {
1062 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 1066 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
1063 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); 1067 animator->set_preemption_strategy(LayerAnimator::IMMEDIATELY_SET_NEW_TARGET);
1064 animator->set_disable_timer_for_test(true); 1068 animator->set_disable_timer_for_test(true);
1065 TestLayerAnimationDelegate delegate; 1069 TestLayerAnimationDelegate delegate;
1066 animator->SetDelegate(&delegate); 1070 animator->SetDelegate(&delegate);
1067 1071
1068 gfx::Rect start_bounds(0, 0, 50, 50); 1072 gfx::Rect start_bounds(0, 0, 50, 50);
1069 gfx::Rect middle_bounds(10, 10, 100, 100); 1073 gfx::Rect middle_bounds(10, 10, 100, 100);
1070 gfx::Rect target_bounds(5, 5, 5, 5); 1074 gfx::Rect target_bounds(5, 5, 5, 5);
1071 1075
1072 delegate.SetBoundsFromAnimation(start_bounds); 1076 delegate.SetBoundsFromAnimation(start_bounds);
(...skipping 19 matching lines...) Expand all
1092 // the target value. The sequence should alse be destructed. 1096 // the target value. The sequence should alse be destructed.
1093 animator->StartAnimation(sequence.release()); 1097 animator->StartAnimation(sequence.release());
1094 1098
1095 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); 1099 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS));
1096 EXPECT_EQ(0, num_live_instances); 1100 EXPECT_EQ(0, num_live_instances);
1097 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds); 1101 CheckApproximatelyEqual(delegate.GetBoundsForAnimation(), target_bounds);
1098 } 1102 }
1099 1103
1100 // Verifies GetTargetOpacity() works when multiple sequences are scheduled. 1104 // Verifies GetTargetOpacity() works when multiple sequences are scheduled.
1101 TEST(LayerAnimatorTest, GetTargetOpacity) { 1105 TEST(LayerAnimatorTest, GetTargetOpacity) {
1102 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 1106 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
1103 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); 1107 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION);
1104 animator->set_disable_timer_for_test(true); 1108 animator->set_disable_timer_for_test(true);
1105 TestLayerAnimationDelegate delegate; 1109 TestLayerAnimationDelegate delegate;
1106 animator->SetDelegate(&delegate); 1110 animator->SetDelegate(&delegate);
1107 1111
1108 delegate.SetOpacityFromAnimation(0.0); 1112 delegate.SetOpacityFromAnimation(0.0);
1109 1113
1110 { 1114 {
1111 ScopedLayerAnimationSettings settings(animator.get()); 1115 ScopedLayerAnimationSettings settings(animator.get());
1112 animator->SetOpacity(0.5); 1116 animator->SetOpacity(0.5);
1113 EXPECT_EQ(0.5, animator->GetTargetOpacity()); 1117 EXPECT_EQ(0.5, animator->GetTargetOpacity());
1114 1118
1115 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. 1119 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1.
1116 animator->SetOpacity(1.0); 1120 animator->SetOpacity(1.0);
1117 EXPECT_EQ(1.0, animator->GetTargetOpacity()); 1121 EXPECT_EQ(1.0, animator->GetTargetOpacity());
1118 } 1122 }
1119 } 1123 }
1120 1124
1121 // Verifies GetTargetBrightness() works when multiple sequences are scheduled. 1125 // Verifies GetTargetBrightness() works when multiple sequences are scheduled.
1122 TEST(LayerAnimatorTest, GetTargetBrightness) { 1126 TEST(LayerAnimatorTest, GetTargetBrightness) {
1123 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 1127 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
1124 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); 1128 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION);
1125 animator->set_disable_timer_for_test(true); 1129 animator->set_disable_timer_for_test(true);
1126 TestLayerAnimationDelegate delegate; 1130 TestLayerAnimationDelegate delegate;
1127 animator->SetDelegate(&delegate); 1131 animator->SetDelegate(&delegate);
1128 1132
1129 delegate.SetBrightnessFromAnimation(0.0); 1133 delegate.SetBrightnessFromAnimation(0.0);
1130 1134
1131 { 1135 {
1132 ScopedLayerAnimationSettings settings(animator.get()); 1136 ScopedLayerAnimationSettings settings(animator.get());
1133 animator->SetBrightness(0.5); 1137 animator->SetBrightness(0.5);
1134 EXPECT_EQ(0.5, animator->GetTargetBrightness()); 1138 EXPECT_EQ(0.5, animator->GetTargetBrightness());
1135 1139
1136 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. 1140 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1.
1137 animator->SetBrightness(1.0); 1141 animator->SetBrightness(1.0);
1138 EXPECT_EQ(1.0, animator->GetTargetBrightness()); 1142 EXPECT_EQ(1.0, animator->GetTargetBrightness());
1139 } 1143 }
1140 } 1144 }
1141 1145
1142 // Verifies GetTargetGrayscale() works when multiple sequences are scheduled. 1146 // Verifies GetTargetGrayscale() works when multiple sequences are scheduled.
1143 TEST(LayerAnimatorTest, GetTargetGrayscale) { 1147 TEST(LayerAnimatorTest, GetTargetGrayscale) {
1144 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 1148 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
1145 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); 1149 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION);
1146 animator->set_disable_timer_for_test(true); 1150 animator->set_disable_timer_for_test(true);
1147 TestLayerAnimationDelegate delegate; 1151 TestLayerAnimationDelegate delegate;
1148 animator->SetDelegate(&delegate); 1152 animator->SetDelegate(&delegate);
1149 1153
1150 delegate.SetGrayscaleFromAnimation(0.0); 1154 delegate.SetGrayscaleFromAnimation(0.0);
1151 1155
1152 { 1156 {
1153 ScopedLayerAnimationSettings settings(animator.get()); 1157 ScopedLayerAnimationSettings settings(animator.get());
1154 animator->SetGrayscale(0.5); 1158 animator->SetGrayscale(0.5);
1155 EXPECT_EQ(0.5, animator->GetTargetGrayscale()); 1159 EXPECT_EQ(0.5, animator->GetTargetGrayscale());
1156 1160
1157 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1. 1161 // Because the strategy is ENQUEUE_NEW_ANIMATION the target should now be 1.
1158 animator->SetGrayscale(1.0); 1162 animator->SetGrayscale(1.0);
1159 EXPECT_EQ(1.0, animator->GetTargetGrayscale()); 1163 EXPECT_EQ(1.0, animator->GetTargetGrayscale());
1160 } 1164 }
1161 } 1165 }
1162 1166
1163 // Verifies SchedulePauseForProperties(). 1167 // Verifies SchedulePauseForProperties().
1164 TEST(LayerAnimatorTest, SchedulePauseForProperties) { 1168 TEST(LayerAnimatorTest, SchedulePauseForProperties) {
1165 scoped_ptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator()); 1169 scoped_refptr<LayerAnimator> animator(LayerAnimator::CreateDefaultAnimator());
1166 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION); 1170 animator->set_preemption_strategy(LayerAnimator::ENQUEUE_NEW_ANIMATION);
1167 animator->SchedulePauseForProperties(base::TimeDelta::FromMilliseconds(100), 1171 animator->SchedulePauseForProperties(base::TimeDelta::FromMilliseconds(100),
1168 LayerAnimationElement::TRANSFORM, 1172 LayerAnimationElement::TRANSFORM,
1169 LayerAnimationElement::BOUNDS, -1); 1173 LayerAnimationElement::BOUNDS, -1);
1170 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::TRANSFORM)); 1174 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::TRANSFORM));
1171 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); 1175 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS));
1172 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::OPACITY)); 1176 EXPECT_FALSE(animator->IsAnimatingProperty(LayerAnimationElement::OPACITY));
1173 } 1177 }
1174 1178
1179
1180 class AnimatorOwner {
1181 public:
1182 AnimatorOwner()
1183 : animator_(LayerAnimator::CreateDefaultAnimator()) {
1184 }
1185
1186 LayerAnimator* animator() { return animator_.get(); }
1187
1188 private:
1189 scoped_refptr<LayerAnimator> animator_;
1190
1191 DISALLOW_COPY_AND_ASSIGN(AnimatorOwner);
1192 };
1193
1194 class DeletingObserver : public LayerAnimationObserver {
1195 public:
1196 DeletingObserver(bool* was_deleted)
1197 : animator_owner_(new AnimatorOwner),
1198 delete_on_animation_ended_(false),
1199 delete_on_animation_aborted_(false),
1200 delete_on_animation_scheduled_(false),
1201 was_deleted_(was_deleted) {
1202 animator()->AddObserver(this);
1203 }
1204
1205 ~DeletingObserver() {
1206 animator()->RemoveObserver(this);
1207 *was_deleted_ = true;
1208 }
1209
1210 LayerAnimator* animator() { return animator_owner_->animator(); }
1211
1212 bool delete_on_animation_ended() const {
1213 return delete_on_animation_ended_;
1214 }
1215 void set_delete_on_animation_ended(bool enabled) {
1216 delete_on_animation_ended_ = enabled;
1217 }
1218
1219 bool delete_on_animation_aborted() const {
1220 return delete_on_animation_aborted_;
1221 }
1222 void set_delete_on_animation_aborted(bool enabled) {
1223 delete_on_animation_aborted_ = enabled;
1224 }
1225
1226 bool delete_on_animation_scheduled() const {
1227 return delete_on_animation_scheduled_;
1228 }
1229 void set_delete_on_animation_scheduled(bool enabled) {
1230 delete_on_animation_scheduled_ = enabled;
1231 }
1232
1233 // LayerAnimationObserver implementation.
1234 virtual void OnLayerAnimationEnded(
1235 LayerAnimationSequence* sequence) OVERRIDE {
1236 if (delete_on_animation_ended_)
1237 delete this;
1238 }
1239
1240 virtual void OnLayerAnimationAborted(
1241 LayerAnimationSequence* sequence) OVERRIDE {
1242 if (delete_on_animation_aborted_)
1243 delete this;
1244 }
1245
1246 virtual void OnLayerAnimationScheduled(
1247 LayerAnimationSequence* sequence) {
1248 if (delete_on_animation_scheduled_)
1249 delete this;
1250 }
1251
1252 private:
1253 scoped_ptr<AnimatorOwner> animator_owner_;
1254 bool delete_on_animation_ended_;
1255 bool delete_on_animation_aborted_;
1256 bool delete_on_animation_scheduled_;
1257 bool* was_deleted_;
1258
1259 DISALLOW_COPY_AND_ASSIGN(DeletingObserver);
1260 };
1261
1262 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterFinishingAnimation) {
1263 bool observer_was_deleted = false;
1264 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted);
1265 observer->set_delete_on_animation_ended(true);
1266 observer->set_delete_on_animation_aborted(true);
1267 LayerAnimator* animator = observer->animator();
1268 AnimationContainerElement* element = observer->animator();
1269 animator->set_disable_timer_for_test(true);
1270 TestLayerAnimationDelegate delegate;
1271 animator->SetDelegate(&delegate);
1272
1273 delegate.SetOpacityFromAnimation(0.0f);
1274
1275 gfx::Rect start_bounds(0, 0, 50, 50);
1276 gfx::Rect target_bounds(10, 10, 100, 100);
1277
1278 delegate.SetBoundsFromAnimation(start_bounds);
1279
1280 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
1281 LayerAnimationSequence* opacity_sequence = new LayerAnimationSequence(
1282 LayerAnimationElement::CreateOpacityElement(1.0f, delta));
1283 animator->StartAnimation(opacity_sequence);
1284
1285 delta = base::TimeDelta::FromSeconds(2);
1286 LayerAnimationSequence* bounds_sequence = new LayerAnimationSequence(
1287 LayerAnimationElement::CreateBoundsElement(target_bounds, delta));
1288 animator->StartAnimation(bounds_sequence);
1289
1290 base::TimeTicks start_time = animator->last_step_time();
1291 element->Step(start_time + base::TimeDelta::FromMilliseconds(1500));
1292
1293 EXPECT_TRUE(observer_was_deleted);
1294 }
1295
1296 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterStoppingAnimating) {
1297 bool observer_was_deleted = false;
1298 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted);
1299 observer->set_delete_on_animation_ended(true);
1300 observer->set_delete_on_animation_aborted(true);
1301 LayerAnimator* animator = observer->animator();
1302 animator->set_disable_timer_for_test(true);
1303 TestLayerAnimationDelegate delegate;
1304 animator->SetDelegate(&delegate);
1305
1306 delegate.SetOpacityFromAnimation(0.0f);
1307
1308 gfx::Rect start_bounds(0, 0, 50, 50);
1309 gfx::Rect target_bounds(10, 10, 100, 100);
1310
1311 delegate.SetBoundsFromAnimation(start_bounds);
1312
1313 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
1314 LayerAnimationSequence* opacity_sequence = new LayerAnimationSequence(
1315 LayerAnimationElement::CreateOpacityElement(1.0f, delta));
1316 animator->StartAnimation(opacity_sequence);
1317
1318 delta = base::TimeDelta::FromSeconds(2);
1319 LayerAnimationSequence* bounds_sequence = new LayerAnimationSequence(
1320 LayerAnimationElement::CreateBoundsElement(target_bounds, delta));
1321 animator->StartAnimation(bounds_sequence);
1322
1323 animator->StopAnimating();
1324
1325 EXPECT_TRUE(observer_was_deleted);
1326 }
1327
1328 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterScheduling) {
1329 bool observer_was_deleted = false;
1330 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted);
1331 observer->set_delete_on_animation_scheduled(true);
1332 LayerAnimator* animator = observer->animator();
1333 animator->set_disable_timer_for_test(true);
1334 TestLayerAnimationDelegate delegate;
1335 animator->SetDelegate(&delegate);
1336
1337 delegate.SetOpacityFromAnimation(0.0f);
1338
1339 gfx::Rect start_bounds(0, 0, 50, 50);
1340 gfx::Rect target_bounds(10, 10, 100, 100);
1341
1342 delegate.SetBoundsFromAnimation(start_bounds);
1343
1344 std::vector<LayerAnimationSequence*> to_start;
1345
1346 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
1347 to_start.push_back(new LayerAnimationSequence(
1348 LayerAnimationElement::CreateOpacityElement(1.0f, delta)));
1349
1350 delta = base::TimeDelta::FromSeconds(2);
1351 to_start.push_back(new LayerAnimationSequence(
1352 LayerAnimationElement::CreateBoundsElement(target_bounds, delta)));
1353
1354 animator->ScheduleTogether(to_start);
1355
1356 EXPECT_TRUE(observer_was_deleted);
1357 }
1358
1359 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterAborted) {
1360 bool observer_was_deleted = false;
1361 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted);
1362 observer->set_delete_on_animation_aborted(true);
1363 LayerAnimator* animator = observer->animator();
1364 animator->set_preemption_strategy(
1365 LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
1366 animator->set_disable_timer_for_test(true);
1367 TestLayerAnimationDelegate delegate;
1368 animator->SetDelegate(&delegate);
1369
1370 delegate.SetOpacityFromAnimation(0.0f);
1371
1372 gfx::Rect start_bounds(0, 0, 50, 50);
1373 gfx::Rect target_bounds(10, 10, 100, 100);
1374
1375 delegate.SetBoundsFromAnimation(start_bounds);
1376
1377 std::vector<LayerAnimationSequence*> to_start;
1378
1379 base::TimeDelta delta = base::TimeDelta::FromSeconds(1);
1380 to_start.push_back(new LayerAnimationSequence(
1381 LayerAnimationElement::CreateOpacityElement(1.0f, delta)));
1382
1383 delta = base::TimeDelta::FromSeconds(2);
1384 to_start.push_back(new LayerAnimationSequence(
1385 LayerAnimationElement::CreateBoundsElement(target_bounds, delta)));
1386
1387 animator->ScheduleTogether(to_start);
1388
1389 EXPECT_FALSE(observer_was_deleted);
1390
1391 animator->StartAnimation(new LayerAnimationSequence(
1392 LayerAnimationElement::CreateOpacityElement(1.0f, delta)));
1393
1394 EXPECT_TRUE(observer_was_deleted);
1395 }
1396
1175 } // namespace ui 1397 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/layer_animator.cc ('k') | ui/views/view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698