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 fc82fb6ecedf431b67a84b1351ea3c6152f51cb8..e3530c877f4cb68bbf793217225dcc1fe3b4bf24 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -1761,6 +1761,39 @@ TEST(SchedulerStateMachineTest, TestAnimateBeforeCommit) { |
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
} |
+TEST(SchedulerStateMachineTest, TestAnimateAfterCommitBeforeDraw) { |
+ SchedulerSettings settings; |
+ settings.impl_side_painting = true; |
+ StateMachine state(settings); |
+ state.SetCanStart(); |
+ state.UpdateState(state.NextAction()); |
+ state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
+ state.SetVisible(true); |
+ state.SetCanDraw(true); |
+ |
+ // Check that animations are updated before we start a commit. |
+ state.SetNeedsAnimate(); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ state.SetNeedsCommit(); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ EXPECT_TRUE(state.BeginFrameNeeded()); |
+ |
+ state.OnBeginImplFrame(CreateBeginFrameArgsForTesting()); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
+ |
+ state.NotifyBeginMainFrameStarted(); |
+ state.NotifyReadyToCommit(); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); |
+ |
+ state.OnBeginImplFrameDeadlinePending(); |
+ state.OnBeginImplFrameDeadline(); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
+} |
+ |
TEST(SchedulerStateMachineTest, TestSetNeedsAnimateAfterAnimate) { |
SchedulerSettings settings; |
settings.impl_side_painting = true; |