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> |
| 8 |
7 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
8 #include "base/macros.h" | 10 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
11 #include "base/time/time.h" | 12 #include "base/time/time.h" |
12 #include "cc/animation/animation_events.h" | 13 #include "cc/animation/animation_events.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "ui/compositor/layer.h" | 15 #include "ui/compositor/layer.h" |
15 #include "ui/compositor/layer_animation_delegate.h" | 16 #include "ui/compositor/layer_animation_delegate.h" |
16 #include "ui/compositor/layer_animation_element.h" | 17 #include "ui/compositor/layer_animation_element.h" |
17 #include "ui/compositor/layer_animation_sequence.h" | 18 #include "ui/compositor/layer_animation_sequence.h" |
18 #include "ui/compositor/layer_animator_collection.h" | 19 #include "ui/compositor/layer_animator_collection.h" |
19 #include "ui/compositor/scoped_animation_duration_scale_mode.h" | 20 #include "ui/compositor/scoped_animation_duration_scale_mode.h" |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 573 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
573 | 574 |
574 delegate.SetGrayscaleFromAnimation(start_grayscale); | 575 delegate.SetGrayscaleFromAnimation(start_grayscale); |
575 delegate.SetBoundsFromAnimation(start_bounds); | 576 delegate.SetBoundsFromAnimation(start_bounds); |
576 | 577 |
577 animator->ScheduleAnimation( | 578 animator->ScheduleAnimation( |
578 new LayerAnimationSequence( | 579 new LayerAnimationSequence( |
579 LayerAnimationElement::CreateGrayscaleElement(target_grayscale, | 580 LayerAnimationElement::CreateGrayscaleElement(target_grayscale, |
580 delta))); | 581 delta))); |
581 | 582 |
582 scoped_ptr<LayerAnimationSequence> bounds_and_grayscale( | 583 std::unique_ptr<LayerAnimationSequence> bounds_and_grayscale( |
583 new LayerAnimationSequence( | 584 new LayerAnimationSequence(LayerAnimationElement::CreateGrayscaleElement( |
584 LayerAnimationElement::CreateGrayscaleElement(start_grayscale, | 585 start_grayscale, delta))); |
585 delta))); | |
586 | 586 |
587 bounds_and_grayscale->AddElement( | 587 bounds_and_grayscale->AddElement( |
588 LayerAnimationElement::CreateBoundsElement(target_bounds, delta)); | 588 LayerAnimationElement::CreateBoundsElement(target_bounds, delta)); |
589 | 589 |
590 animator->ScheduleAnimation(bounds_and_grayscale.release()); | 590 animator->ScheduleAnimation(bounds_and_grayscale.release()); |
591 | 591 |
592 animator->ScheduleAnimation( | 592 animator->ScheduleAnimation( |
593 new LayerAnimationSequence( | 593 new LayerAnimationSequence( |
594 LayerAnimationElement::CreateBoundsElement(start_bounds, delta))); | 594 LayerAnimationElement::CreateBoundsElement(start_bounds, delta))); |
595 | 595 |
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1380 TestLayerAnimationDelegate delegate; | 1380 TestLayerAnimationDelegate delegate; |
1381 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); | 1381 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1382 | 1382 |
1383 double start_brightness(0.0); | 1383 double start_brightness(0.0); |
1384 double target_brightness(1.0); | 1384 double target_brightness(1.0); |
1385 | 1385 |
1386 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1386 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1387 | 1387 |
1388 delegate.SetBrightnessFromAnimation(start_brightness); | 1388 delegate.SetBrightnessFromAnimation(start_brightness); |
1389 | 1389 |
1390 scoped_ptr<LayerAnimationSequence> sequence( | 1390 std::unique_ptr<LayerAnimationSequence> sequence( |
1391 new LayerAnimationSequence( | 1391 new LayerAnimationSequence(LayerAnimationElement::CreateBrightnessElement( |
1392 LayerAnimationElement::CreateBrightnessElement(target_brightness, | 1392 target_brightness, delta))); |
1393 delta))); | |
1394 | 1393 |
1395 sequence->AddElement( | 1394 sequence->AddElement( |
1396 LayerAnimationElement::CreateBrightnessElement(start_brightness, delta)); | 1395 LayerAnimationElement::CreateBrightnessElement(start_brightness, delta)); |
1397 | 1396 |
1398 sequence->set_is_cyclic(true); | 1397 sequence->set_is_cyclic(true); |
1399 | 1398 |
1400 animator->StartAnimation(sequence.release()); | 1399 animator->StartAnimation(sequence.release()); |
1401 | 1400 |
1402 base::TimeTicks start_time = animator->last_step_time(); | 1401 base::TimeTicks start_time = animator->last_step_time(); |
1403 | 1402 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1440 CreateDefaultTestAnimator(&delegate)); | 1439 CreateDefaultTestAnimator(&delegate)); |
1441 LayerAnimator* animator = test_controller.animator(); | 1440 LayerAnimator* animator = test_controller.animator(); |
1442 | 1441 |
1443 double start_opacity(0.0); | 1442 double start_opacity(0.0); |
1444 double target_opacity(1.0); | 1443 double target_opacity(1.0); |
1445 | 1444 |
1446 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1445 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1447 | 1446 |
1448 delegate.SetOpacityFromAnimation(start_opacity); | 1447 delegate.SetOpacityFromAnimation(start_opacity); |
1449 | 1448 |
1450 scoped_ptr<LayerAnimationSequence> sequence( | 1449 std::unique_ptr<LayerAnimationSequence> sequence(new LayerAnimationSequence( |
1451 new LayerAnimationSequence( | 1450 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); |
1452 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); | |
1453 | 1451 |
1454 sequence->AddElement( | 1452 sequence->AddElement( |
1455 LayerAnimationElement::CreateOpacityElement(start_opacity, delta)); | 1453 LayerAnimationElement::CreateOpacityElement(start_opacity, delta)); |
1456 | 1454 |
1457 sequence->set_is_cyclic(true); | 1455 sequence->set_is_cyclic(true); |
1458 | 1456 |
1459 test_controller.animator()->StartAnimation(sequence.release()); | 1457 test_controller.animator()->StartAnimation(sequence.release()); |
1460 | 1458 |
1461 base::TimeTicks start_time = test_controller.animator()->last_step_time(); | 1459 base::TimeTicks start_time = test_controller.animator()->last_step_time(); |
1462 base::TimeTicks effective_start = start_time + delta; | 1460 base::TimeTicks effective_start = start_time + delta; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1731 base::TimeTicks start_time = animator->last_step_time(); | 1729 base::TimeTicks start_time = animator->last_step_time(); |
1732 | 1730 |
1733 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); | 1731 animator->Step(start_time + base::TimeDelta::FromMilliseconds(1000)); |
1734 | 1732 |
1735 EXPECT_EQ(observer.last_ended_sequence(), sequence); | 1733 EXPECT_EQ(observer.last_ended_sequence(), sequence); |
1736 EXPECT_TRUE(!removed_observer.last_ended_sequence()); | 1734 EXPECT_TRUE(!removed_observer.last_ended_sequence()); |
1737 } | 1735 } |
1738 | 1736 |
1739 TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) { | 1737 TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) { |
1740 TestLayerAnimationDelegate delegate; | 1738 TestLayerAnimationDelegate delegate; |
1741 scoped_ptr<TestLayerAnimationObserver> observer( | 1739 std::unique_ptr<TestLayerAnimationObserver> observer( |
1742 new TestLayerAnimationObserver); | 1740 new TestLayerAnimationObserver); |
1743 scoped_refptr<LayerAnimator> animator( | 1741 scoped_refptr<LayerAnimator> animator( |
1744 CreateDefaultTestAnimator(&delegate, observer.get())); | 1742 CreateDefaultTestAnimator(&delegate, observer.get())); |
1745 | 1743 |
1746 delegate.SetOpacityFromAnimation(0.0f); | 1744 delegate.SetOpacityFromAnimation(0.0f); |
1747 | 1745 |
1748 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1746 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
1749 LayerAnimationSequence* sequence = new LayerAnimationSequence( | 1747 LayerAnimationSequence* sequence = new LayerAnimationSequence( |
1750 LayerAnimationElement::CreateOpacityElement(1.0f, delta)); | 1748 LayerAnimationElement::CreateOpacityElement(1.0f, delta)); |
1751 | 1749 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1846 gfx::Rect start_bounds(0, 0, 50, 50); | 1844 gfx::Rect start_bounds(0, 0, 50, 50); |
1847 gfx::Rect target_bounds(5, 5, 5, 5); | 1845 gfx::Rect target_bounds(5, 5, 5, 5); |
1848 | 1846 |
1849 delegate.SetBrightnessFromAnimation(start_brightness); | 1847 delegate.SetBrightnessFromAnimation(start_brightness); |
1850 delegate.SetBoundsFromAnimation(start_bounds); | 1848 delegate.SetBoundsFromAnimation(start_bounds); |
1851 | 1849 |
1852 base::TimeDelta brightness_delta = base::TimeDelta::FromSeconds(1); | 1850 base::TimeDelta brightness_delta = base::TimeDelta::FromSeconds(1); |
1853 base::TimeDelta halfway_delta = base::TimeDelta::FromSeconds(2); | 1851 base::TimeDelta halfway_delta = base::TimeDelta::FromSeconds(2); |
1854 base::TimeDelta bounds_delta = base::TimeDelta::FromSeconds(3); | 1852 base::TimeDelta bounds_delta = base::TimeDelta::FromSeconds(3); |
1855 | 1853 |
1856 scoped_ptr<DeletingLayerAnimationObserver> observer( | 1854 std::unique_ptr<DeletingLayerAnimationObserver> observer( |
1857 new DeletingLayerAnimationObserver(animator.get())); | 1855 new DeletingLayerAnimationObserver(animator.get())); |
1858 | 1856 |
1859 animator->AddObserver(observer.get()); | 1857 animator->AddObserver(observer.get()); |
1860 | 1858 |
1861 animator->StartAnimation( | 1859 animator->StartAnimation( |
1862 new LayerAnimationSequence( | 1860 new LayerAnimationSequence( |
1863 LayerAnimationElement::CreateBrightnessElement( | 1861 LayerAnimationElement::CreateBrightnessElement( |
1864 target_brightness, brightness_delta))); | 1862 target_brightness, brightness_delta))); |
1865 | 1863 |
1866 animator->StartAnimation(new LayerAnimationSequence( | 1864 animator->StartAnimation(new LayerAnimationSequence( |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 double start_brightness(0.0); | 1951 double start_brightness(0.0); |
1954 double target_brightness(1.0); | 1952 double target_brightness(1.0); |
1955 gfx::Rect start_bounds(0, 0, 50, 50); | 1953 gfx::Rect start_bounds(0, 0, 50, 50); |
1956 gfx::Rect target_bounds(5, 5, 5, 5); | 1954 gfx::Rect target_bounds(5, 5, 5, 5); |
1957 base::TimeDelta brightness_delta = base::TimeDelta::FromSeconds(1); | 1955 base::TimeDelta brightness_delta = base::TimeDelta::FromSeconds(1); |
1958 base::TimeDelta bounds_delta = base::TimeDelta::FromSeconds(2); | 1956 base::TimeDelta bounds_delta = base::TimeDelta::FromSeconds(2); |
1959 | 1957 |
1960 delegate.SetBrightnessFromAnimation(start_brightness); | 1958 delegate.SetBrightnessFromAnimation(start_brightness); |
1961 delegate.SetBoundsFromAnimation(start_bounds); | 1959 delegate.SetBoundsFromAnimation(start_bounds); |
1962 | 1960 |
1963 scoped_ptr<DeletingLayerAnimationObserver> observer( | 1961 std::unique_ptr<DeletingLayerAnimationObserver> observer( |
1964 new DeletingLayerAnimationObserver(animator.get())); | 1962 new DeletingLayerAnimationObserver(animator.get())); |
1965 animator->AddObserver(observer.get()); | 1963 animator->AddObserver(observer.get()); |
1966 | 1964 |
1967 animator->StartAnimation( | 1965 animator->StartAnimation( |
1968 new LayerAnimationSequence( | 1966 new LayerAnimationSequence( |
1969 LayerAnimationElement::CreateBrightnessElement( | 1967 LayerAnimationElement::CreateBrightnessElement( |
1970 target_brightness, brightness_delta))); | 1968 target_brightness, brightness_delta))); |
1971 animator->StartAnimation(new LayerAnimationSequence( | 1969 animator->StartAnimation(new LayerAnimationSequence( |
1972 LayerAnimationElement::CreateBoundsElement( | 1970 LayerAnimationElement::CreateBoundsElement( |
1973 target_bounds, bounds_delta))); | 1971 target_bounds, bounds_delta))); |
(...skipping 20 matching lines...) Expand all Loading... |
1994 TestLayerAnimationDelegate delegate; | 1992 TestLayerAnimationDelegate delegate; |
1995 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); | 1993 scoped_refptr<LayerAnimator> animator(CreateDefaultTestAnimator(&delegate)); |
1996 | 1994 |
1997 double start_opacity(0.0); | 1995 double start_opacity(0.0); |
1998 double target_opacity(1.0); | 1996 double target_opacity(1.0); |
1999 | 1997 |
2000 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 1998 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
2001 | 1999 |
2002 delegate.SetOpacityFromAnimation(start_opacity); | 2000 delegate.SetOpacityFromAnimation(start_opacity); |
2003 | 2001 |
2004 scoped_ptr<LayerAnimationSequence> sequence( | 2002 std::unique_ptr<LayerAnimationSequence> sequence(new LayerAnimationSequence( |
2005 new LayerAnimationSequence( | 2003 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); |
2006 LayerAnimationElement::CreateOpacityElement(target_opacity, delta))); | |
2007 | 2004 |
2008 animator->StartAnimation(sequence.release()); | 2005 animator->StartAnimation(sequence.release()); |
2009 | 2006 |
2010 animator->SetOpacity(0.5); | 2007 animator->SetOpacity(0.5); |
2011 | 2008 |
2012 EXPECT_FALSE(animator->is_animating()); | 2009 EXPECT_FALSE(animator->is_animating()); |
2013 EXPECT_EQ(0.5, animator->GetTargetOpacity()); | 2010 EXPECT_EQ(0.5, animator->GetTargetOpacity()); |
2014 } | 2011 } |
2015 | 2012 |
2016 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the | 2013 // Tests that the preemption mode IMMEDIATELY_SET_NEW_TARGET, doesn't cause the |
(...skipping 12 matching lines...) Expand all Loading... |
2029 { | 2026 { |
2030 // start an implicit bounds animation. | 2027 // start an implicit bounds animation. |
2031 ScopedLayerAnimationSettings settings(animator.get()); | 2028 ScopedLayerAnimationSettings settings(animator.get()); |
2032 animator->SetBounds(middle_bounds); | 2029 animator->SetBounds(middle_bounds); |
2033 } | 2030 } |
2034 | 2031 |
2035 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); | 2032 EXPECT_TRUE(animator->IsAnimatingProperty(LayerAnimationElement::BOUNDS)); |
2036 | 2033 |
2037 int num_live_instances = 0; | 2034 int num_live_instances = 0; |
2038 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); | 2035 base::TimeDelta delta = base::TimeDelta::FromSeconds(1); |
2039 scoped_ptr<TestLayerAnimationSequence> sequence( | 2036 std::unique_ptr<TestLayerAnimationSequence> sequence( |
2040 new TestLayerAnimationSequence( | 2037 new TestLayerAnimationSequence( |
2041 LayerAnimationElement::CreateBoundsElement(target_bounds, delta), | 2038 LayerAnimationElement::CreateBoundsElement(target_bounds, delta), |
2042 &num_live_instances)); | 2039 &num_live_instances)); |
2043 | 2040 |
2044 EXPECT_EQ(1, num_live_instances); | 2041 EXPECT_EQ(1, num_live_instances); |
2045 | 2042 |
2046 // This should interrupt the running sequence causing us to immediately set | 2043 // This should interrupt the running sequence causing us to immediately set |
2047 // the target value. The sequence should alse be destructed. | 2044 // the target value. The sequence should alse be destructed. |
2048 animator->StartAnimation(sequence.release()); | 2045 animator->StartAnimation(sequence.release()); |
2049 | 2046 |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2219 if (delete_on_animation_aborted_) | 2216 if (delete_on_animation_aborted_) |
2220 delete this; | 2217 delete this; |
2221 } | 2218 } |
2222 | 2219 |
2223 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override { | 2220 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override { |
2224 if (delete_on_animation_scheduled_) | 2221 if (delete_on_animation_scheduled_) |
2225 delete this; | 2222 delete this; |
2226 } | 2223 } |
2227 | 2224 |
2228 private: | 2225 private: |
2229 scoped_ptr<AnimatorOwner> animator_owner_; | 2226 std::unique_ptr<AnimatorOwner> animator_owner_; |
2230 bool delete_on_animation_ended_; | 2227 bool delete_on_animation_ended_; |
2231 bool delete_on_animation_aborted_; | 2228 bool delete_on_animation_aborted_; |
2232 bool delete_on_animation_scheduled_; | 2229 bool delete_on_animation_scheduled_; |
2233 bool* was_deleted_; | 2230 bool* was_deleted_; |
2234 | 2231 |
2235 DISALLOW_COPY_AND_ASSIGN(DeletingObserver); | 2232 DISALLOW_COPY_AND_ASSIGN(DeletingObserver); |
2236 }; | 2233 }; |
2237 | 2234 |
2238 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterFinishingAnimation) { | 2235 TEST(LayerAnimatorTest, ObserverDeletesAnimatorAfterFinishingAnimation) { |
2239 bool observer_was_deleted = false; | 2236 bool observer_was_deleted = false; |
2240 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); | 2237 DeletingObserver* observer = new DeletingObserver(&observer_was_deleted); |
2241 observer->set_delete_on_animation_ended(true); | 2238 observer->set_delete_on_animation_ended(true); |
2242 observer->set_delete_on_animation_aborted(true); | 2239 observer->set_delete_on_animation_aborted(true); |
2243 LayerAnimator* animator = observer->animator(); | 2240 LayerAnimator* animator = observer->animator(); |
2244 TestLayerAnimationDelegate delegate; | 2241 TestLayerAnimationDelegate delegate; |
2245 animator->SetDelegate(&delegate); | 2242 animator->SetDelegate(&delegate); |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2472 EXPECT_FALSE(animator->is_started_); | 2469 EXPECT_FALSE(animator->is_started_); |
2473 | 2470 |
2474 CollectionLayerAnimationDelegate collection_delegate; | 2471 CollectionLayerAnimationDelegate collection_delegate; |
2475 animator->SetDelegate(&collection_delegate); | 2472 animator->SetDelegate(&collection_delegate); |
2476 animator->UpdateAnimationState(); | 2473 animator->UpdateAnimationState(); |
2477 EXPECT_TRUE(animator->is_started_); | 2474 EXPECT_TRUE(animator->is_started_); |
2478 animator->SetDelegate(NULL); | 2475 animator->SetDelegate(NULL); |
2479 } | 2476 } |
2480 | 2477 |
2481 TEST(LayerAnimatorTest, AnimatorRemovedFromCollectionWhenLayerIsDestroyed) { | 2478 TEST(LayerAnimatorTest, AnimatorRemovedFromCollectionWhenLayerIsDestroyed) { |
2482 scoped_ptr<Layer> layer(new Layer(LAYER_TEXTURED)); | 2479 std::unique_ptr<Layer> layer(new Layer(LAYER_TEXTURED)); |
2483 LayerAnimatorTestController test_controller(layer->GetAnimator()); | 2480 LayerAnimatorTestController test_controller(layer->GetAnimator()); |
2484 scoped_refptr<LayerAnimator> animator = test_controller.animator(); | 2481 scoped_refptr<LayerAnimator> animator = test_controller.animator(); |
2485 CollectionLayerAnimationDelegate collection_delegate; | 2482 CollectionLayerAnimationDelegate collection_delegate; |
2486 animator->SetDelegate(&collection_delegate); | 2483 animator->SetDelegate(&collection_delegate); |
2487 | 2484 |
2488 double target_opacity = 1.0; | 2485 double target_opacity = 1.0; |
2489 base::TimeDelta time_delta = base::TimeDelta::FromSeconds(1); | 2486 base::TimeDelta time_delta = base::TimeDelta::FromSeconds(1); |
2490 animator->ScheduleAnimation(new LayerAnimationSequence( | 2487 animator->ScheduleAnimation(new LayerAnimationSequence( |
2491 LayerAnimationElement::CreateOpacityElement(target_opacity, time_delta))); | 2488 LayerAnimationElement::CreateOpacityElement(target_opacity, time_delta))); |
2492 | 2489 |
2493 EXPECT_TRUE( | 2490 EXPECT_TRUE( |
2494 collection_delegate.GetLayerAnimatorCollection()->HasActiveAnimators()); | 2491 collection_delegate.GetLayerAnimatorCollection()->HasActiveAnimators()); |
2495 | 2492 |
2496 layer.reset(); | 2493 layer.reset(); |
2497 EXPECT_EQ(NULL, animator->delegate()); | 2494 EXPECT_EQ(NULL, animator->delegate()); |
2498 EXPECT_FALSE( | 2495 EXPECT_FALSE( |
2499 collection_delegate.GetLayerAnimatorCollection()->HasActiveAnimators()); | 2496 collection_delegate.GetLayerAnimatorCollection()->HasActiveAnimators()); |
2500 } | 2497 } |
2501 | 2498 |
2502 TEST(LayerAnimatorTest, LayerMovedBetweenCompositorsDuringAnimation) { | 2499 TEST(LayerAnimatorTest, LayerMovedBetweenCompositorsDuringAnimation) { |
2503 bool enable_pixel_output = false; | 2500 bool enable_pixel_output = false; |
2504 ui::ContextFactory* context_factory = | 2501 ui::ContextFactory* context_factory = |
2505 InitializeContextFactoryForTests(enable_pixel_output); | 2502 InitializeContextFactoryForTests(enable_pixel_output); |
2506 const gfx::Rect bounds(10, 10, 100, 100); | 2503 const gfx::Rect bounds(10, 10, 100, 100); |
2507 scoped_ptr<TestCompositorHost> host_1( | 2504 std::unique_ptr<TestCompositorHost> host_1( |
2508 TestCompositorHost::Create(bounds, context_factory)); | 2505 TestCompositorHost::Create(bounds, context_factory)); |
2509 scoped_ptr<TestCompositorHost> host_2( | 2506 std::unique_ptr<TestCompositorHost> host_2( |
2510 TestCompositorHost::Create(bounds, context_factory)); | 2507 TestCompositorHost::Create(bounds, context_factory)); |
2511 host_1->Show(); | 2508 host_1->Show(); |
2512 host_2->Show(); | 2509 host_2->Show(); |
2513 | 2510 |
2514 Compositor* compositor_1 = host_1->GetCompositor(); | 2511 Compositor* compositor_1 = host_1->GetCompositor(); |
2515 Layer root_1; | 2512 Layer root_1; |
2516 compositor_1->SetRootLayer(&root_1); | 2513 compositor_1->SetRootLayer(&root_1); |
2517 | 2514 |
2518 Compositor* compositor_2 = host_2->GetCompositor(); | 2515 Compositor* compositor_2 = host_2->GetCompositor(); |
2519 Layer root_2; | 2516 Layer root_2; |
(...skipping 25 matching lines...) Expand all Loading... |
2545 host_2.reset(); | 2542 host_2.reset(); |
2546 host_1.reset(); | 2543 host_1.reset(); |
2547 TerminateContextFactoryForTests(); | 2544 TerminateContextFactoryForTests(); |
2548 } | 2545 } |
2549 | 2546 |
2550 TEST(LayerAnimatorTest, ThreadedAnimationSurvivesIfLayerRemovedAdded) { | 2547 TEST(LayerAnimatorTest, ThreadedAnimationSurvivesIfLayerRemovedAdded) { |
2551 bool enable_pixel_output = false; | 2548 bool enable_pixel_output = false; |
2552 ui::ContextFactory* context_factory = | 2549 ui::ContextFactory* context_factory = |
2553 InitializeContextFactoryForTests(enable_pixel_output); | 2550 InitializeContextFactoryForTests(enable_pixel_output); |
2554 const gfx::Rect bounds(10, 10, 100, 100); | 2551 const gfx::Rect bounds(10, 10, 100, 100); |
2555 scoped_ptr<TestCompositorHost> host( | 2552 std::unique_ptr<TestCompositorHost> host( |
2556 TestCompositorHost::Create(bounds, context_factory)); | 2553 TestCompositorHost::Create(bounds, context_factory)); |
2557 host->Show(); | 2554 host->Show(); |
2558 | 2555 |
2559 Compositor* compositor = host->GetCompositor(); | 2556 Compositor* compositor = host->GetCompositor(); |
2560 | 2557 |
2561 Layer root; | 2558 Layer root; |
2562 compositor->SetRootLayer(&root); | 2559 compositor->SetRootLayer(&root); |
2563 | 2560 |
2564 Layer layer; | 2561 Layer layer; |
2565 root.Add(&layer); | 2562 root.Add(&layer); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2601 animator_layer_.reset(); | 2598 animator_layer_.reset(); |
2602 } | 2599 } |
2603 | 2600 |
2604 LayerAnimationDelegate* animator_layer() { | 2601 LayerAnimationDelegate* animator_layer() { |
2605 return animator_layer_.get(); | 2602 return animator_layer_.get(); |
2606 } | 2603 } |
2607 | 2604 |
2608 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override {} | 2605 void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override {} |
2609 | 2606 |
2610 private: | 2607 private: |
2611 scoped_ptr<Layer> animator_layer_; | 2608 std::unique_ptr<Layer> animator_layer_; |
2612 | 2609 |
2613 DISALLOW_COPY_AND_ASSIGN(LayerOwnerAnimationObserver); | 2610 DISALLOW_COPY_AND_ASSIGN(LayerOwnerAnimationObserver); |
2614 }; | 2611 }; |
2615 | 2612 |
2616 TEST(LayerAnimatorTest, ObserverDeletesLayerInStopAnimating) { | 2613 TEST(LayerAnimatorTest, ObserverDeletesLayerInStopAnimating) { |
2617 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator()); | 2614 scoped_refptr<LayerAnimator> animator(CreateImplicitTestAnimator()); |
2618 LayerOwnerAnimationObserver observer(animator.get()); | 2615 LayerOwnerAnimationObserver observer(animator.get()); |
2619 LayerAnimationDelegate* delegate = observer.animator_layer(); | 2616 LayerAnimationDelegate* delegate = observer.animator_layer(); |
2620 | 2617 |
2621 const gfx::Rect start_bounds(0, 0, 50, 50); | 2618 const gfx::Rect start_bounds(0, 0, 50, 50); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2839 EXPECT_EQ(observer.last_ended_sequence(), nullptr); | 2836 EXPECT_EQ(observer.last_ended_sequence(), nullptr); |
2840 EXPECT_EQ(observer.last_detached_sequence(), first_sequence); | 2837 EXPECT_EQ(observer.last_detached_sequence(), first_sequence); |
2841 | 2838 |
2842 EXPECT_TRUE(observer.AbortedEpochIsBeforeDetachedEpoch()); | 2839 EXPECT_TRUE(observer.AbortedEpochIsBeforeDetachedEpoch()); |
2843 EXPECT_TRUE(observer.AbortedEpochIsBeforeStartedEpoch()); | 2840 EXPECT_TRUE(observer.AbortedEpochIsBeforeStartedEpoch()); |
2844 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); | 2841 EXPECT_TRUE(observer.AttachedEpochIsBeforeScheduledEpoch()); |
2845 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); | 2842 EXPECT_TRUE(observer.ScheduledEpochIsBeforeStartedEpoch()); |
2846 } | 2843 } |
2847 | 2844 |
2848 } // namespace ui | 2845 } // namespace ui |
OLD | NEW |