X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcc%2Ftest%2Fscheduler_test_common.h;h=d9cb3cf79a3f842c9ca3b4852c9f11518a449e14;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=a50233653410836c44189d5d53381dfaf0d6d3b3;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/cc/test/scheduler_test_common.h b/src/cc/test/scheduler_test_common.h index a502336..d9cb3cf 100644 --- a/src/cc/test/scheduler_test_common.h +++ b/src/cc/test/scheduler_test_common.h @@ -19,12 +19,12 @@ namespace cc { 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_; @@ -39,13 +39,13 @@ class FakeDelayBasedTimeSource : public DelayBasedTimeSource { } 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_; }; @@ -66,30 +66,112 @@ class TestDelayBasedTimeSource : public DelayBasedTimeSource { 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 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 Create( + scoped_refptr now_src, + base::SingleThreadTaskRunner* task_runner) { + return make_scoped_ptr( + new TestBackToBackBeginFrameSource(now_src, task_runner)); + } + + protected: + TestBackToBackBeginFrameSource(scoped_refptr now_src, + base::SingleThreadTaskRunner* task_runner); + + base::TimeTicks Now() override; + + scoped_refptr now_src_; +}; + +class TestSyntheticBeginFrameSource : public SyntheticBeginFrameSource { + public: + ~TestSyntheticBeginFrameSource() override; + + static scoped_ptr Create( + scoped_refptr 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 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 Create( scoped_refptr 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 test_task_runner = - new OrderedSimpleTaskRunner(now_src, true); + int layer_tree_host_id, + const scoped_refptr& 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 @@ -97,27 +179,25 @@ class TestScheduler : public Scheduler { 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 now_src, - SchedulerClient* client, - const SchedulerSettings& scheduler_settings, - int layer_tree_host_id, - const scoped_refptr& test_task_runner); + TestScheduler( + scoped_refptr now_src, + SchedulerClient* client, + const SchedulerSettings& scheduler_settings, + int layer_tree_host_id, + const scoped_refptr& test_task_runner, + base::PowerMonitor* power_monitor, + TestSchedulerFrameSourcesConstructor* frame_sources_constructor); scoped_refptr now_src_; - OrderedSimpleTaskRunner* test_task_runner_; }; } // namespace cc