summaryrefslogtreecommitdiffstats
path: root/content/renderer/raster_worker_pool_unittest.cc
diff options
context:
space:
mode:
authordcastagna <dcastagna@chromium.org>2015-08-05 12:51:03 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-05 19:51:31 +0000
commit4517a189421126a3162db7d3aa3341d724e3f62d (patch)
treeaebcc28f39cb9c6196fbcbbd5a7b99ac01b28db1 /content/renderer/raster_worker_pool_unittest.cc
parenta2d607bc7746bcc6b2cc30998570eec6d89cd6e0 (diff)
downloadchromium_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.cc71
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