| Index: cc/test/scheduler_test_common.h
|
| diff --git a/cc/test/scheduler_test_common.h b/cc/test/scheduler_test_common.h
|
| index a50233653410836c44189d5d53381dfaf0d6d3b3..1a0525b00f3778dda3708747ad70e8c2dd7217f7 100644
|
| --- a/cc/test/scheduler_test_common.h
|
| +++ b/cc/test/scheduler_test_common.h
|
| @@ -19,7 +19,7 @@ namespace cc {
|
|
|
| class FakeTimeSourceClient : public TimeSourceClient {
|
| public:
|
| - FakeTimeSourceClient() { Reset(); }
|
| + FakeTimeSourceClient() : tick_called_(false) {}
|
| void Reset() { tick_called_ = false; }
|
| bool TickCalled() const { return tick_called_; }
|
|
|
| @@ -73,6 +73,92 @@ class TestDelayBasedTimeSource : public DelayBasedTimeSource {
|
| scoped_refptr<TestNowSource> now_src_;
|
| };
|
|
|
| +struct FakeBeginFrameSource : public BeginFrameSource {
|
| + bool needs_begin_frames_ = false;
|
| + bool remaining_frames_ = false;
|
| +
|
| + BeginFrameObserver* GetObserver() { return observer_; }
|
| +
|
| + BeginFrameArgs TestLastUsedBeginFrameArgs() {
|
| + if (observer_) {
|
| + return observer_->LastUsedBeginFrameArgs();
|
| + }
|
| + return BeginFrameArgs();
|
| + }
|
| + void TestOnBeginFrame(const BeginFrameArgs& args) {
|
| + return CallOnBeginFrame(args);
|
| + }
|
| +
|
| + // BeginFrameSource
|
| + virtual bool NeedsBeginFrames() const OVERRIDE;
|
| + virtual void SetNeedsBeginFrames(bool needs_begin_frames) OVERRIDE;
|
| + virtual void DidFinishFrame(size_t remaining_frames) OVERRIDE;
|
| +
|
| + virtual void AsValueInto(base::debug::TracedValue* dict) const OVERRIDE;
|
| +
|
| + virtual ~FakeBeginFrameSource() {}
|
| +};
|
| +
|
| +class TestBackToBackBeginFrameSource : public BackToBackBeginFrameSource {
|
| + public:
|
| + virtual ~TestBackToBackBeginFrameSource();
|
| +
|
| + static scoped_ptr<TestBackToBackBeginFrameSource> Create(
|
| + scoped_refptr<TestNowSource> now_src,
|
| + base::SingleThreadTaskRunner* task_runner) {
|
| + return make_scoped_ptr(
|
| + new TestBackToBackBeginFrameSource(now_src, task_runner));
|
| + }
|
| +
|
| + protected:
|
| + TestBackToBackBeginFrameSource(scoped_refptr<TestNowSource> now_src,
|
| + base::SingleThreadTaskRunner* task_runner);
|
| +
|
| + virtual base::TimeTicks Now() OVERRIDE;
|
| +
|
| + scoped_refptr<TestNowSource> now_src_;
|
| +};
|
| +
|
| +class TestSyntheticBeginFrameSource : public SyntheticBeginFrameSource {
|
| + public:
|
| + virtual ~TestSyntheticBeginFrameSource();
|
| +
|
| + static scoped_ptr<TestSyntheticBeginFrameSource> Create(
|
| + scoped_refptr<TestNowSource> now_src,
|
| + OrderedSimpleTaskRunner* task_runner,
|
| + base::TimeDelta initial_interval) {
|
| + return make_scoped_ptr(
|
| + new TestSyntheticBeginFrameSource(TestDelayBasedTimeSource::Create(
|
| + now_src, initial_interval, task_runner)));
|
| + }
|
| +
|
| + protected:
|
| + TestSyntheticBeginFrameSource(
|
| + scoped_refptr<DelayBasedTimeSource> time_source);
|
| +};
|
| +
|
| +class TestScheduler;
|
| +class TestSchedulerFrameSourcesConstructor
|
| + : public SchedulerFrameSourcesConstructor {
|
| + public:
|
| + virtual ~TestSchedulerFrameSourcesConstructor();
|
| +
|
| + protected:
|
| + virtual BeginFrameSource* ConstructPrimaryFrameSource(
|
| + Scheduler* scheduler) OVERRIDE;
|
| + virtual BeginFrameSource* ConstructBackgroundFrameSource(
|
| + Scheduler* scheduler) OVERRIDE;
|
| +
|
| + OrderedSimpleTaskRunner* test_task_runner_;
|
| + TestNowSource* now_src_;
|
| +
|
| + protected:
|
| + explicit TestSchedulerFrameSourcesConstructor(
|
| + OrderedSimpleTaskRunner* test_task_runner,
|
| + TestNowSource* now_src);
|
| + friend class TestScheduler;
|
| +};
|
| +
|
| class TestScheduler : public Scheduler {
|
| public:
|
| static scoped_ptr<TestScheduler> Create(
|
| @@ -85,11 +171,14 @@ class TestScheduler : public Scheduler {
|
|
|
| scoped_refptr<OrderedSimpleTaskRunner> test_task_runner =
|
| new OrderedSimpleTaskRunner(now_src, true);
|
| + TestSchedulerFrameSourcesConstructor frame_sources_constructor(
|
| + test_task_runner.get(), now_src.get());
|
| return make_scoped_ptr(new TestScheduler(now_src,
|
| client,
|
| scheduler_settings,
|
| layer_tree_host_id,
|
| - test_task_runner));
|
| + test_task_runner,
|
| + &frame_sources_constructor));
|
| }
|
|
|
| // Extra test helper functionality
|
| @@ -97,10 +186,7 @@ class TestScheduler : public Scheduler {
|
| return begin_retro_frame_args_.empty();
|
| }
|
|
|
| - bool IsSyntheticBeginFrameSourceActive() const {
|
| - return synthetic_begin_frame_source_->IsActive();
|
| - }
|
| -
|
| + BeginFrameSource& frame_source() { return *frame_source_; }
|
| OrderedSimpleTaskRunner& task_runner() { return *test_task_runner_; }
|
|
|
| virtual ~TestScheduler();
|
| @@ -110,11 +196,13 @@ class TestScheduler : public Scheduler {
|
| virtual base::TimeTicks Now() const OVERRIDE;
|
|
|
| private:
|
| - TestScheduler(scoped_refptr<TestNowSource> now_src,
|
| - SchedulerClient* client,
|
| - const SchedulerSettings& scheduler_settings,
|
| - int layer_tree_host_id,
|
| - const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner);
|
| + TestScheduler(
|
| + scoped_refptr<TestNowSource> now_src,
|
| + SchedulerClient* client,
|
| + const SchedulerSettings& scheduler_settings,
|
| + int layer_tree_host_id,
|
| + const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner,
|
| + TestSchedulerFrameSourcesConstructor* frame_sources_constructor);
|
|
|
| scoped_refptr<TestNowSource> now_src_;
|
| OrderedSimpleTaskRunner* test_task_runner_;
|
|
|