From 4e3aa5a539e3774b51b998dc60eac42a97c2cfb8 Mon Sep 17 00:00:00 2001
From: ericrk <ericrk@chromium.org>
Date: Mon, 30 Nov 2015 19:53:56 -0800
Subject: Interface-izes TaskGraphRunner and moves implementation helpers to
 TaskGraphWorkQueue.

There are two new classes:
SynchronousTaskGraphRunner - used in some tests and by LayerTreeHostImpl
SingleThreadTaskGraphRunner - used in a number of tests (wrapped by TestTaskGraphRunner) and by GpuProcessTransportFactory and CompositorImplAndroid.

Additionally RasterWorkerPool has been re-worked to use the new helper.

BUG=
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1449133002

Cr-Commit-Position: refs/heads/master@{#362338}
---
 content/renderer/raster_worker_pool_unittest.cc | 61 ++++++++++++++++++++++---
 1 file changed, 55 insertions(+), 6 deletions(-)

(limited to 'content/renderer/raster_worker_pool_unittest.cc')

diff --git a/content/renderer/raster_worker_pool_unittest.cc b/content/renderer/raster_worker_pool_unittest.cc
index 926ba2b..7a402b7 100644
--- a/content/renderer/raster_worker_pool_unittest.cc
+++ b/content/renderer/raster_worker_pool_unittest.cc
@@ -5,6 +5,7 @@
 #include "base/test/sequenced_task_runner_test_template.h"
 #include "base/test/task_runner_test_template.h"
 #include "base/threading/simple_thread.h"
+#include "cc/test/task_graph_runner_test_template.h"
 #include "content/renderer/raster_worker_pool.h"
 
 namespace base {
@@ -26,9 +27,7 @@ class RasterWorkerPoolTestDelegate {
     return raster_worker_pool_;
   }
 
-  void StopTaskRunner() {
-    raster_worker_pool_->GetTaskGraphRunner()->FlushForTesting();
-  }
+  void StopTaskRunner() { raster_worker_pool_->FlushForTesting(); }
 
   ~RasterWorkerPoolTestDelegate() { raster_worker_pool_->Shutdown(); }
 
@@ -53,9 +52,7 @@ class RasterWorkerPoolSequencedTestDelegate {
     return raster_worker_pool_->CreateSequencedTaskRunner();
   }
 
-  void StopTaskRunner() {
-    raster_worker_pool_->GetTaskGraphRunner()->FlushForTesting();
-  }
+  void StopTaskRunner() { raster_worker_pool_->FlushForTesting(); }
 
   ~RasterWorkerPoolSequencedTestDelegate() { raster_worker_pool_->Shutdown(); }
 
@@ -69,3 +66,55 @@ INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool,
 
 }  // namespace
 }  // namespace base
+
+namespace cc {
+namespace {
+
+template <int NumThreads>
+class RasterWorkerPoolTaskGraphRunnerTestDelegate {
+ public:
+  RasterWorkerPoolTaskGraphRunnerTestDelegate()
+      : raster_worker_pool_(new content::RasterWorkerPool()) {}
+
+  void StartTaskGraphRunner() {
+    raster_worker_pool_->Start(NumThreads, base::SimpleThread::Options());
+  }
+
+  cc::TaskGraphRunner* GetTaskGraphRunner() {
+    return raster_worker_pool_->GetTaskGraphRunner();
+  }
+
+  void StopTaskGraphRunner() { raster_worker_pool_->FlushForTesting(); }
+
+  ~RasterWorkerPoolTaskGraphRunnerTestDelegate() {
+    raster_worker_pool_->Shutdown();
+  }
+
+ private:
+  scoped_refptr<content::RasterWorkerPool> raster_worker_pool_;
+};
+
+// Multithreaded tests.
+INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool_1_Threads,
+                              TaskGraphRunnerTest,
+                              RasterWorkerPoolTaskGraphRunnerTestDelegate<1>);
+INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool_2_Threads,
+                              TaskGraphRunnerTest,
+                              RasterWorkerPoolTaskGraphRunnerTestDelegate<2>);
+INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool_3_Threads,
+                              TaskGraphRunnerTest,
+                              RasterWorkerPoolTaskGraphRunnerTestDelegate<3>);
+INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool_4_Threads,
+                              TaskGraphRunnerTest,
+                              RasterWorkerPoolTaskGraphRunnerTestDelegate<4>);
+INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool_5_Threads,
+                              TaskGraphRunnerTest,
+                              RasterWorkerPoolTaskGraphRunnerTestDelegate<5>);
+
+// Single threaded tests.
+INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool,
+                              SingleThreadTaskGraphRunnerTest,
+                              RasterWorkerPoolTaskGraphRunnerTestDelegate<1>);
+
+}  // namespace
+}  // namespace cc
-- 
cgit v1.1