| 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 c433bba9951ce35093a2a08d1ea0bd314c6081cb..db0a93b7308eb24140576731d0c0a90cc9190ee6 100644
|
| --- a/cc/scheduler/scheduler_state_machine_unittest.cc
|
| +++ b/cc/scheduler/scheduler_state_machine_unittest.cc
|
| @@ -35,18 +35,18 @@
|
| EXPECT_ENUM_EQ(ActionToString, expected, state.NextAction()) \
|
| << state.AsValue()->ToString()
|
|
|
| -#define EXPECT_ACTION_UPDATE_STATE(action) \
|
| - EXPECT_ACTION(action); \
|
| - if (action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE || \
|
| - action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED) { \
|
| - EXPECT_IMPL_FRAME_STATE( \
|
| - SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE); \
|
| - } \
|
| - PerformAction(&state, action); \
|
| - if (action == SchedulerStateMachine::ACTION_NONE) { \
|
| - if (state.begin_impl_frame_state() == \
|
| - SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE) \
|
| - state.OnBeginImplFrameIdle(); \
|
| +#define EXPECT_ACTION_UPDATE_STATE(action) \
|
| + EXPECT_ACTION(action); \
|
| + if (action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE || \
|
| + action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED) { \
|
| + EXPECT_IMPL_FRAME_STATE( \
|
| + SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE); \
|
| + } \
|
| + PerformAction(&state, action); \
|
| + if (action == SchedulerStateMachine::ACTION_NONE) { \
|
| + if (state.begin_impl_frame_state() == \
|
| + SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE) \
|
| + state.OnBeginImplFrameIdle(); \
|
| }
|
|
|
| #define SET_UP_STATE(state) \
|
| @@ -62,9 +62,11 @@ namespace cc {
|
| namespace {
|
|
|
| const SchedulerStateMachine::BeginImplFrameState all_begin_impl_frame_states[] =
|
| - {SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE,
|
| - SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME,
|
| - SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE, };
|
| + {
|
| + SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE,
|
| + SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME,
|
| + SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE,
|
| +};
|
|
|
| const SchedulerStateMachine::BeginMainFrameState begin_main_frame_states[] = {
|
| SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE,
|
| @@ -1101,6 +1103,7 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitToActive) {
|
|
|
| // Begin the frame.
|
| state.OnBeginImplFrame();
|
| + EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE);
|
| EXPECT_ACTION_UPDATE_STATE(
|
| SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
|
| EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT);
|
| @@ -1125,8 +1128,6 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitToActive) {
|
| state.SetNeedsRedraw(true);
|
| state.SetNeedsBeginMainFrame();
|
| state.OnBeginImplFrameDeadline();
|
| - EXPECT_ACTION_UPDATE_STATE(
|
| - SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
|
| EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
|
|
| // Cannot BeginMainFrame yet since last commit is not yet activated and drawn.
|
| @@ -1144,28 +1145,41 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitToActive) {
|
| EXPECT_MAIN_FRAME_STATE(
|
| SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_WAITING_FOR_DRAW);
|
|
|
| - // Swap throttled. Do not draw.
|
| - state.DidSwapBuffers();
|
| + // Draw only after ready to draw.
|
| state.OnBeginImplFrameDeadline();
|
| EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
| - state.DidSwapBuffersComplete();
|
|
|
| // Haven't draw since last commit, do not begin new main frame.
|
| state.OnBeginImplFrame();
|
| + EXPECT_MAIN_FRAME_STATE(
|
| + SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_WAITING_FOR_DRAW);
|
| + EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
| +
|
| + state.NotifyReadyToDraw();
|
| EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
|
|
| - // At BeginImplFrame deadline, draw. This draws unblocks BeginMainFrame.
|
| + // We can draw now. This draw unblocks BeginMainFrame.
|
| state.OnBeginImplFrameDeadline();
|
| EXPECT_ACTION_UPDATE_STATE(
|
| SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
|
| - state.DidSwapBuffers();
|
| - state.DidSwapBuffersComplete();
|
|
|
| - // Now will be able to start main frame.
|
| EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE);
|
| - EXPECT_FALSE(state.needs_redraw());
|
| EXPECT_ACTION_UPDATE_STATE(
|
| SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
|
| + EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT);
|
| +
|
| + EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
| +
|
| + state.OnBeginImplFrame();
|
| + EXPECT_FALSE(state.needs_redraw());
|
| + EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
| +
|
| + // Swap throttled. Do not draw.
|
| + state.DidSwapBuffers();
|
| + state.SetNeedsRedraw(true);
|
| + state.OnBeginImplFrameDeadline();
|
| + EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
|
| + state.DidSwapBuffersComplete();
|
| }
|
|
|
| TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) {
|
|
|