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

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

Issue 191293004: cc: Rename FinishCommit to NotifyReadyToCommit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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/scheduler/scheduler_state_machine.cc ('k') | cc/scheduler/scheduler_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 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_state_machine.h" 5 #include "cc/scheduler/scheduler_state_machine.h"
6 6
7 #include "cc/scheduler/scheduler.h" 7 #include "cc/scheduler/scheduler.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 #define EXPECT_ACTION_UPDATE_STATE(action) \ 10 #define EXPECT_ACTION_UPDATE_STATE(action) \
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS); 319 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
320 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 320 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
321 EXPECT_TRUE(state.BeginImplFrameNeeded()); 321 EXPECT_TRUE(state.BeginImplFrameNeeded());
322 EXPECT_TRUE(state.RedrawPending()); 322 EXPECT_TRUE(state.RedrawPending());
323 // But the commit is ongoing. 323 // But the commit is ongoing.
324 EXPECT_TRUE(state.CommitPending()); 324 EXPECT_TRUE(state.CommitPending());
325 325
326 // Finish the commit. Note, we should not yet be forcing a draw, but should 326 // Finish the commit. Note, we should not yet be forcing a draw, but should
327 // continue the commit as usual. 327 // continue the commit as usual.
328 state.NotifyBeginMainFrameStarted(); 328 state.NotifyBeginMainFrameStarted();
329 state.FinishCommit(); 329 state.NotifyReadyToCommit();
330 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 330 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
331 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 331 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
332 EXPECT_TRUE(state.RedrawPending()); 332 EXPECT_TRUE(state.RedrawPending());
333 333
334 // The redraw should be forced at the end of the next BeginImplFrame. 334 // The redraw should be forced at the end of the next BeginImplFrame.
335 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 335 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
336 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 336 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
337 state.OnBeginImplFrameDeadline(); 337 state.OnBeginImplFrameDeadline();
338 EXPECT_ACTION_UPDATE_STATE( 338 EXPECT_ACTION_UPDATE_STATE(
339 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED); 339 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 } 375 }
376 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 376 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
377 EXPECT_TRUE(state.BeginImplFrameNeeded()); 377 EXPECT_TRUE(state.BeginImplFrameNeeded());
378 EXPECT_TRUE(state.RedrawPending()); 378 EXPECT_TRUE(state.RedrawPending());
379 // But the commit is ongoing. 379 // But the commit is ongoing.
380 EXPECT_TRUE(state.CommitPending()); 380 EXPECT_TRUE(state.CommitPending());
381 EXPECT_TRUE(state.ForcedRedrawState() == 381 EXPECT_TRUE(state.ForcedRedrawState() ==
382 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT); 382 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT);
383 383
384 state.NotifyBeginMainFrameStarted(); 384 state.NotifyBeginMainFrameStarted();
385 state.FinishCommit(); 385 state.NotifyReadyToCommit();
386 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 386 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
387 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 387 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
388 EXPECT_TRUE(state.RedrawPending()); 388 EXPECT_TRUE(state.RedrawPending());
389 EXPECT_FALSE(state.CommitPending()); 389 EXPECT_FALSE(state.CommitPending());
390 390
391 // Now force redraw should be in waiting for activation 391 // Now force redraw should be in waiting for activation
392 EXPECT_TRUE(state.ForcedRedrawState() == 392 EXPECT_TRUE(state.ForcedRedrawState() ==
393 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 393 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
394 394
395 // After failing additional draws, we should still be in a forced 395 // After failing additional draws, we should still be in a forced
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 state.SetNeedsCommit(); 649 state.SetNeedsCommit();
650 state.SetNeedsRedraw(true); 650 state.SetNeedsRedraw(true);
651 state.SetVisible(true); 651 state.SetVisible(true);
652 state.SetCanDraw(false); 652 state.SetCanDraw(false);
653 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 653 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
654 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 654 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
655 EXPECT_ACTION_UPDATE_STATE( 655 EXPECT_ACTION_UPDATE_STATE(
656 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 656 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
657 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 657 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
658 state.NotifyBeginMainFrameStarted(); 658 state.NotifyBeginMainFrameStarted();
659 state.FinishCommit(); 659 state.NotifyReadyToCommit();
660 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 660 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
661 state.OnBeginImplFrameDeadline(); 661 state.OnBeginImplFrameDeadline();
662 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 662 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
663 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 663 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
664 } 664 }
665 665
666 TEST(SchedulerStateMachineTest, TestsetNeedsCommitIsNotLost) { 666 TEST(SchedulerStateMachineTest, TestsetNeedsCommitIsNotLost) {
667 SchedulerSettings default_scheduler_settings; 667 SchedulerSettings default_scheduler_settings;
668 StateMachine state(default_scheduler_settings); 668 StateMachine state(default_scheduler_settings);
669 state.SetCanStart(); 669 state.SetCanStart();
(...skipping 11 matching lines...) Expand all
681 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 681 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
682 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 682 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
683 state.CommitState()); 683 state.CommitState());
684 684
685 // Now, while the frame is in progress, set another commit. 685 // Now, while the frame is in progress, set another commit.
686 state.SetNeedsCommit(); 686 state.SetNeedsCommit();
687 EXPECT_TRUE(state.NeedsCommit()); 687 EXPECT_TRUE(state.NeedsCommit());
688 688
689 // Let the frame finish. 689 // Let the frame finish.
690 state.NotifyBeginMainFrameStarted(); 690 state.NotifyBeginMainFrameStarted();
691 state.FinishCommit(); 691 state.NotifyReadyToCommit();
692 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 692 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
693 state.CommitState()); 693 state.CommitState());
694 694
695 // Expect to commit regardless of BeginImplFrame state. 695 // Expect to commit regardless of BeginImplFrame state.
696 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING, 696 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING,
697 state.begin_impl_frame_state()); 697 state.begin_impl_frame_state());
698 EXPECT_EQ(SchedulerStateMachine::ACTION_COMMIT, state.NextAction()); 698 EXPECT_EQ(SchedulerStateMachine::ACTION_COMMIT, state.NextAction());
699 699
700 state.OnBeginImplFrameDeadlinePending(); 700 state.OnBeginImplFrameDeadlinePending();
701 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME, 701 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 749 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
750 EXPECT_ACTION_UPDATE_STATE( 750 EXPECT_ACTION_UPDATE_STATE(
751 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 751 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
752 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 752 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
753 state.CommitState()); 753 state.CommitState());
754 EXPECT_FALSE(state.NeedsCommit()); 754 EXPECT_FALSE(state.NeedsCommit());
755 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 755 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
756 756
757 // Tell the scheduler the frame finished. 757 // Tell the scheduler the frame finished.
758 state.NotifyBeginMainFrameStarted(); 758 state.NotifyBeginMainFrameStarted();
759 state.FinishCommit(); 759 state.NotifyReadyToCommit();
760 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 760 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
761 state.CommitState()); 761 state.CommitState());
762 762
763 // Commit. 763 // Commit.
764 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 764 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
765 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 765 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
766 state.CommitState()); 766 state.CommitState());
767 EXPECT_TRUE(state.needs_redraw()); 767 EXPECT_TRUE(state.needs_redraw());
768 768
769 // Expect to do nothing until BeginImplFrame deadline 769 // Expect to do nothing until BeginImplFrame deadline
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 state.CommitState()); 801 state.CommitState());
802 EXPECT_FALSE(state.NeedsCommit()); 802 EXPECT_FALSE(state.NeedsCommit());
803 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 803 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
804 804
805 // Request another commit while the commit is in flight. 805 // Request another commit while the commit is in flight.
806 state.SetNeedsCommit(); 806 state.SetNeedsCommit();
807 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 807 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
808 808
809 // Tell the scheduler the frame finished. 809 // Tell the scheduler the frame finished.
810 state.NotifyBeginMainFrameStarted(); 810 state.NotifyBeginMainFrameStarted();
811 state.FinishCommit(); 811 state.NotifyReadyToCommit();
812 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 812 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
813 state.CommitState()); 813 state.CommitState());
814 814
815 // First commit. 815 // First commit.
816 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 816 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
817 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 817 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
818 state.CommitState()); 818 state.CommitState());
819 EXPECT_TRUE(state.needs_redraw()); 819 EXPECT_TRUE(state.needs_redraw());
820 820
821 // Expect to do nothing until BeginImplFrame deadline. 821 // Expect to do nothing until BeginImplFrame deadline.
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 EXPECT_FALSE(state.RedrawPending()); 1039 EXPECT_FALSE(state.RedrawPending());
1040 1040
1041 // When the context is recreated, we should begin a commit 1041 // When the context is recreated, we should begin a commit
1042 EXPECT_ACTION_UPDATE_STATE( 1042 EXPECT_ACTION_UPDATE_STATE(
1043 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1043 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1044 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1044 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1045 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1045 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1046 state.CommitState()); 1046 state.CommitState());
1047 1047
1048 state.NotifyBeginMainFrameStarted(); 1048 state.NotifyBeginMainFrameStarted();
1049 state.FinishCommit(); 1049 state.NotifyReadyToCommit();
1050 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1050 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1051 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1051 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1052 // Finishing the first commit after initializing an output surface should 1052 // Finishing the first commit after initializing an output surface should
1053 // automatically cause a redraw. 1053 // automatically cause a redraw.
1054 EXPECT_TRUE(state.RedrawPending()); 1054 EXPECT_TRUE(state.RedrawPending());
1055 1055
1056 // Once the context is recreated, whether we draw should be based on 1056 // Once the context is recreated, whether we draw should be based on
1057 // SetCanDraw. 1057 // SetCanDraw.
1058 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1058 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1059 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1059 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 1093
1094 // Cause a lost context while the BeginMainFrame is in flight. 1094 // Cause a lost context while the BeginMainFrame is in flight.
1095 state.DidLoseOutputSurface(); 1095 state.DidLoseOutputSurface();
1096 1096
1097 // Ask for another draw. Expect nothing happens. 1097 // Ask for another draw. Expect nothing happens.
1098 state.SetNeedsRedraw(true); 1098 state.SetNeedsRedraw(true);
1099 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1099 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1100 1100
1101 // Finish the frame, and commit. 1101 // Finish the frame, and commit.
1102 state.NotifyBeginMainFrameStarted(); 1102 state.NotifyBeginMainFrameStarted();
1103 state.FinishCommit(); 1103 state.NotifyReadyToCommit();
1104 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1104 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1105 1105
1106 // We will abort the draw when the output surface is lost if we are 1106 // We will abort the draw when the output surface is lost if we are
1107 // waiting for the first draw to unblock the main thread. 1107 // waiting for the first draw to unblock the main thread.
1108 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1108 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1109 state.CommitState()); 1109 state.CommitState());
1110 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 1110 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
1111 1111
1112 // Expect to begin context recreation only in BEGIN_IMPL_FRAME_STATE_IDLE 1112 // Expect to begin context recreation only in BEGIN_IMPL_FRAME_STATE_IDLE
1113 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE, 1113 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 // Cause a lost context while the BeginMainFrame is in flight. 1159 // Cause a lost context while the BeginMainFrame is in flight.
1160 state.DidLoseOutputSurface(); 1160 state.DidLoseOutputSurface();
1161 1161
1162 // Ask for another draw and also set needs commit. Expect nothing happens. 1162 // Ask for another draw and also set needs commit. Expect nothing happens.
1163 state.SetNeedsRedraw(true); 1163 state.SetNeedsRedraw(true);
1164 state.SetNeedsCommit(); 1164 state.SetNeedsCommit();
1165 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1165 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1166 1166
1167 // Finish the frame, and commit. 1167 // Finish the frame, and commit.
1168 state.NotifyBeginMainFrameStarted(); 1168 state.NotifyBeginMainFrameStarted();
1169 state.FinishCommit(); 1169 state.NotifyReadyToCommit();
1170 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1170 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1171 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1171 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1172 state.CommitState()); 1172 state.CommitState());
1173 1173
1174 // Because the output surface is missing, we expect the draw to abort. 1174 // Because the output surface is missing, we expect the draw to abort.
1175 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 1175 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
1176 1176
1177 // Expect to begin context recreation only in BEGIN_IMPL_FRAME_STATE_IDLE 1177 // Expect to begin context recreation only in BEGIN_IMPL_FRAME_STATE_IDLE
1178 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE, 1178 EXPECT_EQ(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE,
1179 state.begin_impl_frame_state()); 1179 state.begin_impl_frame_state());
(...skipping 19 matching lines...) Expand all
1199 EXPECT_ACTION_UPDATE_STATE( 1199 EXPECT_ACTION_UPDATE_STATE(
1200 SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); 1200 SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION);
1201 1201
1202 // After we get a new output surface, the commit flow should start. 1202 // After we get a new output surface, the commit flow should start.
1203 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1203 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1204 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1204 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1205 EXPECT_ACTION_UPDATE_STATE( 1205 EXPECT_ACTION_UPDATE_STATE(
1206 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1206 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1207 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1207 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1208 state.NotifyBeginMainFrameStarted(); 1208 state.NotifyBeginMainFrameStarted();
1209 state.FinishCommit(); 1209 state.NotifyReadyToCommit();
1210 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1210 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1211 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1211 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1212 state.OnBeginImplFrameDeadline(); 1212 state.OnBeginImplFrameDeadline();
1213 EXPECT_ACTION_UPDATE_STATE( 1213 EXPECT_ACTION_UPDATE_STATE(
1214 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1214 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1215 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1215 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1216 } 1216 }
1217 1217
1218 TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) { 1218 TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) {
1219 SchedulerSettings default_scheduler_settings; 1219 SchedulerSettings default_scheduler_settings;
(...skipping 13 matching lines...) Expand all
1233 state.SetNeedsForcedRedrawForReadback(); 1233 state.SetNeedsForcedRedrawForReadback();
1234 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1234 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1235 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1235 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1236 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1236 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1237 1237
1238 // Forced redraws for readbacks need to be followed by a new commit 1238 // Forced redraws for readbacks need to be followed by a new commit
1239 // to replace the readback commit. 1239 // to replace the readback commit.
1240 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1240 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1241 state.CommitState()); 1241 state.CommitState());
1242 state.NotifyBeginMainFrameStarted(); 1242 state.NotifyBeginMainFrameStarted();
1243 state.FinishCommit(); 1243 state.NotifyReadyToCommit();
1244 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1244 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1245 1245
1246 // We don't yet have an output surface, so we the draw and swap should abort. 1246 // We don't yet have an output surface, so we the draw and swap should abort.
1247 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 1247 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
1248 1248
1249 // Expect to begin context recreation only in BEGIN_IMPL_FRAME_STATE_IDLE 1249 // Expect to begin context recreation only in BEGIN_IMPL_FRAME_STATE_IDLE
1250 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1250 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1251 1251
1252 state.OnBeginImplFrameDeadline(); 1252 state.OnBeginImplFrameDeadline();
1253 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1253 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1299 state.SetVisible(true); 1299 state.SetVisible(true);
1300 state.SetCanDraw(true); 1300 state.SetCanDraw(true);
1301 1301
1302 state.SetCommitState( 1302 state.SetCommitState(
1303 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); 1303 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT);
1304 1304
1305 // Cause a lost context. 1305 // Cause a lost context.
1306 state.DidLoseOutputSurface(); 1306 state.DidLoseOutputSurface();
1307 1307
1308 state.NotifyBeginMainFrameStarted(); 1308 state.NotifyBeginMainFrameStarted();
1309 state.FinishCommit(); 1309 state.NotifyReadyToCommit();
1310 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1310 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1311 1311
1312 EXPECT_TRUE(state.PendingActivationsShouldBeForced()); 1312 EXPECT_TRUE(state.PendingActivationsShouldBeForced());
1313 EXPECT_ACTION_UPDATE_STATE( 1313 EXPECT_ACTION_UPDATE_STATE(
1314 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 1314 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
1315 1315
1316 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); 1316 EXPECT_TRUE(state.PendingDrawsShouldBeAborted());
1317 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 1317 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
1318 } 1318 }
1319 1319
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 state.SetCanDraw(true); 1353 state.SetCanDraw(true);
1354 1354
1355 // There is a scheduled commit. 1355 // There is a scheduled commit.
1356 state.SetCommitState( 1356 state.SetCommitState(
1357 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); 1357 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT);
1358 1358
1359 // Request a forced commit. 1359 // Request a forced commit.
1360 state.SetNeedsForcedCommitForReadback(); 1360 state.SetNeedsForcedCommitForReadback();
1361 1361
1362 state.NotifyBeginMainFrameStarted(); 1362 state.NotifyBeginMainFrameStarted();
1363 state.FinishCommit(); 1363 state.NotifyReadyToCommit();
1364 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1364 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1365 EXPECT_EQ(SchedulerStateMachine::ACTION_DRAW_AND_READBACK, 1365 EXPECT_EQ(SchedulerStateMachine::ACTION_DRAW_AND_READBACK,
1366 state.NextAction()); 1366 state.NextAction());
1367 state.UpdateState(state.NextAction()); 1367 state.UpdateState(state.NextAction());
1368 EXPECT_EQ( 1368 EXPECT_EQ(
1369 SchedulerStateMachine::READBACK_STATE_WAITING_FOR_REPLACEMENT_COMMIT, 1369 SchedulerStateMachine::READBACK_STATE_WAITING_FOR_REPLACEMENT_COMMIT,
1370 state.readback_state()); 1370 state.readback_state());
1371 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1371 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1372 state.CommitState()); 1372 state.CommitState());
1373 1373
1374 // Finish the replacement commit. 1374 // Finish the replacement commit.
1375 state.NotifyBeginMainFrameStarted(); 1375 state.NotifyBeginMainFrameStarted();
1376 state.FinishCommit(); 1376 state.NotifyReadyToCommit();
1377 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1377 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1378 1378
1379 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1379 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1380 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1380 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1381 state.OnBeginImplFrameDeadline(); 1381 state.OnBeginImplFrameDeadline();
1382 EXPECT_ACTION_UPDATE_STATE( 1382 EXPECT_ACTION_UPDATE_STATE(
1383 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1383 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1384 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_IDLE, state.readback_state()); 1384 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_IDLE, state.readback_state());
1385 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1385 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1386 } 1386 }
1387 1387
1388 TEST(SchedulerStateMachineTest, TestFinishCommitWhenCommitInProgress) { 1388 TEST(SchedulerStateMachineTest, TestFinishCommitWhenCommitInProgress) {
1389 SchedulerSettings default_scheduler_settings; 1389 SchedulerSettings default_scheduler_settings;
1390 StateMachine state(default_scheduler_settings); 1390 StateMachine state(default_scheduler_settings);
1391 state.SetCanStart(); 1391 state.SetCanStart();
1392 state.UpdateState(state.NextAction()); 1392 state.UpdateState(state.NextAction());
1393 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1393 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1394 state.SetVisible(false); 1394 state.SetVisible(false);
1395 state.SetCommitState( 1395 state.SetCommitState(
1396 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); 1396 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT);
1397 state.SetNeedsCommit(); 1397 state.SetNeedsCommit();
1398 1398
1399 state.NotifyBeginMainFrameStarted(); 1399 state.NotifyBeginMainFrameStarted();
1400 state.FinishCommit(); 1400 state.NotifyReadyToCommit();
1401 EXPECT_EQ(SchedulerStateMachine::ACTION_COMMIT, state.NextAction()); 1401 EXPECT_EQ(SchedulerStateMachine::ACTION_COMMIT, state.NextAction());
1402 state.UpdateState(state.NextAction()); 1402 state.UpdateState(state.NextAction());
1403 1403
1404 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1404 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1405 state.CommitState()); 1405 state.CommitState());
1406 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); 1406 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT);
1407 } 1407 }
1408 1408
1409 TEST(SchedulerStateMachineTest, TestFinishCommitWhenForcedCommitInProgress) { 1409 TEST(SchedulerStateMachineTest, TestFinishCommitWhenForcedCommitInProgress) {
1410 SchedulerSettings default_scheduler_settings; 1410 SchedulerSettings default_scheduler_settings;
1411 StateMachine state(default_scheduler_settings); 1411 StateMachine state(default_scheduler_settings);
1412 state.SetCanStart(); 1412 state.SetCanStart();
1413 state.UpdateState(state.NextAction()); 1413 state.UpdateState(state.NextAction());
1414 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1414 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1415 state.SetVisible(false); 1415 state.SetVisible(false);
1416 state.SetCommitState( 1416 state.SetCommitState(
1417 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); 1417 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT);
1418 state.SetNeedsForcedCommitForReadback(); 1418 state.SetNeedsForcedCommitForReadback();
1419 1419
1420 // The commit for readback interupts the normal commit. 1420 // The commit for readback interupts the normal commit.
1421 state.NotifyBeginMainFrameStarted(); 1421 state.NotifyBeginMainFrameStarted();
1422 state.FinishCommit(); 1422 state.NotifyReadyToCommit();
1423 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1423 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1424 1424
1425 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1425 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1426 state.CommitState()); 1426 state.CommitState());
1427 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1427 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1428 1428
1429 // When the readback interrupts the normal commit, we should not get 1429 // When the readback interrupts the normal commit, we should not get
1430 // another BeginMainFrame when the readback completes. 1430 // another BeginMainFrame when the readback completes.
1431 EXPECT_NE(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME, 1431 EXPECT_NE(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME,
1432 state.NextAction()); 1432 state.NextAction());
1433 1433
1434 // The normal commit can then proceed. 1434 // The normal commit can then proceed.
1435 state.NotifyBeginMainFrameStarted(); 1435 state.NotifyBeginMainFrameStarted();
1436 state.FinishCommit(); 1436 state.NotifyReadyToCommit();
1437 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1437 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1438 } 1438 }
1439 1439
1440 TEST(SchedulerStateMachineTest, TestInitialActionsWhenContextLost) { 1440 TEST(SchedulerStateMachineTest, TestInitialActionsWhenContextLost) {
1441 SchedulerSettings default_scheduler_settings; 1441 SchedulerSettings default_scheduler_settings;
1442 StateMachine state(default_scheduler_settings); 1442 StateMachine state(default_scheduler_settings);
1443 state.SetCanStart(); 1443 state.SetCanStart();
1444 state.UpdateState(state.NextAction()); 1444 state.UpdateState(state.NextAction());
1445 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1445 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1446 state.SetVisible(true); 1446 state.SetVisible(true);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1481 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1481 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1482 state.SetVisible(true); 1482 state.SetVisible(true);
1483 state.SetCanDraw(true); 1483 state.SetCanDraw(true);
1484 1484
1485 // Schedule a readback, commit it, draw it. 1485 // Schedule a readback, commit it, draw it.
1486 state.SetNeedsForcedCommitForReadback(); 1486 state.SetNeedsForcedCommitForReadback();
1487 EXPECT_ACTION_UPDATE_STATE( 1487 EXPECT_ACTION_UPDATE_STATE(
1488 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1488 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1489 1489
1490 state.NotifyBeginMainFrameStarted(); 1490 state.NotifyBeginMainFrameStarted();
1491 state.FinishCommit(); 1491 state.NotifyReadyToCommit();
1492 1492
1493 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1493 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1494 state.CommitState()); 1494 state.CommitState());
1495 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1495 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1496 1496
1497 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1497 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1498 state.CommitState()); 1498 state.CommitState());
1499 1499
1500 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1500 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1501 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1501 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS);
(...skipping 17 matching lines...) Expand all
1519 // Start a normal commit. 1519 // Start a normal commit.
1520 state.SetNeedsCommit(); 1520 state.SetNeedsCommit();
1521 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1521 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1522 1522
1523 // Schedule a readback, commit it, draw it. 1523 // Schedule a readback, commit it, draw it.
1524 state.SetNeedsForcedCommitForReadback(); 1524 state.SetNeedsForcedCommitForReadback();
1525 EXPECT_ACTION_UPDATE_STATE( 1525 EXPECT_ACTION_UPDATE_STATE(
1526 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1526 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1527 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1527 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1528 state.NotifyBeginMainFrameStarted(); 1528 state.NotifyBeginMainFrameStarted();
1529 state.FinishCommit(); 1529 state.NotifyReadyToCommit();
1530 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1530 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1531 state.CommitState()); 1531 state.CommitState());
1532 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1532 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1533 1533
1534 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1534 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1535 state.CommitState()); 1535 state.CommitState());
1536 1536
1537 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1537 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1538 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1538 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS);
1539 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1539 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
(...skipping 13 matching lines...) Expand all
1553 state.SetVisible(true); 1553 state.SetVisible(true);
1554 state.SetCanDraw(true); 1554 state.SetCanDraw(true);
1555 1555
1556 state.SetNeedsCommit(); 1556 state.SetNeedsCommit();
1557 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1557 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1558 1558
1559 state.SetNeedsForcedCommitForReadback(); 1559 state.SetNeedsForcedCommitForReadback();
1560 EXPECT_ACTION_UPDATE_STATE( 1560 EXPECT_ACTION_UPDATE_STATE(
1561 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1561 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1562 state.NotifyBeginMainFrameStarted(); 1562 state.NotifyBeginMainFrameStarted();
1563 state.FinishCommit(); 1563 state.NotifyReadyToCommit();
1564 1564
1565 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1565 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1566 state.CommitState()); 1566 state.CommitState());
1567 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1567 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1568 1568
1569 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1569 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1570 state.CommitState()); 1570 state.CommitState());
1571 1571
1572 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1572 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1573 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1573 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS);
(...skipping 21 matching lines...) Expand all
1595 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1595 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1596 state.SetVisible(true); 1596 state.SetVisible(true);
1597 state.SetCanDraw(false); 1597 state.SetCanDraw(false);
1598 1598
1599 state.SetNeedsCommit(); 1599 state.SetNeedsCommit();
1600 state.UpdateState(state.NextAction()); 1600 state.UpdateState(state.NextAction());
1601 1601
1602 state.SetNeedsForcedCommitForReadback(); 1602 state.SetNeedsForcedCommitForReadback();
1603 state.UpdateState(state.NextAction()); 1603 state.UpdateState(state.NextAction());
1604 state.NotifyBeginMainFrameStarted(); 1604 state.NotifyBeginMainFrameStarted();
1605 state.FinishCommit(); 1605 state.NotifyReadyToCommit();
1606 1606
1607 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1607 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1608 state.CommitState()); 1608 state.CommitState());
1609 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1609 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1610 1610
1611 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 1611 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
1612 state.CommitState()); 1612 state.CommitState());
1613 1613
1614 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1614 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1615 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1615 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 1661
1662 state.SetNeedsCommit(); 1662 state.SetNeedsCommit();
1663 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1663 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1664 EXPECT_ACTION_UPDATE_STATE( 1664 EXPECT_ACTION_UPDATE_STATE(
1665 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1665 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1666 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); 1666 EXPECT_TRUE(state.PendingDrawsShouldBeAborted());
1667 1667
1668 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1668 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1669 1669
1670 state.NotifyBeginMainFrameStarted(); 1670 state.NotifyBeginMainFrameStarted();
1671 state.FinishCommit(); 1671 state.NotifyReadyToCommit();
1672 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); 1672 EXPECT_TRUE(state.PendingDrawsShouldBeAborted());
1673 1673
1674 EXPECT_EQ(SchedulerStateMachine::ACTION_COMMIT, state.NextAction()); 1674 EXPECT_EQ(SchedulerStateMachine::ACTION_COMMIT, state.NextAction());
1675 1675
1676 state.UpdateState(state.NextAction()); 1676 state.UpdateState(state.NextAction());
1677 EXPECT_FALSE(state.PendingDrawsShouldBeAborted()); 1677 EXPECT_FALSE(state.PendingDrawsShouldBeAborted());
1678 } 1678 }
1679 1679
1680 TEST(SchedulerStateMachineTest, AcquireTexturesWithAbort) { 1680 TEST(SchedulerStateMachineTest, AcquireTexturesWithAbort) {
1681 SchedulerSettings default_scheduler_settings; 1681 SchedulerSettings default_scheduler_settings;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1762 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1762 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1763 1763
1764 // The deadline is not triggered early until we enter prefer smoothness mode. 1764 // The deadline is not triggered early until we enter prefer smoothness mode.
1765 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); 1765 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineEarly());
1766 state.SetSmoothnessTakesPriority(true); 1766 state.SetSmoothnessTakesPriority(true);
1767 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); 1767 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly());
1768 } 1768 }
1769 1769
1770 } // namespace 1770 } // namespace
1771 } // namespace cc 1771 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine.cc ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698