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

Side by Side Diff: cc/scheduler/scheduler_unittest.cc

Issue 767083005: cc: Rename TileManager::ManageTiles to PrepareTiles. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed a Trace name. Created 6 years 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
« no previous file with comments | « cc/scheduler/scheduler_state_machine.cc ('k') | cc/test/fake_layer_tree_host_impl.h » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/scheduler/scheduler.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 states_.push_back(scheduler_->AsValue()); 256 states_.push_back(scheduler_->AsValue());
257 } 257 }
258 void ScheduledActionActivateSyncTree() override { 258 void ScheduledActionActivateSyncTree() override {
259 actions_.push_back("ScheduledActionActivateSyncTree"); 259 actions_.push_back("ScheduledActionActivateSyncTree");
260 states_.push_back(scheduler_->AsValue()); 260 states_.push_back(scheduler_->AsValue());
261 } 261 }
262 void ScheduledActionBeginOutputSurfaceCreation() override { 262 void ScheduledActionBeginOutputSurfaceCreation() override {
263 actions_.push_back("ScheduledActionBeginOutputSurfaceCreation"); 263 actions_.push_back("ScheduledActionBeginOutputSurfaceCreation");
264 states_.push_back(scheduler_->AsValue()); 264 states_.push_back(scheduler_->AsValue());
265 } 265 }
266 void ScheduledActionManageTiles() override { 266 void ScheduledActionPrepareTiles() override {
267 actions_.push_back("ScheduledActionManageTiles"); 267 actions_.push_back("ScheduledActionPrepareTiles");
268 states_.push_back(scheduler_->AsValue()); 268 states_.push_back(scheduler_->AsValue());
269 } 269 }
270 void DidAnticipatedDrawTimeChange(base::TimeTicks) override { 270 void DidAnticipatedDrawTimeChange(base::TimeTicks) override {
271 if (log_anticipated_draw_time_change_) 271 if (log_anticipated_draw_time_change_)
272 actions_.push_back("DidAnticipatedDrawTimeChange"); 272 actions_.push_back("DidAnticipatedDrawTimeChange");
273 } 273 }
274 base::TimeDelta DrawDurationEstimate() override { return base::TimeDelta(); } 274 base::TimeDelta DrawDurationEstimate() override { return base::TimeDelta(); }
275 base::TimeDelta BeginMainFrameToCommitDurationEstimate() override { 275 base::TimeDelta BeginMainFrameToCommitDurationEstimate() override {
276 return base::TimeDelta(); 276 return base::TimeDelta();
277 } 277 }
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 EXPECT_TRUE(client.needs_begin_frames()); 801 EXPECT_TRUE(client.needs_begin_frames());
802 802
803 // Fail to draw, this should not start a frame. 803 // Fail to draw, this should not start a frame.
804 client.SetDrawWillHappen(false); 804 client.SetDrawWillHappen(false);
805 client.SetNeedsCommitOnNextDraw(); 805 client.SetNeedsCommitOnNextDraw();
806 client.AdvanceFrame(); 806 client.AdvanceFrame();
807 client.task_runner().RunPendingTasks(); // Run posted deadline. 807 client.task_runner().RunPendingTasks(); // Run posted deadline.
808 EXPECT_EQ(2, client.num_draws()); 808 EXPECT_EQ(2, client.num_draws());
809 } 809 }
810 810
811 class SchedulerClientNeedsManageTilesInDraw : public FakeSchedulerClient { 811 class SchedulerClientNeedsPrepareTilesInDraw : public FakeSchedulerClient {
812 public: 812 public:
813 DrawResult ScheduledActionDrawAndSwapIfPossible() override { 813 DrawResult ScheduledActionDrawAndSwapIfPossible() override {
814 scheduler_->SetNeedsManageTiles(); 814 scheduler_->SetNeedsPrepareTiles();
815 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); 815 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible();
816 } 816 }
817 }; 817 };
818 818
819 // Test manage tiles is independant of draws. 819 // Test prepare tiles is independant of draws.
820 TEST(SchedulerTest, ManageTiles) { 820 TEST(SchedulerTest, PrepareTiles) {
821 SchedulerClientNeedsManageTilesInDraw client; 821 SchedulerClientNeedsPrepareTilesInDraw client;
822 SchedulerSettings scheduler_settings; 822 SchedulerSettings scheduler_settings;
823 scheduler_settings.use_external_begin_frame_source = true; 823 scheduler_settings.use_external_begin_frame_source = true;
824 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); 824 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
825 scheduler->SetCanStart(); 825 scheduler->SetCanStart();
826 scheduler->SetVisible(true); 826 scheduler->SetVisible(true);
827 scheduler->SetCanDraw(true); 827 scheduler->SetCanDraw(true);
828 InitializeOutputSurfaceAndFirstCommit(scheduler, &client); 828 InitializeOutputSurfaceAndFirstCommit(scheduler, &client);
829 829
830 // Request both draw and manage tiles. ManageTiles shouldn't 830 // Request both draw and prepare tiles. PrepareTiles shouldn't
831 // be trigged until BeginImplFrame. 831 // be trigged until BeginImplFrame.
832 client.Reset(); 832 client.Reset();
833 scheduler->SetNeedsManageTiles(); 833 scheduler->SetNeedsPrepareTiles();
834 scheduler->SetNeedsRedraw(); 834 scheduler->SetNeedsRedraw();
835 EXPECT_TRUE(scheduler->RedrawPending()); 835 EXPECT_TRUE(scheduler->RedrawPending());
836 EXPECT_TRUE(scheduler->ManageTilesPending()); 836 EXPECT_TRUE(scheduler->PrepareTilesPending());
837 EXPECT_TRUE(client.needs_begin_frames()); 837 EXPECT_TRUE(client.needs_begin_frames());
838 EXPECT_EQ(0, client.num_draws()); 838 EXPECT_EQ(0, client.num_draws());
839 EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles")); 839 EXPECT_FALSE(client.HasAction("ScheduledActionPrepareTiles"));
840 EXPECT_FALSE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 840 EXPECT_FALSE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
841 841
842 // We have no immediate actions to perform, so the BeginImplFrame should post 842 // We have no immediate actions to perform, so the BeginImplFrame should post
843 // the deadline task. 843 // the deadline task.
844 client.Reset(); 844 client.Reset();
845 client.AdvanceFrame(); 845 client.AdvanceFrame();
846 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 846 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
847 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 847 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
848 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 848 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
849 849
850 // On the deadline, he actions should have occured in the right order. 850 // On the deadline, he actions should have occured in the right order.
851 client.Reset(); 851 client.Reset();
852 client.task_runner().RunPendingTasks(); // Run posted deadline. 852 client.task_runner().RunPendingTasks(); // Run posted deadline.
853 EXPECT_EQ(1, client.num_draws()); 853 EXPECT_EQ(1, client.num_draws());
854 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 854 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
855 EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles")); 855 EXPECT_TRUE(client.HasAction("ScheduledActionPrepareTiles"));
856 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"), 856 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"),
857 client.ActionIndex("ScheduledActionManageTiles")); 857 client.ActionIndex("ScheduledActionPrepareTiles"));
858 EXPECT_FALSE(scheduler->RedrawPending()); 858 EXPECT_FALSE(scheduler->RedrawPending());
859 EXPECT_FALSE(scheduler->ManageTilesPending()); 859 EXPECT_FALSE(scheduler->PrepareTilesPending());
860 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 860 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
861 861
862 // Request a draw. We don't need a ManageTiles yet. 862 // Request a draw. We don't need a PrepareTiles yet.
863 client.Reset(); 863 client.Reset();
864 scheduler->SetNeedsRedraw(); 864 scheduler->SetNeedsRedraw();
865 EXPECT_TRUE(scheduler->RedrawPending()); 865 EXPECT_TRUE(scheduler->RedrawPending());
866 EXPECT_FALSE(scheduler->ManageTilesPending()); 866 EXPECT_FALSE(scheduler->PrepareTilesPending());
867 EXPECT_TRUE(client.needs_begin_frames()); 867 EXPECT_TRUE(client.needs_begin_frames());
868 EXPECT_EQ(0, client.num_draws()); 868 EXPECT_EQ(0, client.num_draws());
869 869
870 // We have no immediate actions to perform, so the BeginImplFrame should post 870 // We have no immediate actions to perform, so the BeginImplFrame should post
871 // the deadline task. 871 // the deadline task.
872 client.Reset(); 872 client.Reset();
873 client.AdvanceFrame(); 873 client.AdvanceFrame();
874 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 874 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
875 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 875 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
876 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 876 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
877 877
878 // Draw. The draw will trigger SetNeedsManageTiles, and 878 // Draw. The draw will trigger SetNeedsPrepareTiles, and
879 // then the ManageTiles action will be triggered after the Draw. 879 // then the PrepareTiles action will be triggered after the Draw.
880 // Afterwards, neither a draw nor ManageTiles are pending. 880 // Afterwards, neither a draw nor PrepareTiles are pending.
881 client.Reset(); 881 client.Reset();
882 client.task_runner().RunPendingTasks(); // Run posted deadline. 882 client.task_runner().RunPendingTasks(); // Run posted deadline.
883 EXPECT_EQ(1, client.num_draws()); 883 EXPECT_EQ(1, client.num_draws());
884 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 884 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
885 EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles")); 885 EXPECT_TRUE(client.HasAction("ScheduledActionPrepareTiles"));
886 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"), 886 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"),
887 client.ActionIndex("ScheduledActionManageTiles")); 887 client.ActionIndex("ScheduledActionPrepareTiles"));
888 EXPECT_FALSE(scheduler->RedrawPending()); 888 EXPECT_FALSE(scheduler->RedrawPending());
889 EXPECT_FALSE(scheduler->ManageTilesPending()); 889 EXPECT_FALSE(scheduler->PrepareTilesPending());
890 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 890 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
891 891
892 // We need a BeginImplFrame where we don't swap to go idle. 892 // We need a BeginImplFrame where we don't swap to go idle.
893 client.Reset(); 893 client.Reset();
894 client.AdvanceFrame(); 894 client.AdvanceFrame();
895 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); 895 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
896 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 896 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
897 client.Reset(); 897 client.Reset();
898 client.task_runner().RunPendingTasks(); // Run posted deadline. 898 client.task_runner().RunPendingTasks(); // Run posted deadline.
899 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); 899 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
900 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 900 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
901 EXPECT_EQ(0, client.num_draws()); 901 EXPECT_EQ(0, client.num_draws());
902 902
903 // Now trigger a ManageTiles outside of a draw. We will then need 903 // Now trigger a PrepareTiles outside of a draw. We will then need
904 // a begin-frame for the ManageTiles, but we don't need a draw. 904 // a begin-frame for the PrepareTiles, but we don't need a draw.
905 client.Reset(); 905 client.Reset();
906 EXPECT_FALSE(client.needs_begin_frames()); 906 EXPECT_FALSE(client.needs_begin_frames());
907 scheduler->SetNeedsManageTiles(); 907 scheduler->SetNeedsPrepareTiles();
908 EXPECT_TRUE(client.needs_begin_frames()); 908 EXPECT_TRUE(client.needs_begin_frames());
909 EXPECT_TRUE(scheduler->ManageTilesPending()); 909 EXPECT_TRUE(scheduler->PrepareTilesPending());
910 EXPECT_FALSE(scheduler->RedrawPending()); 910 EXPECT_FALSE(scheduler->RedrawPending());
911 911
912 // BeginImplFrame. There will be no draw, only ManageTiles. 912 // BeginImplFrame. There will be no draw, only PrepareTiles.
913 client.Reset(); 913 client.Reset();
914 client.AdvanceFrame(); 914 client.AdvanceFrame();
915 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); 915 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
916 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 916 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
917 client.Reset(); 917 client.Reset();
918 client.task_runner().RunPendingTasks(); // Run posted deadline. 918 client.task_runner().RunPendingTasks(); // Run posted deadline.
919 EXPECT_EQ(0, client.num_draws()); 919 EXPECT_EQ(0, client.num_draws());
920 EXPECT_FALSE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 920 EXPECT_FALSE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
921 EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles")); 921 EXPECT_TRUE(client.HasAction("ScheduledActionPrepareTiles"));
922 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 922 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
923 } 923 }
924 924
925 // Test that ManageTiles only happens once per frame. If an external caller 925 // Test that PrepareTiles only happens once per frame. If an external caller
926 // initiates it, then the state machine should not ManageTiles on that frame. 926 // initiates it, then the state machine should not PrepareTiles on that frame.
927 TEST(SchedulerTest, ManageTilesOncePerFrame) { 927 TEST(SchedulerTest, PrepareTilesOncePerFrame) {
928 FakeSchedulerClient client; 928 FakeSchedulerClient client;
929 SchedulerSettings scheduler_settings; 929 SchedulerSettings scheduler_settings;
930 scheduler_settings.use_external_begin_frame_source = true; 930 scheduler_settings.use_external_begin_frame_source = true;
931 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); 931 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
932 scheduler->SetCanStart(); 932 scheduler->SetCanStart();
933 scheduler->SetVisible(true); 933 scheduler->SetVisible(true);
934 scheduler->SetCanDraw(true); 934 scheduler->SetCanDraw(true);
935 InitializeOutputSurfaceAndFirstCommit(scheduler, &client); 935 InitializeOutputSurfaceAndFirstCommit(scheduler, &client);
936 936
937 // If DidManageTiles during a frame, then ManageTiles should not occur again. 937 // If DidPrepareTiles during a frame, then PrepareTiles should not occur
938 scheduler->SetNeedsManageTiles(); 938 // again.
939 scheduler->SetNeedsPrepareTiles();
939 scheduler->SetNeedsRedraw(); 940 scheduler->SetNeedsRedraw();
940 client.Reset(); 941 client.Reset();
941 client.AdvanceFrame(); 942 client.AdvanceFrame();
942 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 943 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
943 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 944 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
944 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 945 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
945 946
946 EXPECT_TRUE(scheduler->ManageTilesPending()); 947 EXPECT_TRUE(scheduler->PrepareTilesPending());
947 scheduler->DidManageTiles(); // An explicit ManageTiles. 948 scheduler->DidPrepareTiles(); // An explicit PrepareTiles.
948 EXPECT_FALSE(scheduler->ManageTilesPending()); 949 EXPECT_FALSE(scheduler->PrepareTilesPending());
949 950
950 client.Reset(); 951 client.Reset();
951 client.task_runner().RunPendingTasks(); // Run posted deadline. 952 client.task_runner().RunPendingTasks(); // Run posted deadline.
952 EXPECT_EQ(1, client.num_draws()); 953 EXPECT_EQ(1, client.num_draws());
953 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 954 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
954 EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles")); 955 EXPECT_FALSE(client.HasAction("ScheduledActionPrepareTiles"));
955 EXPECT_FALSE(scheduler->RedrawPending()); 956 EXPECT_FALSE(scheduler->RedrawPending());
956 EXPECT_FALSE(scheduler->ManageTilesPending()); 957 EXPECT_FALSE(scheduler->PrepareTilesPending());
957 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 958 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
958 959
959 // Next frame without DidManageTiles should ManageTiles with draw. 960 // Next frame without DidPrepareTiles should PrepareTiles with draw.
960 scheduler->SetNeedsManageTiles(); 961 scheduler->SetNeedsPrepareTiles();
961 scheduler->SetNeedsRedraw(); 962 scheduler->SetNeedsRedraw();
962 client.Reset(); 963 client.Reset();
963 client.AdvanceFrame(); 964 client.AdvanceFrame();
964 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 965 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
965 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 966 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
966 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 967 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
967 968
968 client.Reset(); 969 client.Reset();
969 client.task_runner().RunPendingTasks(); // Run posted deadline. 970 client.task_runner().RunPendingTasks(); // Run posted deadline.
970 EXPECT_EQ(1, client.num_draws()); 971 EXPECT_EQ(1, client.num_draws());
971 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 972 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
972 EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles")); 973 EXPECT_TRUE(client.HasAction("ScheduledActionPrepareTiles"));
973 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"), 974 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"),
974 client.ActionIndex("ScheduledActionManageTiles")); 975 client.ActionIndex("ScheduledActionPrepareTiles"));
975 EXPECT_FALSE(scheduler->RedrawPending()); 976 EXPECT_FALSE(scheduler->RedrawPending());
976 EXPECT_FALSE(scheduler->ManageTilesPending()); 977 EXPECT_FALSE(scheduler->PrepareTilesPending());
977 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 978 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
978 scheduler->DidManageTiles(); // Corresponds to ScheduledActionManageTiles 979 scheduler->DidPrepareTiles(); // Corresponds to ScheduledActionPrepareTiles
979 980
980 // If we get another DidManageTiles within the same frame, we should 981 // If we get another DidPrepareTiles within the same frame, we should
981 // not ManageTiles on the next frame. 982 // not PrepareTiles on the next frame.
982 scheduler->DidManageTiles(); // An explicit ManageTiles. 983 scheduler->DidPrepareTiles(); // An explicit PrepareTiles.
983 scheduler->SetNeedsManageTiles(); 984 scheduler->SetNeedsPrepareTiles();
984 scheduler->SetNeedsRedraw(); 985 scheduler->SetNeedsRedraw();
985 client.Reset(); 986 client.Reset();
986 client.AdvanceFrame(); 987 client.AdvanceFrame();
987 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 988 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
988 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 989 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
989 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 990 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
990 991
991 EXPECT_TRUE(scheduler->ManageTilesPending()); 992 EXPECT_TRUE(scheduler->PrepareTilesPending());
992 993
993 client.Reset(); 994 client.Reset();
994 client.task_runner().RunPendingTasks(); // Run posted deadline. 995 client.task_runner().RunPendingTasks(); // Run posted deadline.
995 EXPECT_EQ(1, client.num_draws()); 996 EXPECT_EQ(1, client.num_draws());
996 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 997 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
997 EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles")); 998 EXPECT_FALSE(client.HasAction("ScheduledActionPrepareTiles"));
998 EXPECT_FALSE(scheduler->RedrawPending()); 999 EXPECT_FALSE(scheduler->RedrawPending());
999 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 1000 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
1000 1001
1001 // If we get another DidManageTiles, we should not ManageTiles on the next 1002 // If we get another DidPrepareTiles, we should not PrepareTiles on the next
1002 // frame. This verifies we don't alternate calling ManageTiles once and twice. 1003 // frame. This verifies we don't alternate calling PrepareTiles once and
1003 EXPECT_TRUE(scheduler->ManageTilesPending()); 1004 // twice.
1004 scheduler->DidManageTiles(); // An explicit ManageTiles. 1005 EXPECT_TRUE(scheduler->PrepareTilesPending());
1005 EXPECT_FALSE(scheduler->ManageTilesPending()); 1006 scheduler->DidPrepareTiles(); // An explicit PrepareTiles.
1006 scheduler->SetNeedsManageTiles(); 1007 EXPECT_FALSE(scheduler->PrepareTilesPending());
1008 scheduler->SetNeedsPrepareTiles();
1007 scheduler->SetNeedsRedraw(); 1009 scheduler->SetNeedsRedraw();
1008 client.Reset(); 1010 client.Reset();
1009 client.AdvanceFrame(); 1011 client.AdvanceFrame();
1010 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 1012 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
1011 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 1013 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
1012 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 1014 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
1013 1015
1014 EXPECT_TRUE(scheduler->ManageTilesPending()); 1016 EXPECT_TRUE(scheduler->PrepareTilesPending());
1015 1017
1016 client.Reset(); 1018 client.Reset();
1017 client.task_runner().RunPendingTasks(); // Run posted deadline. 1019 client.task_runner().RunPendingTasks(); // Run posted deadline.
1018 EXPECT_EQ(1, client.num_draws()); 1020 EXPECT_EQ(1, client.num_draws());
1019 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 1021 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
1020 EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles")); 1022 EXPECT_FALSE(client.HasAction("ScheduledActionPrepareTiles"));
1021 EXPECT_FALSE(scheduler->RedrawPending()); 1023 EXPECT_FALSE(scheduler->RedrawPending());
1022 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 1024 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
1023 1025
1024 // Next frame without DidManageTiles should ManageTiles with draw. 1026 // Next frame without DidPrepareTiles should PrepareTiles with draw.
1025 scheduler->SetNeedsManageTiles(); 1027 scheduler->SetNeedsPrepareTiles();
1026 scheduler->SetNeedsRedraw(); 1028 scheduler->SetNeedsRedraw();
1027 client.Reset(); 1029 client.Reset();
1028 client.AdvanceFrame(); 1030 client.AdvanceFrame();
1029 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 1031 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
1030 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 1032 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
1031 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 1033 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
1032 1034
1033 client.Reset(); 1035 client.Reset();
1034 client.task_runner().RunPendingTasks(); // Run posted deadline. 1036 client.task_runner().RunPendingTasks(); // Run posted deadline.
1035 EXPECT_EQ(1, client.num_draws()); 1037 EXPECT_EQ(1, client.num_draws());
1036 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible")); 1038 EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
1037 EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles")); 1039 EXPECT_TRUE(client.HasAction("ScheduledActionPrepareTiles"));
1038 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"), 1040 EXPECT_LT(client.ActionIndex("ScheduledActionDrawAndSwapIfPossible"),
1039 client.ActionIndex("ScheduledActionManageTiles")); 1041 client.ActionIndex("ScheduledActionPrepareTiles"));
1040 EXPECT_FALSE(scheduler->RedrawPending()); 1042 EXPECT_FALSE(scheduler->RedrawPending());
1041 EXPECT_FALSE(scheduler->ManageTilesPending()); 1043 EXPECT_FALSE(scheduler->PrepareTilesPending());
1042 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 1044 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
1043 scheduler->DidManageTiles(); // Corresponds to ScheduledActionManageTiles 1045 scheduler->DidPrepareTiles(); // Corresponds to ScheduledActionPrepareTiles
1044 } 1046 }
1045 1047
1046 TEST(SchedulerTest, TriggerBeginFrameDeadlineEarly) { 1048 TEST(SchedulerTest, TriggerBeginFrameDeadlineEarly) {
1047 SchedulerClientNeedsManageTilesInDraw client; 1049 SchedulerClientNeedsPrepareTilesInDraw client;
1048 SchedulerSettings scheduler_settings; 1050 SchedulerSettings scheduler_settings;
1049 scheduler_settings.use_external_begin_frame_source = true; 1051 scheduler_settings.use_external_begin_frame_source = true;
1050 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); 1052 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
1051 scheduler->SetCanStart(); 1053 scheduler->SetCanStart();
1052 scheduler->SetVisible(true); 1054 scheduler->SetVisible(true);
1053 scheduler->SetCanDraw(true); 1055 scheduler->SetCanDraw(true);
1054 InitializeOutputSurfaceAndFirstCommit(scheduler, &client); 1056 InitializeOutputSurfaceAndFirstCommit(scheduler, &client);
1055 1057
1056 client.Reset(); 1058 client.Reset();
1057 scheduler->SetNeedsRedraw(); 1059 scheduler->SetNeedsRedraw();
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after
1884 } 1886 }
1885 1887
1886 TEST(SchedulerTest, DidLoseOutputSurfaceAfterReadyToCommit) { 1888 TEST(SchedulerTest, DidLoseOutputSurfaceAfterReadyToCommit) {
1887 DidLoseOutputSurfaceAfterReadyToCommit(false); 1889 DidLoseOutputSurfaceAfterReadyToCommit(false);
1888 } 1890 }
1889 1891
1890 TEST(SchedulerTest, DidLoseOutputSurfaceAfterReadyToCommitWithImplPainting) { 1892 TEST(SchedulerTest, DidLoseOutputSurfaceAfterReadyToCommitWithImplPainting) {
1891 DidLoseOutputSurfaceAfterReadyToCommit(true); 1893 DidLoseOutputSurfaceAfterReadyToCommit(true);
1892 } 1894 }
1893 1895
1894 TEST(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsManageTiles) { 1896 TEST(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsPrepareTiles) {
1895 FakeSchedulerClient client; 1897 FakeSchedulerClient client;
1896 SchedulerSettings scheduler_settings; 1898 SchedulerSettings scheduler_settings;
1897 scheduler_settings.use_external_begin_frame_source = true; 1899 scheduler_settings.use_external_begin_frame_source = true;
1898 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); 1900 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
1899 scheduler->SetCanStart(); 1901 scheduler->SetCanStart();
1900 scheduler->SetVisible(true); 1902 scheduler->SetVisible(true);
1901 scheduler->SetCanDraw(true); 1903 scheduler->SetCanDraw(true);
1902 InitializeOutputSurfaceAndFirstCommit(scheduler, &client); 1904 InitializeOutputSurfaceAndFirstCommit(scheduler, &client);
1903 1905
1904 client.Reset(); 1906 client.Reset();
1905 scheduler->SetNeedsManageTiles(); 1907 scheduler->SetNeedsPrepareTiles();
1906 scheduler->SetNeedsRedraw(); 1908 scheduler->SetNeedsRedraw();
1907 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); 1909 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client);
1908 1910
1909 client.Reset(); 1911 client.Reset();
1910 client.AdvanceFrame(); 1912 client.AdvanceFrame();
1911 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); 1913 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
1912 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); 1914 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
1913 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 1915 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
1914 1916
1915 client.Reset(); 1917 client.Reset();
1916 scheduler->DidLoseOutputSurface(); 1918 scheduler->DidLoseOutputSurface();
1917 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); 1919 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
1918 1920
1919 client.Reset(); 1921 client.Reset();
1920 client.task_runner().RunPendingTasks(); // Run posted deadline. 1922 client.task_runner().RunPendingTasks(); // Run posted deadline.
1921 EXPECT_ACTION("ScheduledActionManageTiles", client, 0, 2); 1923 EXPECT_ACTION("ScheduledActionPrepareTiles", client, 0, 2);
1922 EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client, 1, 2); 1924 EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client, 1, 2);
1923 } 1925 }
1924 1926
1925 TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) { 1927 TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
1926 FakeSchedulerClient client; 1928 FakeSchedulerClient client;
1927 SchedulerSettings scheduler_settings; 1929 SchedulerSettings scheduler_settings;
1928 scheduler_settings.use_external_begin_frame_source = true; 1930 scheduler_settings.use_external_begin_frame_source = true;
1929 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); 1931 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
1930 scheduler->SetCanStart(); 1932 scheduler->SetCanStart();
1931 scheduler->SetVisible(true); 1933 scheduler->SetVisible(true);
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
2277 2279
2278 // Deadline task is pending 2280 // Deadline task is pending
2279 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 2281 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
2280 client.task_runner().RunPendingTasks(); 2282 client.task_runner().RunPendingTasks();
2281 // Deadline task runs immediately 2283 // Deadline task runs immediately
2282 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 2284 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
2283 } 2285 }
2284 2286
2285 } // namespace 2287 } // namespace
2286 } // namespace cc 2288 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine.cc ('k') | cc/test/fake_layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698