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 40689811278d88fff5fb29b7d73968bf3d27a6ce..d7fde5317184fac4784d759af19b1058b91af98b 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -248,6 +248,35 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
EXPECT_TRUE(state.BeginFrameNeeded()); |
+ // Expect nothing to happen until after OnBeginImplFrame. |
+ EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
+ EXPECT_IMPL_FRAME_STATE(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE); |
+ EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
+ |
+ state.OnBeginImplFrame(); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
+ } |
+ |
+ // If commit requested and can't draw, still begin a main frame. |
+ { |
+ StateMachine state(default_scheduler_settings); |
+ state.SetCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE); |
+ state.SetCanStart(); |
+ state.UpdateState(state.NextAction()); |
+ state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
+ state.SetNeedsRedraw(false); |
+ state.SetVisible(true); |
+ state.SetNeedsCommit(); |
+ state.SetCanDraw(false); |
+ |
+ EXPECT_TRUE(state.BeginFrameNeeded()); |
+ |
+ // Expect nothing to happen until after OnBeginImplFrame. |
+ EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
+ EXPECT_IMPL_FRAME_STATE(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE); |
+ EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
+ |
state.OnBeginImplFrame(); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |