| Index: cc/scheduler/scheduler_unittest.cc
|
| diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
|
| index 5d58d2a0be6195501488bbecd5d298ba0c601331..e4ce6b3614d838a8924bd0672e689cb46d2bfd86 100644
|
| --- a/cc/scheduler/scheduler_unittest.cc
|
| +++ b/cc/scheduler/scheduler_unittest.cc
|
| @@ -520,6 +520,76 @@ TEST_F(SchedulerTest, RequestCommit) {
|
| client_->Reset();
|
| }
|
|
|
| +TEST_F(SchedulerTest, RequestCommitAfterSetDeferCommit) {
|
| + scheduler_settings_.use_external_begin_frame_source = true;
|
| + SetUpScheduler(true);
|
| +
|
| + scheduler_->SetCanStart();
|
| + scheduler_->SetVisible(true);
|
| + scheduler_->SetCanDraw(true);
|
| +
|
| + scheduler_->SetDeferCommits(true);
|
| +
|
| + scheduler_->SetNeedsCommit();
|
| + EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
|
| +
|
| + client_->Reset();
|
| + AdvanceFrame();
|
| + // BeginMainFrame is not sent during the defer commit is on.
|
| + EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
|
| +
|
| + client_->Reset();
|
| + task_runner().RunPendingTasks(); // Run posted deadline.
|
| + // There is no posted deadline.
|
| + EXPECT_NO_ACTION(client_);
|
| + EXPECT_TRUE(client_->needs_begin_frames());
|
| +
|
| + client_->Reset();
|
| + scheduler_->SetDeferCommits(false);
|
| + EXPECT_NO_ACTION(client_);
|
| +
|
| + // Start new BeginMainFrame after defer commit is off.
|
| + client_->Reset();
|
| + AdvanceFrame();
|
| + EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
|
| + EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
|
| + EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
|
| +}
|
| +
|
| +TEST_F(SchedulerTest, DeferCommitWithRedraw) {
|
| + scheduler_settings_.use_external_begin_frame_source = true;
|
| + SetUpScheduler(true);
|
| +
|
| + scheduler_->SetCanStart();
|
| + scheduler_->SetVisible(true);
|
| + scheduler_->SetCanDraw(true);
|
| +
|
| + scheduler_->SetDeferCommits(true);
|
| +
|
| + scheduler_->SetNeedsCommit();
|
| + EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
|
| +
|
| + client_->Reset();
|
| + scheduler_->SetNeedsRedraw();
|
| + EXPECT_NO_ACTION(client_);
|
| +
|
| + client_->Reset();
|
| + AdvanceFrame();
|
| + // BeginMainFrame is not sent during the defer commit is on.
|
| + EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
|
| + EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
|
| +
|
| + client_->Reset();
|
| + task_runner().RunPendingTasks(); // Run posted deadline.
|
| + EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
|
| + EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
|
| + EXPECT_TRUE(client_->needs_begin_frames());
|
| +
|
| + client_->Reset();
|
| + AdvanceFrame();
|
| + EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
|
| +}
|
| +
|
| TEST_F(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
|
| scheduler_settings_.use_external_begin_frame_source = true;
|
| SetUpScheduler(true);
|
|
|