class FakeTimeSourceClient : public TimeSourceClient {
public:
- FakeTimeSourceClient() { Reset(); }
+ FakeTimeSourceClient() : tick_called_(false) {}
void Reset() { tick_called_ = false; }
bool TickCalled() const { return tick_called_; }
// TimeSourceClient implementation.
- virtual void OnTimerTick() OVERRIDE;
+ void OnTimerTick() override;
protected:
bool tick_called_;
}
void SetNow(base::TimeTicks time) { now_ = time; }
- virtual base::TimeTicks Now() const OVERRIDE;
+ base::TimeTicks Now() const override;
protected:
FakeDelayBasedTimeSource(base::TimeDelta interval,
base::SingleThreadTaskRunner* task_runner)
: DelayBasedTimeSource(interval, task_runner) {}
- virtual ~FakeDelayBasedTimeSource() {}
+ ~FakeDelayBasedTimeSource() override {}
base::TimeTicks now_;
};
OrderedSimpleTaskRunner* task_runner);
// Overridden from DelayBasedTimeSource
- virtual ~TestDelayBasedTimeSource();
- virtual base::TimeTicks Now() const OVERRIDE;
- virtual std::string TypeString() const OVERRIDE;
+ ~TestDelayBasedTimeSource() override;
+ base::TimeTicks Now() const override;
+ std::string TypeString() const override;
scoped_refptr<TestNowSource> now_src_;
};
+struct FakeBeginFrameSource : public BeginFrameSourceMixIn {
+ 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
+ void DidFinishFrame(size_t remaining_frames) override;
+ void AsValueInto(base::debug::TracedValue* dict) const override;
+
+ ~FakeBeginFrameSource() override {}
+};
+
+class TestBackToBackBeginFrameSource : public BackToBackBeginFrameSource {
+ public:
+ ~TestBackToBackBeginFrameSource() override;
+
+ 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);
+
+ base::TimeTicks Now() override;
+
+ scoped_refptr<TestNowSource> now_src_;
+};
+
+class TestSyntheticBeginFrameSource : public SyntheticBeginFrameSource {
+ public:
+ ~TestSyntheticBeginFrameSource() override;
+
+ 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:
+ ~TestSchedulerFrameSourcesConstructor() override;
+
+ protected:
+ BeginFrameSource* ConstructPrimaryFrameSource(Scheduler* scheduler) override;
+ 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(
scoped_refptr<TestNowSource> now_src,
SchedulerClient* client,
const SchedulerSettings& scheduler_settings,
- int layer_tree_host_id) {
- // A bunch of tests require Now() to be > BeginFrameArgs::DefaultInterval()
- now_src->AdvanceNow(base::TimeDelta::FromMilliseconds(100));
-
- scoped_refptr<OrderedSimpleTaskRunner> test_task_runner =
- new OrderedSimpleTaskRunner(now_src, true);
+ int layer_tree_host_id,
+ const scoped_refptr<OrderedSimpleTaskRunner>& task_runner,
+ base::PowerMonitor* power_monitor) {
+ TestSchedulerFrameSourcesConstructor frame_sources_constructor(
+ task_runner.get(), now_src.get());
return make_scoped_ptr(new TestScheduler(now_src,
client,
scheduler_settings,
layer_tree_host_id,
- test_task_runner));
+ task_runner,
+ power_monitor,
+ &frame_sources_constructor));
}
// Extra test helper functionality
return begin_retro_frame_args_.empty();
}
- bool IsSyntheticBeginFrameSourceActive() const {
- return synthetic_begin_frame_source_->IsActive();
- }
-
- OrderedSimpleTaskRunner& task_runner() { return *test_task_runner_; }
+ BeginFrameSource& frame_source() { return *frame_source_; }
- virtual ~TestScheduler();
+ ~TestScheduler() override;
protected:
// Overridden from Scheduler.
- virtual base::TimeTicks Now() const OVERRIDE;
+ 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,
+ base::PowerMonitor* power_monitor,
+ TestSchedulerFrameSourcesConstructor* frame_sources_constructor);
scoped_refptr<TestNowSource> now_src_;
- OrderedSimpleTaskRunner* test_task_runner_;
};
} // namespace cc