Chromium Code Reviews| 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 7036459794ffd34cc16364b34fba0d55cd65b478..6d425c9ec86d41aa215693079e673368dbfbcbf0 100644 |
| --- a/cc/scheduler/scheduler_state_machine_unittest.cc |
| +++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
| @@ -718,7 +718,7 @@ TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeFinishCommit) { |
| // Become invisible and abort the main thread's begin frame. |
| state.SetVisible(false); |
| - state.BeginFrameAbortedByMainThread(); |
| + state.BeginFrameAbortedByMainThread(false); |
| // We should now be back in the idle state as if we didn't start a frame at |
| // all. |
| @@ -728,17 +728,61 @@ TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeFinishCommit) { |
| // Become visible again. |
| state.SetVisible(true); |
| - // We should be beginning a frame now. |
| + // Although we have aborted on this frame and haven't cancelled the commit |
| + // (i.e. need another), don't send another begin frame yet. |
| EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); |
| + EXPECT_TRUE(state.NeedsCommit()); |
| + |
| + // Start a new frame. |
| + state.DidEnterBeginFrame(BeginFrameArgs::CreateForTesting()); |
| EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_FRAME_TO_MAIN_THREAD, |
| state.NextAction()); |
| +} |
| - // Begin the frame. |
| +TEST(SchedulerStateMachineTest, AbortBeginFrameAndCancelCommit) { |
| + SchedulerSettings default_scheduler_settings; |
| + StateMachine state(default_scheduler_settings); |
| + state.SetCanStart(); |
| state.UpdateState(state.NextAction()); |
| + state.DidCreateAndInitializeOutputSurface(); |
| + state.SetVisible(true); |
| + state.SetCanDraw(true); |
| - // We should be starting the commit now. |
|
danakj
2013/07/17 20:53:24
Why is this stuff removed?
enne (OOO)
2013/07/18 17:36:37
I put it back, but the important part of the test
|
| + // Get into a begin frame / commit state. |
| + state.SetNeedsCommit(); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_FRAME_TO_MAIN_THREAD, |
| + state.NextAction()); |
| + state.UpdateState( |
| + SchedulerStateMachine::ACTION_SEND_BEGIN_FRAME_TO_MAIN_THREAD); |
| EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, |
| state.CommitState()); |
| + EXPECT_FALSE(state.NeedsCommit()); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); |
| + |
| + // Abort the commit, cancelling future commits. |
| + state.BeginFrameAbortedByMainThread(true); |
| + |
| + // Verify that another commit doesn't start on the same frame. |
| + EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); |
| + EXPECT_FALSE(state.NeedsCommit()); |
| + |
| + // Start a new frame. |
| + state.DidEnterBeginFrame(BeginFrameArgs::CreateForTesting()); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); |
| + state.DidLeaveBeginFrame(); |
| + |
| + // Verify another commit doesn't start on another frame either. |
| + EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); |
| + EXPECT_FALSE(state.NeedsCommit()); |
| + |
| + // Verify another commit can start if requested, though. |
| + state.SetNeedsCommit(); |
| + EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); |
| + EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_FRAME_TO_MAIN_THREAD, |
| + state.NextAction()); |
| } |
| TEST(SchedulerStateMachineTest, TestFirstContextCreation) { |
| @@ -1192,7 +1236,7 @@ TEST(SchedulerStateMachineTest, |
| // Become invisible and abort the main thread's begin frame. |
| state.SetVisible(false); |
| - state.BeginFrameAbortedByMainThread(); |
| + state.BeginFrameAbortedByMainThread(false); |
| // Should be back in the idle state, but needing a commit. |
| EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); |