Index: cc/scheduler/scheduler_unittest.cc |
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc |
index 2b2e583f29780d5d12a374880c7efbbcc68f618d..c41acded98d6f58c7a7918a7b379393d23370fef 100644 |
--- a/cc/scheduler/scheduler_unittest.cc |
+++ b/cc/scheduler/scheduler_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "base/run_loop.h" |
#include "base/time/time.h" |
#include "base/trace_event/trace_event.h" |
+#include "cc/debug/rendering_stats_instrumentation.h" |
#include "cc/test/begin_frame_args_test.h" |
#include "cc/test/ordered_simple_task_runner.h" |
#include "cc/test/scheduler_test_common.h" |
@@ -141,13 +142,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 +187,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) |
@@ -265,9 +234,11 @@ class SchedulerTest : public testing::Test { |
fake_external_begin_frame_source_ = |
fake_external_begin_frame_source.get(); |
} |
+ rendering_stats_instrumentation_ = RenderingStatsInstrumentation::Create(); |
scheduler_ = TestScheduler::Create(now_src_.get(), client_.get(), |
scheduler_settings_, 0, task_runner_, |
- fake_external_begin_frame_source.Pass()); |
+ fake_external_begin_frame_source.Pass(), |
+ rendering_stats_instrumentation_.get()); |
DCHECK(scheduler_); |
client_->set_scheduler(scheduler_.get()); |
return scheduler_.get(); |
@@ -425,6 +396,7 @@ class SchedulerTest : public testing::Test { |
SchedulerSettings scheduler_settings_; |
scoped_ptr<FakeSchedulerClient> client_; |
scoped_ptr<TestScheduler> scheduler_; |
+ scoped_ptr<RenderingStatsInstrumentation> rendering_stats_instrumentation_; |
}; |
TEST_F(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) { |
@@ -476,13 +448,13 @@ 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); |
+ scheduler_->SetDrawDurationEstimate(base::TimeDelta::FromMilliseconds(1)); |
+ scheduler_->SetBeginMainFrameToCommitDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(2)); |
+ scheduler_->SetCommitToActivateDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(4)); |
EXPECT_FALSE(client_->needs_begin_frames()); |
scheduler_->SetChildrenNeedBeginFrames(true); |
@@ -1321,16 +1293,15 @@ 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); |
+ |
+ scheduler_->SetDrawDurationEstimate(base::TimeDelta::FromMilliseconds(1)); |
+ scheduler_->SetBeginMainFrameToCommitDurationEstimate( |
+ base::TimeDelta::FromMilliseconds( |
+ begin_main_frame_to_commit_estimate_in_ms)); |
+ scheduler_->SetCommitToActivateDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(commit_to_activate_estimate_in_ms)); |
scheduler_->SetImplLatencyTakesPriority(impl_latency_takes_priority); |
@@ -1345,9 +1316,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()); |
@@ -1355,7 +1326,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); |
} |
@@ -1393,14 +1364,15 @@ 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); |
+ |
+ scheduler_->SetDrawDurationEstimate(base::TimeDelta::FromMilliseconds(1)); |
+ scheduler_->SetBeginMainFrameToCommitDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(32)); |
+ scheduler_->SetCommitToActivateDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(32)); |
// Disables automatic swap acks so this test can force swap ack throttling |
// to simulate a blocked Browser ui thread. |
@@ -1470,15 +1442,16 @@ 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); |
+ |
+ scheduler_->SetDrawDurationEstimate(base::TimeDelta::FromMilliseconds(1)); |
+ scheduler_->SetBeginMainFrameToCommitDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(32)); |
+ scheduler_->SetCommitToActivateDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(32)); |
// Disables automatic swap acks so this test can force swap ack throttling |
// to simulate a blocked Browser ui thread. |
@@ -1556,15 +1529,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; |
scheduler_settings_.main_frame_before_activation_enabled = true; |
- SetUpScheduler(make_scoped_ptr(client).Pass(), true); |
+ SetUpScheduler(true); |
+ |
+ scheduler_->SetDrawDurationEstimate(base::TimeDelta::FromMilliseconds(1)); |
+ scheduler_->SetBeginMainFrameToCommitDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(32)); |
+ scheduler_->SetCommitToActivateDurationEstimate( |
+ base::TimeDelta::FromMilliseconds(32)); |
// Disables automatic swap acks so this test can force swap ack throttling |
// to simulate a blocked Browser ui thread. |