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