diff options
author | dcastagna <dcastagna@chromium.org> | 2015-08-05 12:51:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-05 19:51:31 +0000 |
commit | 4517a189421126a3162db7d3aa3341d724e3f62d (patch) | |
tree | aebcc28f39cb9c6196fbcbbd5a7b99ac01b28db1 /content/renderer/raster_worker_pool_unittest.cc | |
parent | a2d607bc7746bcc6b2cc30998570eec6d89cd6e0 (diff) | |
download | chromium_src-4517a189421126a3162db7d3aa3341d724e3f62d.zip chromium_src-4517a189421126a3162db7d3aa3341d724e3f62d.tar.gz chromium_src-4517a189421126a3162db7d3aa3341d724e3f62d.tar.bz2 |
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}
Diffstat (limited to 'content/renderer/raster_worker_pool_unittest.cc')
-rw-r--r-- | content/renderer/raster_worker_pool_unittest.cc | 71 |
1 files changed, 71 insertions, 0 deletions
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<content::RasterWorkerPool> GetTaskRunner() { + return raster_worker_pool_; + } + + void StopTaskRunner() { + raster_worker_pool_->GetTaskGraphRunner()->FlushForTesting(); + } + + ~RasterWorkerPoolTestDelegate() { raster_worker_pool_->Shutdown(); } + + private: + scoped_refptr<content::RasterWorkerPool> 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<base::SequencedTaskRunner> GetTaskRunner() { + return raster_worker_pool_->CreateSequencedTaskRunner(); + } + + void StopTaskRunner() { + raster_worker_pool_->GetTaskGraphRunner()->FlushForTesting(); + } + + ~RasterWorkerPoolSequencedTestDelegate() { raster_worker_pool_->Shutdown(); } + + private: + scoped_refptr<content::RasterWorkerPool> raster_worker_pool_; +}; + +INSTANTIATE_TYPED_TEST_CASE_P(RasterWorkerPool, + SequencedTaskRunnerTest, + RasterWorkerPoolSequencedTestDelegate); + +} // namespace +} // namespace base |