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

Side by Side Diff: cc/trees/layer_tree_host_unittest_animation.cc

Issue 178123003: Make it possible to cancel commits following an animation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix cc_perftests failure. Make unit test limits stricter. Created 6 years, 9 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 | « cc/trees/layer_tree_host_perftest.cc ('k') | cc/trees/thread_proxy.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 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
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
786 virtual void BeginTest() OVERRIDE { 795 virtual void BeginTest() OVERRIDE {
787 PostSetNeedsCommitToMainThread(); 796 PostSetNeedsCommitToMainThread();
788 } 797 }
789 798
790 virtual void Animate(base::TimeTicks) OVERRIDE { 799 virtual void Animate(base::TimeTicks) OVERRIDE {
791 if (num_draw_layers_ == 2) 800 if (num_draw_layers_ == 2)
792 return; 801 return;
793 layer_tree_host()->SetNeedsAnimate(); 802 layer_tree_host()->SetNeedsAnimate();
794 } 803 }
795 804
(...skipping 13 matching lines...) Expand all
809 } 818 }
810 819
811 virtual void AfterTest() OVERRIDE { 820 virtual void AfterTest() OVERRIDE {
812 // Check that we didn't commit twice between first and second draw. 821 // Check that we didn't commit twice between first and second draw.
813 EXPECT_EQ(1, num_commit_complete_); 822 EXPECT_EQ(1, num_commit_complete_);
814 } 823 }
815 824
816 private: 825 private:
817 int num_commit_complete_; 826 int num_commit_complete_;
818 int num_draw_layers_; 827 int num_draw_layers_;
828 FakeContentLayerClient client_;
829 scoped_refptr<FakeContentLayer> content_;
819 }; 830 };
820 831
821 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate); 832 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate);
822 833
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 if (++num_animate_ < 2)
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 if (++num_draw_layers_ == 2)
887 EndTest();
888 }
889
890 virtual void AfterTest() OVERRIDE {
891 // The first commit will always draw; make sure the second draw triggered
892 // by the animation was not cancelled.
893 EXPECT_EQ(num_draw_layers_, 2);
danakj 2014/02/27 17:43:29 order should be: expected, actual
894 EXPECT_EQ(2, num_animate_);
895 }
896
897 private:
898 int num_animate_;
899 int num_draw_layers_;
900 };
901
902 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestForceRedraw);
903
823 // Make sure the main thread can still execute animations when CanDraw() is not 904 // Make sure the main thread can still execute animations when CanDraw() is not
824 // true. 905 // true.
825 class LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw 906 class LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw
826 : public LayerTreeHostAnimationTest { 907 : public LayerTreeHostAnimationTest {
827 public: 908 public:
828 LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw() : started_times_(0) {} 909 LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw() : started_times_(0) {}
829 910
830 virtual void SetupTree() OVERRIDE { 911 virtual void SetupTree() OVERRIDE {
831 LayerTreeHostAnimationTest::SetupTree(); 912 LayerTreeHostAnimationTest::SetupTree();
832 content_ = FakeContentLayer::Create(&client_); 913 content_ = FakeContentLayer::Create(&client_);
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
1122 int num_draw_attempts_; 1203 int num_draw_attempts_;
1123 base::TimeTicks last_main_thread_tick_time_; 1204 base::TimeTicks last_main_thread_tick_time_;
1124 base::TimeTicks expected_impl_tick_time_; 1205 base::TimeTicks expected_impl_tick_time_;
1125 }; 1206 };
1126 1207
1127 // Only the non-impl-paint multi-threaded compositor freezes animations. 1208 // Only the non-impl-paint multi-threaded compositor freezes animations.
1128 MULTI_THREAD_NOIMPL_TEST_F(LayerTreeHostAnimationTestFrozenAnimationTickTime); 1209 MULTI_THREAD_NOIMPL_TEST_F(LayerTreeHostAnimationTestFrozenAnimationTickTime);
1129 1210
1130 } // namespace 1211 } // namespace
1131 } // namespace cc 1212 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_perftest.cc ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698