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 56d64323c272c497c8deeafd8a5150b886df5f54..2c6bd91d9fe71b3b38e8c3e3ebd2fe649ccf84da 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -52,11 +52,11 @@ |
#define SET_UP_STATE(state) \ |
state.SetCanStart(); \ |
+ state.SetVisible(true); \ |
EXPECT_ACTION_UPDATE_STATE( \ |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); \ |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); \ |
state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); \ |
- state.SetVisible(true); \ |
state.SetCanDraw(true); |
namespace cc { |
@@ -206,6 +206,7 @@ TEST(SchedulerStateMachineTest, BeginFrameNeeded) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -214,7 +215,6 @@ TEST(SchedulerStateMachineTest, BeginFrameNeeded) { |
SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); |
// Don't request BeginFrames if we are idle. |
- state.SetVisible(true); |
state.SetNeedsRedraw(false); |
state.SetNeedsAnimateForTest(false); |
EXPECT_FALSE(state.BeginFrameNeeded()); |
@@ -255,6 +255,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
{ |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -262,7 +263,6 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
state.SetBeginMainFrameState( |
SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); |
state.SetNeedsRedraw(false); |
- state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
EXPECT_FALSE(state.NeedsCommit()); |
@@ -301,12 +301,12 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
state.SetBeginMainFrameState( |
SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
state.SetNeedsRedraw(false); |
- state.SetVisible(true); |
state.SetNeedsBeginMainFrame(); |
// Expect nothing to happen until after OnBeginImplFrame. |
@@ -329,12 +329,12 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
state.SetBeginMainFrameState( |
SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
state.SetNeedsRedraw(false); |
- state.SetVisible(true); |
state.SetNeedsBeginMainFrame(); |
state.SetCanDraw(false); |
@@ -721,6 +721,7 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) { |
for (size_t j = 0; j < num_begin_impl_frame_states; ++j) { |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -749,6 +750,7 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) { |
for (size_t i = 0; i < num_begin_main_frame_states; ++i) { |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -759,7 +761,6 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) { |
SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE); |
state.SetNeedsRedraw(true); |
- state.SetVisible(true); |
SchedulerStateMachine::Action expected_action; |
if (begin_main_frame_states[i] == |
@@ -790,6 +791,7 @@ TEST(SchedulerStateMachineTest, TestNoBeginMainFrameStatesRedrawWhenInvisible) { |
for (size_t j = 0; j < 2; ++j) { |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -826,6 +828,7 @@ TEST(SchedulerStateMachineTest, TestCanRedraw_StopsDraw) { |
for (size_t j = 0; j < 2; ++j) { |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -848,6 +851,7 @@ TEST(SchedulerStateMachineTest, |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -856,7 +860,6 @@ TEST(SchedulerStateMachineTest, |
state.SetActiveTreeNeedsFirstDraw(true); |
state.SetNeedsBeginMainFrame(); |
state.SetNeedsRedraw(true); |
- state.SetVisible(true); |
state.SetCanDraw(false); |
state.OnBeginImplFrame(); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
@@ -1189,16 +1192,38 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) { |
SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
} |
-TEST(SchedulerStateMachineTest, TestRequestCommitInvisible) { |
+TEST(SchedulerStateMachineTest, TestNoRequestCommitWhenInvisible) { |
+ SchedulerSettings default_scheduler_settings; |
+ StateMachine state(default_scheduler_settings); |
+ state.SetCanStart(); |
+ state.SetVisible(true); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
+ state.SetVisible(false); |
+ state.SetNeedsBeginMainFrame(); |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+} |
+ |
+TEST(SchedulerStateMachineTest, TestNoRequestOutputSurfaceWhenInvisible) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ // We should not request an OutputSurface when we are still invisible. |
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
+ state.SetVisible(false); |
+ state.DidLoseOutputSurface(); |
state.SetNeedsBeginMainFrame(); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
+ state.SetVisible(true); |
+ EXPECT_ACTION_UPDATE_STATE( |
+ SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
} |
// See ThreadProxy::BeginMainFrame "EarlyOut_NotVisible" / |
@@ -1259,11 +1284,11 @@ TEST(SchedulerStateMachineTest, TestAbortBeginMainFrameBecauseCommitNotNeeded) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
state.DidCreateAndInitializeOutputSurface(); |
- state.SetVisible(true); |
state.SetCanDraw(true); |
// Get into a begin frame / commit state. |
@@ -1671,11 +1696,11 @@ TEST(SchedulerStateMachineTest, TestNoBeginFrameNeededWhenInvisible) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
- state.SetVisible(true); |
EXPECT_FALSE(state.BeginFrameNeeded()); |
state.SetNeedsRedraw(true); |
@@ -1692,6 +1717,7 @@ TEST(SchedulerStateMachineTest, TestNoBeginMainFrameWhenInvisible) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
@@ -1713,6 +1739,7 @@ TEST(SchedulerStateMachineTest, TestFinishCommitWhenCommitInProgress) { |
SchedulerSettings default_scheduler_settings; |
StateMachine state(default_scheduler_settings); |
state.SetCanStart(); |
+ state.SetVisible(true); |
EXPECT_ACTION_UPDATE_STATE( |
SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |