OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |