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 4c2c267a5a493ebbbe734017265f2af8b8f7325b..bdc6594e174487a26424d7687800f2b8c428b135 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -1498,6 +1498,25 @@ TEST(SchedulerStateMachineTest, |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); |
} |
+TEST(SchedulerStateMachineTest, TestNoBeginFrameNeededWhenInvisible) { |
+ SchedulerSettings default_scheduler_settings; |
+ StateMachine state(default_scheduler_settings); |
+ state.SetCanStart(); |
+ state.UpdateState(state.NextAction()); |
+ state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
+ state.SetVisible(true); |
+ |
+ EXPECT_FALSE(state.BeginFrameNeeded()); |
+ state.SetNeedsRedraw(true); |
+ EXPECT_TRUE(state.BeginFrameNeeded()); |
+ |
+ state.SetVisible(false); |
+ EXPECT_FALSE(state.BeginFrameNeeded()); |
+ |
+ state.SetVisible(true); |
+ EXPECT_TRUE(state.BeginFrameNeeded()); |
+} |
+ |
TEST(SchedulerStateMachineTest, TestNoBeginMainFrameWhenInvisible) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
@@ -1507,6 +1526,14 @@ TEST(SchedulerStateMachineTest, TestNoBeginMainFrameWhenInvisible) { |
state.SetVisible(false); |
state.SetNeedsCommit(); |
EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
+ EXPECT_FALSE(state.BeginFrameNeeded()); |
+ |
+ // When become visible again, the needs commit should still be pending. |
+ state.SetVisible(true); |
+ EXPECT_TRUE(state.BeginFrameNeeded()); |
+ state.OnBeginImplFrame(); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
} |
TEST(SchedulerStateMachineTest, TestFinishCommitWhenCommitInProgress) { |
@@ -1704,6 +1731,25 @@ TEST(SchedulerStateMachineTest, |
EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
} |
+TEST(SchedulerStateMachineTest, TestTriggerDeadlineImmediatelyWhenInvisible) { |
+ SchedulerSettings settings; |
+ settings.impl_side_painting = true; |
+ StateMachine state(settings); |
+ SET_UP_STATE(state) |
+ |
+ state.SetNeedsCommit(); |
+ |
+ state.OnBeginImplFrame(); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
+ |
+ state.SetVisible(false); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
+} |
+ |
TEST(SchedulerStateMachineTest, TestSetNeedsAnimate) { |
SchedulerSettings settings; |
settings.impl_side_painting = true; |