blob: 03e65ab2dd3d99d9ee5b6c05832f9581db45eabe [file] [log] [blame]
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "cc/test/scheduler_test_common.h"
#include <string>
#include "base/logging.h"
namespace cc {
void FakeTimeSourceClient::OnTimerTick() {
tick_called_ = true;
}
base::TimeTicks FakeDelayBasedTimeSource::Now() const { return now_; }
TestDelayBasedTimeSource::TestDelayBasedTimeSource(
scoped_refptr<TestNowSource> now_src,
base::TimeDelta interval,
OrderedSimpleTaskRunner* task_runner)
: DelayBasedTimeSource(interval, task_runner), now_src_(now_src) {
}
base::TimeTicks TestDelayBasedTimeSource::Now() const {
return now_src_->Now();
}
std::string TestDelayBasedTimeSource::TypeString() const {
return "TestDelayBasedTimeSource";
}
TestDelayBasedTimeSource::~TestDelayBasedTimeSource() {
}
void FakeBeginFrameSource::DidFinishFrame(size_t remaining_frames) {
remaining_frames_ = remaining_frames;
}
void FakeBeginFrameSource::AsValueInto(base::debug::TracedValue* dict) const {
dict->SetString("type", "FakeBeginFrameSource");
BeginFrameSourceMixIn::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_.use_external_begin_frame_source) {
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();
}
BeginFrameSource*
TestSchedulerFrameSourcesConstructor::ConstructUnthrottledFrameSource(
Scheduler* scheduler) {
TRACE_EVENT1(
"cc",
"TestSchedulerFrameSourcesConstructor::ConstructUnthrottledFrameSource",
"source", "TestBackToBackBeginFrameSource");
DCHECK(!scheduler->unthrottled_frame_source_internal_);
scheduler->unthrottled_frame_source_internal_ =
TestBackToBackBeginFrameSource::Create(now_src_, test_task_runner_);
return scheduler->unthrottled_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,
base::PowerMonitor* power_monitor,
TestSchedulerFrameSourcesConstructor* frame_sources_constructor,
scoped_ptr<BeginFrameSource> external_begin_frame_source)
: Scheduler(client,
scheduler_settings,
layer_tree_host_id,
test_task_runner,
power_monitor,
external_begin_frame_source.Pass(),
frame_sources_constructor),
now_src_(now_src) {
}
base::TimeTicks TestScheduler::Now() const {
return now_src_->Now();
}
TestScheduler::~TestScheduler() {
}
} // namespace cc