OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include "cc/animation/animation_curve.h" | 7 #include "cc/animation/animation_curve.h" |
8 #include "cc/animation/layer_animation_controller.h" | 8 #include "cc/animation/layer_animation_controller.h" |
9 #include "cc/animation/scroll_offset_animation_curve.h" | 9 #include "cc/animation/scroll_offset_animation_curve.h" |
10 #include "cc/animation/timing_function.h" | 10 #include "cc/animation/timing_function.h" |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestCompositeAndReadbackAnimateCount); | 776 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestCompositeAndReadbackAnimateCount); |
777 | 777 |
778 class LayerTreeHostAnimationTestContinuousAnimate | 778 class LayerTreeHostAnimationTestContinuousAnimate |
779 : public LayerTreeHostAnimationTest { | 779 : public LayerTreeHostAnimationTest { |
780 public: | 780 public: |
781 LayerTreeHostAnimationTestContinuousAnimate() | 781 LayerTreeHostAnimationTestContinuousAnimate() |
782 : num_commit_complete_(0), | 782 : num_commit_complete_(0), |
783 num_draw_layers_(0) { | 783 num_draw_layers_(0) { |
784 } | 784 } |
785 | 785 |
786 virtual void SetupTree() OVERRIDE { | |
787 LayerTreeHostAnimationTest::SetupTree(); | |
788 // Create a fake content layer so we actually produce new content for every | |
789 // animation frame. | |
790 content_ = FakeContentLayer::Create(&client_); | |
791 content_->set_always_update_resources(true); | |
792 layer_tree_host()->root_layer()->AddChild(content_); | |
793 } | |
794 | |
795 virtual void BeginTest() OVERRIDE { | 786 virtual void BeginTest() OVERRIDE { |
796 PostSetNeedsCommitToMainThread(); | 787 PostSetNeedsCommitToMainThread(); |
797 } | 788 } |
798 | 789 |
799 virtual void Animate(base::TimeTicks) OVERRIDE { | 790 virtual void Animate(base::TimeTicks) OVERRIDE { |
800 if (num_draw_layers_ == 2) | 791 if (num_draw_layers_ == 2) |
801 return; | 792 return; |
802 layer_tree_host()->SetNeedsAnimate(); | 793 layer_tree_host()->SetNeedsAnimate(); |
803 } | 794 } |
804 | 795 |
(...skipping 13 matching lines...) Expand all Loading... |
818 } | 809 } |
819 | 810 |
820 virtual void AfterTest() OVERRIDE { | 811 virtual void AfterTest() OVERRIDE { |
821 // Check that we didn't commit twice between first and second draw. | 812 // Check that we didn't commit twice between first and second draw. |
822 EXPECT_EQ(1, num_commit_complete_); | 813 EXPECT_EQ(1, num_commit_complete_); |
823 } | 814 } |
824 | 815 |
825 private: | 816 private: |
826 int num_commit_complete_; | 817 int num_commit_complete_; |
827 int num_draw_layers_; | 818 int num_draw_layers_; |
828 FakeContentLayerClient client_; | |
829 scoped_refptr<FakeContentLayer> content_; | |
830 }; | 819 }; |
831 | 820 |
832 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate); | 821 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate); |
833 | 822 |
834 class LayerTreeHostAnimationTestCancelAnimateCommit | |
835 : public LayerTreeHostAnimationTest { | |
836 public: | |
837 LayerTreeHostAnimationTestCancelAnimateCommit() : num_animate_calls_(0) {} | |
838 | |
839 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | |
840 | |
841 virtual void Animate(base::TimeTicks) OVERRIDE { | |
842 // No-op animate will cancel the commit. | |
843 if (++num_animate_calls_ == 2) { | |
844 EndTest(); | |
845 return; | |
846 } | |
847 layer_tree_host()->SetNeedsAnimate(); | |
848 } | |
849 | |
850 virtual void CommitCompleteOnThread(LayerTreeHostImpl* tree_impl) OVERRIDE { | |
851 FAIL() << "Commit should have been canceled."; | |
852 } | |
853 | |
854 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | |
855 FAIL() << "Draw should have been canceled."; | |
856 } | |
857 | |
858 virtual void AfterTest() OVERRIDE { EXPECT_EQ(2, num_animate_calls_); } | |
859 | |
860 private: | |
861 int num_animate_calls_; | |
862 FakeContentLayerClient client_; | |
863 scoped_refptr<FakeContentLayer> content_; | |
864 }; | |
865 | |
866 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestCancelAnimateCommit); | |
867 | |
868 class LayerTreeHostAnimationTestForceRedraw | |
869 : public LayerTreeHostAnimationTest { | |
870 public: | |
871 LayerTreeHostAnimationTestForceRedraw() | |
872 : num_animate_(0), num_draw_layers_(0) {} | |
873 | |
874 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | |
875 | |
876 virtual void Animate(base::TimeTicks) OVERRIDE { | |
877 num_animate_++; | |
878 layer_tree_host()->SetNeedsAnimate(); | |
879 } | |
880 | |
881 virtual void Layout() OVERRIDE { | |
882 layer_tree_host()->SetNextCommitForcesRedraw(); | |
883 } | |
884 | |
885 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | |
886 num_draw_layers_++; | |
887 EndTest(); | |
888 } | |
889 | |
890 virtual void AfterTest() OVERRIDE { | |
891 EXPECT_EQ(2, num_animate_); | |
892 EXPECT_EQ(1, num_draw_layers_); | |
893 } | |
894 | |
895 private: | |
896 int num_animate_; | |
897 int num_draw_layers_; | |
898 }; | |
899 | |
900 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestForceRedraw); | |
901 | |
902 // Make sure the main thread can still execute animations when CanDraw() is not | 823 // Make sure the main thread can still execute animations when CanDraw() is not |
903 // true. | 824 // true. |
904 class LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw | 825 class LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw |
905 : public LayerTreeHostAnimationTest { | 826 : public LayerTreeHostAnimationTest { |
906 public: | 827 public: |
907 LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw() : started_times_(0) {} | 828 LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw() : started_times_(0) {} |
908 | 829 |
909 virtual void SetupTree() OVERRIDE { | 830 virtual void SetupTree() OVERRIDE { |
910 LayerTreeHostAnimationTest::SetupTree(); | 831 LayerTreeHostAnimationTest::SetupTree(); |
911 content_ = FakeContentLayer::Create(&client_); | 832 content_ = FakeContentLayer::Create(&client_); |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 int num_draw_attempts_; | 1122 int num_draw_attempts_; |
1202 base::TimeTicks last_main_thread_tick_time_; | 1123 base::TimeTicks last_main_thread_tick_time_; |
1203 base::TimeTicks expected_impl_tick_time_; | 1124 base::TimeTicks expected_impl_tick_time_; |
1204 }; | 1125 }; |
1205 | 1126 |
1206 // Only the non-impl-paint multi-threaded compositor freezes animations. | 1127 // Only the non-impl-paint multi-threaded compositor freezes animations. |
1207 MULTI_THREAD_NOIMPL_TEST_F(LayerTreeHostAnimationTestFrozenAnimationTickTime); | 1128 MULTI_THREAD_NOIMPL_TEST_F(LayerTreeHostAnimationTestFrozenAnimationTickTime); |
1208 | 1129 |
1209 } // namespace | 1130 } // namespace |
1210 } // namespace cc | 1131 } // namespace cc |
OLD | NEW |