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 1f377b5a1ca182404c3ca15aa90f604b024b96aa..547b8221814747210a50633aca94eb1685fad13e 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -170,6 +170,36 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
state.OnBeginImplFrameDeadline(); |
} |
+ // If commit requested but can_draw is false, begin a main frame. |
+ { |
+ SchedulerSettings scheduler_settings; |
+ // This only happens when proactive begin frames are false. |
+ scheduler_settings.using_synchronous_renderer_compositor = true; |
+ StateMachine state(scheduler_settings); |
+ state.SetCanStart(); |
+ state.SetNeedsRedraw(false); |
+ state.SetVisible(true); |
+ state.SetNeedsCommit(); |
+ state.SetCanDraw(false); |
+ |
+ EXPECT_ACTION(SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
+ state.UpdateState(state.NextAction()); |
+ state.DidCreateAndInitializeOutputSurface(); |
+ |
+ // Expect nothing to happen until the IMPL frame comes in. |
+ EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
+ EXPECT_IMPL_FRAME_STATE(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE); |
+ EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
+ |
+ // Despite not being able to draw, we do need a BeginImplFrame. |
+ EXPECT_TRUE(state.BeginFrameNeeded()); |
+ |
+ state.OnBeginImplFrame( |
+ CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
+ } |
+ |
// If commit requested, begin a main frame. |
{ |
StateMachine state(default_scheduler_settings); |