| Index: cc/scheduler/scheduler_unittest.cc
|
| diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
|
| index af083034915c3ec009bff639bf63ffc49fd6683b..beeb767badaadc238728e9d2f94146be6c352ff3 100644
|
| --- a/cc/scheduler/scheduler_unittest.cc
|
| +++ b/cc/scheduler/scheduler_unittest.cc
|
| @@ -141,13 +141,6 @@ class FakeSchedulerClient : public SchedulerClient {
|
| actions_.push_back("ScheduledActionInvalidateOutputSurface");
|
| states_.push_back(scheduler_->AsValue());
|
| }
|
| - base::TimeDelta DrawDurationEstimate() override { return base::TimeDelta(); }
|
| - base::TimeDelta BeginMainFrameToCommitDurationEstimate() override {
|
| - return base::TimeDelta();
|
| - }
|
| - base::TimeDelta CommitToActivateDurationEstimate() override {
|
| - return base::TimeDelta();
|
| - }
|
|
|
| void SendBeginFramesToChildren(const BeginFrameArgs& args) override {
|
| begin_frame_args_sent_to_children_ = args;
|
| @@ -193,31 +186,6 @@ class FakeSchedulerClient : public SchedulerClient {
|
| TestScheduler* scheduler_;
|
| };
|
|
|
| -class SchedulerClientWithFixedEstimates : public FakeSchedulerClient {
|
| - public:
|
| - SchedulerClientWithFixedEstimates(
|
| - base::TimeDelta draw_duration,
|
| - base::TimeDelta begin_main_frame_to_commit_duration,
|
| - base::TimeDelta commit_to_activate_duration)
|
| - : draw_duration_(draw_duration),
|
| - begin_main_frame_to_commit_duration_(
|
| - begin_main_frame_to_commit_duration),
|
| - commit_to_activate_duration_(commit_to_activate_duration) {}
|
| -
|
| - base::TimeDelta DrawDurationEstimate() override { return draw_duration_; }
|
| - base::TimeDelta BeginMainFrameToCommitDurationEstimate() override {
|
| - return begin_main_frame_to_commit_duration_;
|
| - }
|
| - base::TimeDelta CommitToActivateDurationEstimate() override {
|
| - return commit_to_activate_duration_;
|
| - }
|
| -
|
| - private:
|
| - base::TimeDelta draw_duration_;
|
| - base::TimeDelta begin_main_frame_to_commit_duration_;
|
| - base::TimeDelta commit_to_activate_duration_;
|
| -};
|
| -
|
| class FakeExternalBeginFrameSource : public BeginFrameSourceBase {
|
| public:
|
| explicit FakeExternalBeginFrameSource(FakeSchedulerClient* client)
|
| @@ -262,9 +230,15 @@ class SchedulerTest : public testing::Test {
|
| fake_external_begin_frame_source_.reset(
|
| new FakeExternalBeginFrameSource(client_.get()));
|
| }
|
| +
|
| + scoped_ptr<FakeCompositorTimingHistory> fake_compositor_timing_history =
|
| + FakeCompositorTimingHistory::Create();
|
| + fake_compositor_timing_history_ = fake_compositor_timing_history.get();
|
| +
|
| scheduler_ = TestScheduler::Create(
|
| now_src_.get(), client_.get(), scheduler_settings_, 0,
|
| - task_runner_.get(), fake_external_begin_frame_source_.get());
|
| + task_runner_.get(), fake_external_begin_frame_source_.get(),
|
| + fake_compositor_timing_history.Pass());
|
| DCHECK(scheduler_);
|
| client_->set_scheduler(scheduler_.get());
|
| return scheduler_.get();
|
| @@ -422,6 +396,7 @@ class SchedulerTest : public testing::Test {
|
| SchedulerSettings scheduler_settings_;
|
| scoped_ptr<FakeSchedulerClient> client_;
|
| scoped_ptr<TestScheduler> scheduler_;
|
| + FakeCompositorTimingHistory* fake_compositor_timing_history_;
|
| };
|
|
|
| TEST_F(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) {
|
| @@ -473,13 +448,14 @@ TEST_F(SchedulerTest, SendBeginFramesToChildrenWithoutCommit) {
|
|
|
| TEST_F(SchedulerTest, SendBeginFramesToChildrenDeadlineNotAdjusted) {
|
| // Set up client with specified estimates.
|
| - SchedulerClientWithFixedEstimates* client =
|
| - new SchedulerClientWithFixedEstimates(
|
| - base::TimeDelta::FromMilliseconds(1),
|
| - base::TimeDelta::FromMilliseconds(2),
|
| - base::TimeDelta::FromMilliseconds(4));
|
| scheduler_settings_.use_external_begin_frame_source = true;
|
| - SetUpScheduler(make_scoped_ptr(client).Pass(), true);
|
| + SetUpScheduler(true);
|
| + fake_compositor_timing_history_->SetDrawDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(1));
|
| + fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(2));
|
| + fake_compositor_timing_history_->SetCommitToActivateDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(4));
|
|
|
| EXPECT_FALSE(client_->needs_begin_frames());
|
| scheduler_->SetChildrenNeedBeginFrames(true);
|
| @@ -1318,16 +1294,16 @@ void SchedulerTest::MainFrameInHighLatencyMode(
|
| int64 commit_to_activate_estimate_in_ms,
|
| bool impl_latency_takes_priority,
|
| bool should_send_begin_main_frame) {
|
| - // Set up client with specified estimates (draw duration is set to 1).
|
| - SchedulerClientWithFixedEstimates* client =
|
| - new SchedulerClientWithFixedEstimates(
|
| - base::TimeDelta::FromMilliseconds(1),
|
| - base::TimeDelta::FromMilliseconds(
|
| - begin_main_frame_to_commit_estimate_in_ms),
|
| - base::TimeDelta::FromMilliseconds(commit_to_activate_estimate_in_ms));
|
| -
|
| scheduler_settings_.use_external_begin_frame_source = true;
|
| - SetUpScheduler(make_scoped_ptr(client).Pass(), true);
|
| + SetUpScheduler(true);
|
| +
|
| + fake_compositor_timing_history_->SetDrawDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(1));
|
| + fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(
|
| + begin_main_frame_to_commit_estimate_in_ms));
|
| + fake_compositor_timing_history_->SetCommitToActivateDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(commit_to_activate_estimate_in_ms));
|
|
|
| scheduler_->SetImplLatencyTakesPriority(impl_latency_takes_priority);
|
|
|
| @@ -1342,9 +1318,9 @@ void SchedulerTest::MainFrameInHighLatencyMode(
|
| scheduler_->NotifyReadyToCommit();
|
| scheduler_->NotifyReadyToActivate();
|
| EXPECT_TRUE(scheduler_->MainThreadIsInHighLatencyMode());
|
| - EXPECT_TRUE(client->HasAction("ScheduledActionSendBeginMainFrame"));
|
| + EXPECT_TRUE(client_->HasAction("ScheduledActionSendBeginMainFrame"));
|
|
|
| - client->Reset();
|
| + client_->Reset();
|
| scheduler_->SetNeedsCommit();
|
| EXPECT_TRUE(scheduler_->MainThreadIsInHighLatencyMode());
|
| EXPECT_SCOPED(AdvanceFrame());
|
| @@ -1352,7 +1328,7 @@ void SchedulerTest::MainFrameInHighLatencyMode(
|
| task_runner().RunPendingTasks(); // Run posted deadline.
|
| EXPECT_EQ(scheduler_->MainThreadIsInHighLatencyMode(),
|
| should_send_begin_main_frame);
|
| - EXPECT_EQ(client->HasAction("ScheduledActionSendBeginMainFrame"),
|
| + EXPECT_EQ(client_->HasAction("ScheduledActionSendBeginMainFrame"),
|
| should_send_begin_main_frame);
|
| }
|
|
|
| @@ -1390,14 +1366,16 @@ TEST_F(
|
|
|
| // Since we are simulating a long commit, set up a client with draw duration
|
| // estimates that prevent skipping main frames to get to low latency mode.
|
| - SchedulerClientWithFixedEstimates* client =
|
| - new SchedulerClientWithFixedEstimates(
|
| - base::TimeDelta::FromMilliseconds(1),
|
| - base::TimeDelta::FromMilliseconds(32),
|
| - base::TimeDelta::FromMilliseconds(32));
|
| scheduler_settings_.use_external_begin_frame_source = true;
|
| scheduler_settings_.main_frame_while_swap_throttled_enabled = true;
|
| - SetUpScheduler(make_scoped_ptr(client).Pass(), true);
|
| + SetUpScheduler(true);
|
| +
|
| + fake_compositor_timing_history_->SetDrawDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(1));
|
| + fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(32));
|
| + fake_compositor_timing_history_->SetCommitToActivateDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(32));
|
|
|
| // Disables automatic swap acks so this test can force swap ack throttling
|
| // to simulate a blocked Browser ui thread.
|
| @@ -1467,15 +1445,17 @@ TEST_F(SchedulerTest,
|
|
|
| // Since we are simulating a long commit, set up a client with draw duration
|
| // estimates that prevent skipping main frames to get to low latency mode.
|
| - SchedulerClientWithFixedEstimates* client =
|
| - new SchedulerClientWithFixedEstimates(
|
| - base::TimeDelta::FromMilliseconds(1),
|
| - base::TimeDelta::FromMilliseconds(32),
|
| - base::TimeDelta::FromMilliseconds(32));
|
| scheduler_settings_.use_external_begin_frame_source = true;
|
| scheduler_settings_.main_frame_while_swap_throttled_enabled = true;
|
| scheduler_settings_.main_frame_before_activation_enabled = true;
|
| - SetUpScheduler(make_scoped_ptr(client).Pass(), true);
|
| + SetUpScheduler(true);
|
| +
|
| + fake_compositor_timing_history_->SetDrawDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(1));
|
| + fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(32));
|
| + fake_compositor_timing_history_->SetCommitToActivateDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(32));
|
|
|
| // Disables automatic swap acks so this test can force swap ack throttling
|
| // to simulate a blocked Browser ui thread.
|
| @@ -1553,15 +1533,17 @@ TEST_F(
|
|
|
| // Since we are simulating a long commit, set up a client with draw duration
|
| // estimates that prevent skipping main frames to get to low latency mode.
|
| - SchedulerClientWithFixedEstimates* client =
|
| - new SchedulerClientWithFixedEstimates(
|
| - base::TimeDelta::FromMilliseconds(1),
|
| - base::TimeDelta::FromMilliseconds(32),
|
| - base::TimeDelta::FromMilliseconds(32));
|
| scheduler_settings_.use_external_begin_frame_source = true;
|
| scheduler_settings_.main_frame_while_swap_throttled_enabled = true;
|
| scheduler_settings_.main_frame_before_activation_enabled = true;
|
| - SetUpScheduler(make_scoped_ptr(client).Pass(), true);
|
| + SetUpScheduler(true);
|
| +
|
| + fake_compositor_timing_history_->SetDrawDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(1));
|
| + fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(32));
|
| + fake_compositor_timing_history_->SetCommitToActivateDurationEstimate(
|
| + base::TimeDelta::FromMilliseconds(32));
|
|
|
| // Disables automatic swap acks so this test can force swap ack throttling
|
| // to simulate a blocked Browser ui thread.
|
|
|