Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / cc / test / scheduler_test_common.h
index a502336..d9cb3cf 100644 (file)
@@ -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<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
@@ -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<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