| Index: cc/scheduler/scheduler_unittest.cc
|
| diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
|
| index aa61af73e884bde064647b08281406ca41df2511..0d6d9fa5f277c1ee3641e7e727612e975d5c1d06 100644
|
| --- a/cc/scheduler/scheduler_unittest.cc
|
| +++ b/cc/scheduler/scheduler_unittest.cc
|
| @@ -42,40 +42,6 @@ class FakeSchedulerClient;
|
| void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler,
|
| FakeSchedulerClient* client);
|
|
|
| -class TestScheduler : public Scheduler {
|
| - public:
|
| - static scoped_ptr<TestScheduler> Create(
|
| - SchedulerClient* client,
|
| - const SchedulerSettings& scheduler_settings,
|
| - int layer_tree_host_id,
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& impl_task_runner) {
|
| - return make_scoped_ptr(new TestScheduler(
|
| - client, scheduler_settings, layer_tree_host_id, impl_task_runner));
|
| - }
|
| -
|
| - virtual ~TestScheduler() {}
|
| -
|
| - bool IsBeginRetroFrameArgsEmpty() const {
|
| - return begin_retro_frame_args_.empty();
|
| - }
|
| -
|
| - bool IsSyntheticBeginFrameSourceActive() const {
|
| - return synthetic_begin_frame_source_->IsActive();
|
| - }
|
| -
|
| - private:
|
| - TestScheduler(
|
| - SchedulerClient* client,
|
| - const SchedulerSettings& scheduler_settings,
|
| - int layer_tree_host_id,
|
| - const scoped_refptr<base::SingleThreadTaskRunner> & impl_task_runner)
|
| - : Scheduler(client,
|
| - scheduler_settings,
|
| - layer_tree_host_id,
|
| - impl_task_runner) {
|
| - }
|
| -};
|
| -
|
| class FakeSchedulerClient : public SchedulerClient {
|
| public:
|
| FakeSchedulerClient()
|
| @@ -96,8 +62,7 @@ class FakeSchedulerClient : public SchedulerClient {
|
| }
|
|
|
| TestScheduler* CreateScheduler(const SchedulerSettings& settings) {
|
| - task_runner_ = new OrderedSimpleTaskRunner;
|
| - scheduler_ = TestScheduler::Create(this, settings, 0, task_runner_);
|
| + scheduler_ = TestScheduler::Create(this, settings, 0);
|
| return scheduler_.get();
|
| }
|
|
|
| @@ -115,8 +80,6 @@ class FakeSchedulerClient : public SchedulerClient {
|
| return posted_begin_impl_frame_deadline_;
|
| }
|
|
|
| - OrderedSimpleTaskRunner& task_runner() { return *task_runner_; }
|
| -
|
| int ActionIndex(const char* action) const {
|
| for (size_t i = 0; i < actions_.size(); i++)
|
| if (!strcmp(actions_[i], action))
|
| @@ -227,6 +190,14 @@ class FakeSchedulerClient : public SchedulerClient {
|
|
|
| virtual void DidBeginImplFrameDeadline() OVERRIDE {}
|
|
|
| + virtual void RunPendingTasks(bool advance_now) {
|
| + scheduler_->RunPendingTasks(advance_now);
|
| + }
|
| +
|
| + virtual base::TimeDelta NextPendingTaskDelay() {
|
| + return scheduler_->NextPendingTaskDelay();
|
| + }
|
| +
|
| protected:
|
| bool needs_begin_frame_;
|
| bool draw_will_happen_;
|
| @@ -240,7 +211,6 @@ class FakeSchedulerClient : public SchedulerClient {
|
| std::vector<const char*> actions_;
|
| ScopedVector<base::Value> states_;
|
| scoped_ptr<TestScheduler> scheduler_;
|
| - scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
|
| };
|
|
|
| void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler,
|
| @@ -259,11 +229,11 @@ void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler,
|
| if (client_initiates_begin_frame)
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| else
|
| - client->task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client->RunPendingTasks(true); // Run posted BeginFrame.
|
|
|
| // Run the posted deadline task.
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| - client->task_runner().RunPendingTasks();
|
| + client->RunPendingTasks(true);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
|
|
| // We need another BeginImplFrame so Scheduler calls
|
| @@ -271,11 +241,11 @@ void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler,
|
| if (client_initiates_begin_frame)
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| else
|
| - client->task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client->RunPendingTasks(true); // Run posted BeginFrame.
|
|
|
| // Run the posted deadline task.
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| - client->task_runner().RunPendingTasks();
|
| + client->RunPendingTasks(true);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| }
|
|
|
| @@ -319,7 +289,7 @@ TEST(SchedulerTest, RequestCommit) {
|
| client.Reset();
|
|
|
| // If we don't swap on the deadline, we wait for the next BeginFrame.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_NO_ACTION(client);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -341,7 +311,7 @@ TEST(SchedulerTest, RequestCommit) {
|
| client.Reset();
|
|
|
| // BeginImplFrame deadline should draw.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -354,7 +324,7 @@ TEST(SchedulerTest, RequestCommit) {
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
|
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("SetNeedsBeginFrame", client);
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| client.Reset();
|
| @@ -396,7 +366,7 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
|
| EXPECT_SINGLE_ACTION("ScheduledActionCommit", client);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -420,7 +390,7 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
|
| EXPECT_SINGLE_ACTION("ScheduledActionCommit", client);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -430,7 +400,7 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
|
| // On the next BeginImplFrame, verify we go back to a quiescent state and
|
| // no longer request BeginImplFrames.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| client.Reset();
|
| }
|
| @@ -476,13 +446,13 @@ TEST(SchedulerTest, RequestRedrawInsideDraw) {
|
| EXPECT_EQ(0, client.num_draws());
|
|
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(scheduler->RedrawPending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
|
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -490,7 +460,7 @@ TEST(SchedulerTest, RequestRedrawInsideDraw) {
|
| // We stop requesting BeginImplFrames after a BeginImplFrame where we don't
|
| // swap.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| @@ -516,7 +486,7 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) {
|
|
|
| // Fail the draw.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
|
|
| // We have a commit pending and the draw failed, and we didn't lose the redraw
|
| @@ -527,7 +497,7 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) {
|
|
|
| // Fail the draw again.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
| EXPECT_TRUE(scheduler->CommitPending());
|
| EXPECT_TRUE(scheduler->RedrawPending());
|
| @@ -536,7 +506,7 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) {
|
| // Draw successfully.
|
| client.SetDrawWillHappen(true);
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(3, client.num_draws());
|
| EXPECT_TRUE(scheduler->CommitPending());
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| @@ -595,7 +565,7 @@ TEST(SchedulerTest, RequestCommitInsideDraw) {
|
| client.SetNeedsCommitOnNextDraw();
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| client.SetNeedsCommitOnNextDraw();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(scheduler->CommitPending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -603,7 +573,7 @@ TEST(SchedulerTest, RequestCommitInsideDraw) {
|
| scheduler->NotifyReadyToCommit();
|
|
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
|
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| @@ -613,7 +583,7 @@ TEST(SchedulerTest, RequestCommitInsideDraw) {
|
| // We stop requesting BeginImplFrames after a BeginImplFrame where we don't
|
| // swap.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| EXPECT_FALSE(scheduler->CommitPending());
|
| @@ -640,7 +610,7 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) {
|
|
|
| // Fail the draw.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
|
|
| // We have a commit pending and the draw failed, and we didn't lose the commit
|
| @@ -652,7 +622,7 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) {
|
| // Fail the draw again.
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
|
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
| EXPECT_TRUE(scheduler->CommitPending());
|
| EXPECT_TRUE(scheduler->RedrawPending());
|
| @@ -661,7 +631,7 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) {
|
| // Draw successfully.
|
| client.SetDrawWillHappen(true);
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(3, client.num_draws());
|
| EXPECT_TRUE(scheduler->CommitPending());
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| @@ -686,7 +656,7 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) {
|
| // Draw successfully, this starts a new frame.
|
| client.SetNeedsCommitOnNextDraw();
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
|
|
| scheduler->SetNeedsRedraw();
|
| @@ -697,7 +667,7 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) {
|
| client.SetDrawWillHappen(false);
|
| client.SetNeedsCommitOnNextDraw();
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(2, client.num_draws());
|
| }
|
|
|
| @@ -742,7 +712,7 @@ TEST(SchedulerTest, ManageTiles) {
|
|
|
| // On the deadline, he actions should have occured in the right order.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -772,7 +742,7 @@ TEST(SchedulerTest, ManageTiles) {
|
| // then the ManageTiles action will be triggered after the Draw.
|
| // Afterwards, neither a draw nor ManageTiles are pending.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -788,7 +758,7 @@ TEST(SchedulerTest, ManageTiles) {
|
| EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("SetNeedsBeginFrame", client);
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -809,7 +779,7 @@ TEST(SchedulerTest, ManageTiles) {
|
| EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(0, client.num_draws());
|
| EXPECT_FALSE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -841,7 +811,7 @@ TEST(SchedulerTest, ManageTilesOncePerFrame) {
|
| EXPECT_FALSE(scheduler->ManageTilesPending());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -859,7 +829,7 @@ TEST(SchedulerTest, ManageTilesOncePerFrame) {
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -884,7 +854,7 @@ TEST(SchedulerTest, ManageTilesOncePerFrame) {
|
| EXPECT_TRUE(scheduler->ManageTilesPending());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -907,7 +877,7 @@ TEST(SchedulerTest, ManageTilesOncePerFrame) {
|
| EXPECT_TRUE(scheduler->ManageTilesPending());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_FALSE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -924,7 +894,7 @@ TEST(SchedulerTest, ManageTilesOncePerFrame) {
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(1, client.num_draws());
|
| EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndSwapIfPossible"));
|
| EXPECT_TRUE(client.HasAction("ScheduledActionManageTiles"));
|
| @@ -970,7 +940,7 @@ TEST(SchedulerTest, ShouldUpdateVisibleTiles) {
|
|
|
| client.Reset();
|
| client.SetSwapContainsIncompleteTile(true);
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->RedrawPending());
|
| @@ -981,7 +951,7 @@ TEST(SchedulerTest, ShouldUpdateVisibleTiles) {
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionUpdateVisibleTiles", client, 0, 3);
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 1, 3);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 2, 3);
|
| @@ -993,7 +963,7 @@ TEST(SchedulerTest, ShouldUpdateVisibleTiles) {
|
|
|
| // No more UpdateVisibleTiles().
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("SetNeedsBeginFrame", client);
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| }
|
| @@ -1067,7 +1037,7 @@ void MainFrameInHighLatencyMode(int64 begin_main_frame_to_commit_estimate_in_ms,
|
| EXPECT_FALSE(scheduler->MainThreadIsInHighLatencyMode());
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| EXPECT_FALSE(scheduler->MainThreadIsInHighLatencyMode());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_TRUE(scheduler->MainThreadIsInHighLatencyMode());
|
| scheduler->NotifyBeginMainFrameStarted();
|
| scheduler->NotifyReadyToCommit();
|
| @@ -1079,7 +1049,7 @@ void MainFrameInHighLatencyMode(int64 begin_main_frame_to_commit_estimate_in_ms,
|
| EXPECT_TRUE(scheduler->MainThreadIsInHighLatencyMode());
|
| scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
|
| EXPECT_TRUE(scheduler->MainThreadIsInHighLatencyMode());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_EQ(scheduler->MainThreadIsInHighLatencyMode(),
|
| should_send_begin_main_frame);
|
| EXPECT_EQ(client.HasAction("ScheduledActionSendBeginMainFrame"),
|
| @@ -1139,7 +1109,7 @@ TEST(SchedulerTest, PollForCommitCompletion) {
|
| scheduler->BeginFrame(frame_args);
|
|
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
|
|
| scheduler->DidSwapBuffers();
|
| @@ -1155,7 +1125,7 @@ TEST(SchedulerTest, PollForCommitCompletion) {
|
| // Draw and swap the frame, but don't ack the swap to simulate the Browser
|
| // blocking on the renderer.
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| scheduler->DidSwapBuffers();
|
|
|
| @@ -1166,9 +1136,9 @@ TEST(SchedulerTest, PollForCommitCompletion) {
|
| // Does three iterations to make sure that the timer is properly repeating.
|
| for (int i = 0; i < 3; ++i) {
|
| EXPECT_EQ((frame_args.interval * 2).InMicroseconds(),
|
| - client.task_runner().NextPendingTaskDelay().InMicroseconds())
|
| + client.NextPendingTaskDelay().InMicroseconds())
|
| << *scheduler->AsValue();
|
| - client.task_runner().RunPendingTasks();
|
| + client.RunPendingTasks(true);
|
| EXPECT_GT(client.num_actions_(), actions_so_far);
|
| EXPECT_STREQ(client.Action(client.num_actions_() - 1),
|
| "DidAnticipatedDrawTimeChange");
|
| @@ -1179,9 +1149,9 @@ TEST(SchedulerTest, PollForCommitCompletion) {
|
| scheduler->NotifyBeginMainFrameStarted();
|
| for (int i = 0; i < 3; ++i) {
|
| EXPECT_EQ((frame_args.interval * 2).InMicroseconds(),
|
| - client.task_runner().NextPendingTaskDelay().InMicroseconds())
|
| + client.NextPendingTaskDelay().InMicroseconds())
|
| << *scheduler->AsValue();
|
| - client.task_runner().RunPendingTasks();
|
| + client.RunPendingTasks(true);
|
| EXPECT_GT(client.num_actions_(), actions_so_far);
|
| EXPECT_STREQ(client.Action(client.num_actions_() - 1),
|
| "DidAnticipatedDrawTimeChange");
|
| @@ -1223,7 +1193,7 @@ TEST(SchedulerTest, BeginRetroFrame) {
|
| scheduler->BeginFrame(args);
|
|
|
| // If we don't swap on the deadline, we wait for the next BeginImplFrame.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_NO_ACTION(client);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -1237,7 +1207,7 @@ TEST(SchedulerTest, BeginRetroFrame) {
|
| client.Reset();
|
|
|
| // BeginImplFrame should prepare the draw.
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginRetroFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1245,7 +1215,7 @@ TEST(SchedulerTest, BeginRetroFrame) {
|
| client.Reset();
|
|
|
| // BeginImplFrame deadline should draw.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -1253,12 +1223,12 @@ TEST(SchedulerTest, BeginRetroFrame) {
|
|
|
| // The following BeginImplFrame deadline should SetNeedsBeginFrame(false)
|
| // to avoid excessive toggles.
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginRetroFrame.
|
| EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
|
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("SetNeedsBeginFrame", client);
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| client.Reset();
|
| @@ -1311,7 +1281,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
|
| client.Reset();
|
|
|
| // Swapping will put us into a swap throttled state.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1321,7 +1291,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
|
| // While swap throttled, BeginRetroFrames should trigger BeginImplFrames
|
| // but not a BeginMainFrame or draw.
|
| scheduler->SetNeedsCommit();
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginRetroFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 1);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -1344,7 +1314,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
|
|
|
| // BeginImplFrame deadline should draw.
|
| scheduler->SetNeedsRedraw();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1375,7 +1345,7 @@ void BeginFramesNotFromClient(bool begin_frame_scheduling_enabled,
|
|
|
| // When the client-driven BeginFrame are disabled, the scheduler posts it's
|
| // own BeginFrame tasks.
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1383,7 +1353,7 @@ void BeginFramesNotFromClient(bool begin_frame_scheduling_enabled,
|
| client.Reset();
|
|
|
| // If we don't swap on the deadline, we wait for the next BeginFrame.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_NO_ACTION(client);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| @@ -1397,7 +1367,7 @@ void BeginFramesNotFromClient(bool begin_frame_scheduling_enabled,
|
| client.Reset();
|
|
|
| // BeginImplFrame should prepare the draw.
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1405,7 +1375,7 @@ void BeginFramesNotFromClient(bool begin_frame_scheduling_enabled,
|
| client.Reset();
|
|
|
| // BeginImplFrame deadline should draw.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| @@ -1413,14 +1383,14 @@ void BeginFramesNotFromClient(bool begin_frame_scheduling_enabled,
|
|
|
| // The following BeginImplFrame deadline should SetNeedsBeginFrame(false)
|
| // to avoid excessive toggles.
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginFrame.
|
| EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| client.Reset();
|
|
|
| // Make sure SetNeedsBeginFrame isn't called on the client
|
| // when the BeginFrame is no longer needed.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_NO_ACTION(client);
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| client.Reset();
|
| @@ -1473,7 +1443,7 @@ void BeginFramesNotFromClient_SwapThrottled(bool begin_frame_scheduling_enabled,
|
| client.Reset();
|
|
|
| // Trigger the first BeginImplFrame and BeginMainFrame
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1488,7 +1458,7 @@ void BeginFramesNotFromClient_SwapThrottled(bool begin_frame_scheduling_enabled,
|
| client.Reset();
|
|
|
| // Swapping will put us into a swap throttled state.
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1498,7 +1468,7 @@ void BeginFramesNotFromClient_SwapThrottled(bool begin_frame_scheduling_enabled,
|
| // While swap throttled, BeginFrames should trigger BeginImplFrames,
|
| // but not a BeginMainFrame or draw.
|
| scheduler->SetNeedsCommit();
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 1);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_FALSE(client.needs_begin_frame());
|
| @@ -1513,7 +1483,7 @@ void BeginFramesNotFromClient_SwapThrottled(bool begin_frame_scheduling_enabled,
|
|
|
| // BeginImplFrame deadline should draw.
|
| scheduler->SetNeedsRedraw();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 1, 2);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1592,7 +1562,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginFrameStarted) {
|
| EXPECT_ACTION("ScheduledActionCommit", client, 0, 1);
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
|
| }
|
|
|
| @@ -1626,7 +1596,7 @@ void DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency(
|
| EXPECT_NO_ACTION(client);
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| // OnBeginImplFrameDeadline didn't schedule any actions because main frame is
|
| // not yet completed.
|
| EXPECT_NO_ACTION(client);
|
| @@ -1699,7 +1669,7 @@ void DidLoseOutputSurfaceAfterReadyToCommit(bool impl_side_painting) {
|
| }
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
|
| }
|
|
|
| @@ -1737,7 +1707,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsManageTiles) {
|
| EXPECT_NO_ACTION(client);
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_ACTION("ScheduledActionManageTiles", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client, 1, 2);
|
| }
|
| @@ -1776,7 +1746,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
|
|
|
| // If we don't swap on the deadline, we wait for the next BeginImplFrame.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_NO_ACTION(client);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -1797,7 +1767,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
|
|
|
| // Posted BeginRetroFrame is aborted.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks();
|
| + client.RunPendingTasks(true);
|
| EXPECT_NO_ACTION(client);
|
| }
|
|
|
| @@ -1835,7 +1805,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
|
|
|
| // If we don't swap on the deadline, we wait for the next BeginImplFrame.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_NO_ACTION(client);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
| @@ -1849,7 +1819,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
|
|
|
| // BeginImplFrame should prepare the draw.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
|
| + client.RunPendingTasks(true); // Run posted BeginRetroFrame.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1863,14 +1833,14 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
|
|
|
| // BeginImplFrame deadline should abort drawing.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
|
| EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
|
| EXPECT_TRUE(client.needs_begin_frame());
|
|
|
| // No more BeginRetroFrame because BeginRetroFrame queue is cleared.
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks();
|
| + client.RunPendingTasks(true);
|
| EXPECT_NO_ACTION(client);
|
| }
|
|
|
| @@ -1892,7 +1862,7 @@ TEST(SchedulerTest,
|
| EXPECT_TRUE(scheduler->IsSyntheticBeginFrameSourceActive());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted Tick.
|
| + client.RunPendingTasks(true); // Run posted Tick.
|
| EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
|
| EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
|
| EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
|
| @@ -1911,7 +1881,7 @@ TEST(SchedulerTest,
|
| EXPECT_FALSE(scheduler->IsSyntheticBeginFrameSourceActive());
|
|
|
| client.Reset();
|
| - client.task_runner().RunPendingTasks(); // Run posted deadline.
|
| + client.RunPendingTasks(true); // Run posted deadline.
|
| EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
|
| EXPECT_FALSE(scheduler->IsSyntheticBeginFrameSourceActive());
|
| }
|
|
|