| 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 |