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

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: Testing.. 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..8a7fa6adc75b9732c50f0d53c2f58da70241a365 100644
--- a/cc/test/scheduler_test_common.cc
+++ b/cc/test/scheduler_test_common.cc
@@ -34,6 +34,45 @@ 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,
+ base::TimeTicks initial_timebase,
+ base::TimeDelta initial_interval)
+ : SyntheticBeginFrameSource(time_source,
+ initial_timebase,
+ initial_interval) {
+}
+
+TestSyntheticBeginFrameSource::~TestSyntheticBeginFrameSource() {
+}
+
TestScheduler::TestScheduler(
scoped_refptr<TestNowSource> now_src,
SchedulerClient* client,
@@ -46,13 +85,25 @@ TestScheduler::TestScheduler(
test_task_runner),
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));
+}
+
+BeginFrameSource* TestScheduler::GetPrimaryBeginFrameSource() {
+ if (!settings_.throttle_frame_production) {
+ primary_frame_source_internal_ =
+ TestBackToBackBeginFrameSource::Create(now_src_, task_runner_.get());
+ return primary_frame_source_internal_.get();
+ } else if (!settings_.begin_frame_scheduling_enabled) {
+ primary_frame_source_internal_ = TestSyntheticBeginFrameSource::Create(
+ now_src_, test_task_runner_, BeginFrameArgs::DefaultInterval());
+ return primary_frame_source_internal_.get();
}
+ return Scheduler::GetPrimaryBeginFrameSource();
+}
+
+BeginFrameSource* TestScheduler::GetBackgroundBeginFrameSource() {
+ background_frame_source_internal_ = TestSyntheticBeginFrameSource::Create(
+ now_src_, test_task_runner_, base::TimeDelta::FromSeconds(1));
+ return background_frame_source_internal_.get();
}
base::TimeTicks TestScheduler::Now() const {

Powered by Google App Engine
This is Rietveld 408576698