Index: cc/scheduler/scheduler_state_machine_unittest.cc |
diff --git a/cc/scheduler/scheduler_state_machine_unittest.cc b/cc/scheduler/scheduler_state_machine_unittest.cc |
index 4b95f99c8a47d84a745d236770b6b3ab9c1cff5e..68c1068382eb9e1c8ca9b265a161fe96fc9e2183 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -207,7 +207,7 @@ TEST(SchedulerStateMachineTest, |
EXPECT_TRUE(state.CommitPending()); |
} |
-TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResDoesNothing) { |
+TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResNeedsCommit) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
@@ -238,6 +238,40 @@ TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResDoesNothing) { |
EXPECT_TRUE(state.CommitPending()); |
} |
+TEST(SchedulerStateMachineTest, TestFailedDrawForOtherReasonsDoesNothing) { |
+ SchedulerSettings default_scheduler_settings; |
+ StateMachine state(default_scheduler_settings); |
+ state.SetCanStart(); |
+ state.UpdateState(state.NextAction()); |
+ state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
+ state.SetVisible(true); |
+ state.SetCanDraw(true); |
+ state.SetNeedsRedraw(true); |
+ EXPECT_TRUE(state.RedrawPending()); |
+ EXPECT_TRUE(state.BeginImplFrameNeeded()); |
+ |
+ DrawSwapReadbackResult::DrawResult aborts[] = { |
+ DrawSwapReadbackResult::DRAW_ABORTED_CANT_READBACK, |
+ DrawSwapReadbackResult::DRAW_ABORTED_CONTEXT_LOST, |
+ DrawSwapReadbackResult::DRAW_ABORTED_CANT_DRAW, }; |
+ for (size_t i = 0; i < arraysize(aborts); ++i) { |
+ state.SetNeedsRedraw(true); |
+ state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); |
+ |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ state.OnBeginImplFrameDeadline(); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ EXPECT_FALSE(state.RedrawPending()); |
+ EXPECT_FALSE(state.CommitPending()); |
+ |
+ state.DidDrawIfPossibleCompleted(aborts[i]); |
+ EXPECT_FALSE(state.RedrawPending()); |
+ EXPECT_FALSE(state.CommitPending()); |
+ } |
+} |
+ |
TEST(SchedulerStateMachineTest, |
TestsetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) { |
SchedulerSettings default_scheduler_settings; |