From 4517a189421126a3162db7d3aa3341d724e3f62d Mon Sep 17 00:00:00 2001 From: dcastagna Date: Wed, 5 Aug 2015 12:51:03 -0700 Subject: Reland: Implement and test task runners in RasterWorkerPool. This CL moves RasterWorkerPool outside render_thread_impl.h and in its own file, implements TaskRunner and SequencedTaskRunner on top of it and properly tests the two implementations. BUG= CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Committed: https://crrev.com/6526c209494a5176f82b5f400fd1e66a426c840f Cr-Commit-Position: refs/heads/master@{#341827} Review URL: https://codereview.chromium.org/1254003003 Cr-Commit-Position: refs/heads/master@{#341946} --- content/renderer/raster_worker_pool_unittest.cc | 71 +++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 content/renderer/raster_worker_pool_unittest.cc (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 new file mode 100644 index 0000000..926ba2b --- /dev/null +++ b/content/renderer/raster_worker_pool_unittest.cc @@ -0,0 +1,71 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/test/sequenced_task_runner_test_template.h" +#include "base/test/task_runner_test_template.h" +#include "base/threading/simple_thread.h" +#include "content/renderer/raster_worker_pool.h" + +namespace base { +namespace { + +// Number of threads spawned in tests. +const int kNumThreads = 4; + +class RasterWorkerPoolTestDelegate { + public: + RasterWorkerPoolTestDelegate() + : raster_worker_pool_(new content::RasterWorkerPool()) {} + + void StartTaskRunner() { + raster_worker_pool_->Start(kNumThreads, SimpleThread::Options()); + } + + scoped_refptr GetTaskRunner() { + return raster_worker_pool_; + } + + void StopTaskRunner() { + raster_worker_pool_->GetTaskGraphRunner()->FlushForTesting(); + } + + ~RasterWorkerPoolTestDelegate() { raster_worker_pool_->Shutdown(); } + + private: + scoped_refptr raster_worker_pool_; +}; + +INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool, + TaskRunnerTest, + RasterWorkerPoolTestDelegate); + +class RasterWorkerPoolSequencedTestDelegate { + public: + RasterWorkerPoolSequencedTestDelegate() + : raster_worker_pool_(new content::RasterWorkerPool()) {} + + void StartTaskRunner() { + raster_worker_pool_->Start(kNumThreads, SimpleThread::Options()); + } + + scoped_refptr GetTaskRunner() { + return raster_worker_pool_->CreateSequencedTaskRunner(); + } + + void StopTaskRunner() { + raster_worker_pool_->GetTaskGraphRunner()->FlushForTesting(); + } + + ~RasterWorkerPoolSequencedTestDelegate() { raster_worker_pool_->Shutdown(); } + + private: + scoped_refptr raster_worker_pool_; +}; + +INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool, + SequencedTaskRunnerTest, + RasterWorkerPoolSequencedTestDelegate); + +} // namespace +} // namespace base -- cgit v1.1