Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1128)

Unified Diff: cc/test/scheduler_test_common.cc

Issue 267783004: Refactoring the way begin frame sources inside scheduler work. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase onto master. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/test/scheduler_test_common.cc
diff --git a/cc/test/scheduler_test_common.cc b/cc/test/scheduler_test_common.cc
index 7001b59ddeadd00e0c4563aa4acdb5f4fceed335..802264e29d478e84116b8943a2e22d5828c21559 100644
--- a/cc/test/scheduler_test_common.cc
+++ b/cc/test/scheduler_test_common.cc
@@ -34,25 +34,113 @@ std::string TestDelayBasedTimeSource::TypeString() const {
TestDelayBasedTimeSource::~TestDelayBasedTimeSource() {
}
+bool FakeBeginFrameSource::NeedsBeginFrames() const {
+ return needs_begin_frames_;
+}
+void FakeBeginFrameSource::SetNeedsBeginFrames(bool needs_begin_frames) {
+ needs_begin_frames_ = needs_begin_frames;
+}
+void FakeBeginFrameSource::DidFinishFrame(size_t remaining_frames) {
+ remaining_frames_ = remaining_frames;
+}
+void FakeBeginFrameSource::AsValueInto(base::debug::TracedValue* dict) const {
+ dict->SetString("type", "FakeBeginFrameSource");
+ BeginFrameSource::AsValueInto(dict);
+}
+
+TestBackToBackBeginFrameSource::TestBackToBackBeginFrameSource(
+ scoped_refptr<TestNowSource> now_src,
+ base::SingleThreadTaskRunner* task_runner)
+ : BackToBackBeginFrameSource(task_runner), now_src_(now_src) {
+}
+
+TestBackToBackBeginFrameSource::~TestBackToBackBeginFrameSource() {
+}
+
+base::TimeTicks TestBackToBackBeginFrameSource::Now() {
+ return now_src_->Now();
+}
+
+TestSyntheticBeginFrameSource::TestSyntheticBeginFrameSource(
+ scoped_refptr<DelayBasedTimeSource> time_source)
+ : SyntheticBeginFrameSource(time_source) {
+}
+
+TestSyntheticBeginFrameSource::~TestSyntheticBeginFrameSource() {
+}
+
+TestSchedulerFrameSourcesConstructor::TestSchedulerFrameSourcesConstructor(
+ OrderedSimpleTaskRunner* test_task_runner,
+ TestNowSource* now_src)
+ : test_task_runner_(test_task_runner), now_src_(now_src) {
+}
+TestSchedulerFrameSourcesConstructor::~TestSchedulerFrameSourcesConstructor() {
+}
+
+BeginFrameSource*
+TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource(
+ Scheduler* scheduler) {
+ if (!scheduler->settings_.throttle_frame_production) {
+ TRACE_EVENT1(
+ "cc",
+ "TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource",
+ "source",
+ "TestBackToBackBeginFrameSource");
+ DCHECK(!scheduler->primary_frame_source_internal_);
+ scheduler->primary_frame_source_internal_ =
+ TestBackToBackBeginFrameSource::Create(now_src_, test_task_runner_);
+ return scheduler->primary_frame_source_internal_.get();
+ } else if (scheduler->settings_.begin_frame_scheduling_enabled) {
+ return SchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource(
+ scheduler);
+ } else {
+ TRACE_EVENT1(
+ "cc",
+ "TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource",
+ "source",
+ "TestSyntheticBeginFrameSource");
+ scoped_ptr<TestSyntheticBeginFrameSource> synthetic_source =
+ TestSyntheticBeginFrameSource::Create(
+ now_src_, test_task_runner_, BeginFrameArgs::DefaultInterval());
+
+ DCHECK(!scheduler->vsync_observer_);
+ scheduler->vsync_observer_ = synthetic_source.get();
+
+ DCHECK(!scheduler->primary_frame_source_internal_);
+ scheduler->primary_frame_source_internal_ = synthetic_source.Pass();
+ return scheduler->primary_frame_source_internal_.get();
+ }
+}
+
+BeginFrameSource*
+TestSchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource(
+ Scheduler* scheduler) {
+ TRACE_EVENT1(
+ "cc",
+ "TestSchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource",
+ "source",
+ "TestSyntheticBeginFrameSource");
+ DCHECK(!(scheduler->background_frame_source_internal_));
+ scheduler->background_frame_source_internal_ =
+ TestSyntheticBeginFrameSource::Create(
+ now_src_, test_task_runner_, base::TimeDelta::FromSeconds(1));
+ return scheduler->background_frame_source_internal_.get();
+}
+
TestScheduler::TestScheduler(
scoped_refptr<TestNowSource> now_src,
SchedulerClient* client,
const SchedulerSettings& scheduler_settings,
int layer_tree_host_id,
- const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner)
+ const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner,
+ TestSchedulerFrameSourcesConstructor* frame_sources_constructor)
: Scheduler(client,
scheduler_settings,
layer_tree_host_id,
- test_task_runner),
+ test_task_runner,
+ frame_sources_constructor),
now_src_(now_src),
test_task_runner_(test_task_runner.get()) {
- if (!settings_.begin_frame_scheduling_enabled) {
- scoped_refptr<DelayBasedTimeSource> time_source =
- TestDelayBasedTimeSource::Create(
- now_src, VSyncInterval(), test_task_runner_);
- synthetic_begin_frame_source_.reset(
- new SyntheticBeginFrameSource(this, time_source));
- }
}
base::TimeTicks TestScheduler::Now() const {

Powered by Google App Engine
This is Rietveld 408576698