Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3627)

Unified Diff: base/threading/sequenced_worker_pool_unittest.cc

Issue 1423773003: Add SequencedTaskRunnerHandle to get a SequencedTaskRunner for the current thread / sequence. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: export SequenceToken Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/threading/sequenced_worker_pool_unittest.cc
diff --git a/base/threading/sequenced_worker_pool_unittest.cc b/base/threading/sequenced_worker_pool_unittest.cc
index bf82b1103574549d32d14e41506c683ecc52ac7d..5812ee75ac5f84df1fc7df48d107b1a1c69d84e8 100644
--- a/base/threading/sequenced_worker_pool_unittest.cc
+++ b/base/threading/sequenced_worker_pool_unittest.cc
@@ -904,6 +904,49 @@ TEST_F(SequencedWorkerPoolTest, FlushForTesting) {
pool()->FlushForTesting();
}
+namespace {
+
+void CheckWorkerPoolAndSequenceToken(
+ const scoped_refptr<SequencedWorkerPool>& expected_pool,
+ SequencedWorkerPool::SequenceToken expected_token) {
+ SequencedWorkerPool::SequenceToken token =
+ SequencedWorkerPool::GetSequenceTokenForCurrentThread();
+ EXPECT_EQ(expected_token.ToString(), token.ToString());
+
+ scoped_refptr<SequencedWorkerPool> pool =
+ SequencedWorkerPool::GetWorkerPoolForCurrentThread();
+ EXPECT_EQ(expected_pool, pool);
+}
+
+} // namespace
+
+TEST_F(SequencedWorkerPoolTest, GetWorkerPoolAndSequenceTokenForCurrentThread) {
+ EnsureAllWorkersCreated();
+
+ // The current thread should have neither a worker pool nor a sequence token.
+ SequencedWorkerPool::SequenceToken local_token =
+ SequencedWorkerPool::GetSequenceTokenForCurrentThread();
+ scoped_refptr<SequencedWorkerPool> local_pool =
+ SequencedWorkerPool::GetWorkerPoolForCurrentThread();
+ EXPECT_FALSE(local_token.IsValid()) << local_token.ToString();
+ EXPECT_FALSE(local_pool);
+
+ SequencedWorkerPool::SequenceToken token1 = pool()->GetSequenceToken();
+ SequencedWorkerPool::SequenceToken token2 = pool()->GetSequenceToken();
+ pool()->PostSequencedWorkerTask(
+ token1, FROM_HERE,
+ base::Bind(&CheckWorkerPoolAndSequenceToken, pool(), token1));
+ pool()->PostSequencedWorkerTask(
+ token2, FROM_HERE,
+ base::Bind(&CheckWorkerPoolAndSequenceToken, pool(), token2));
+
+ pool()->PostWorkerTask(FROM_HERE,
+ base::Bind(&CheckWorkerPoolAndSequenceToken, pool(),
+ SequencedWorkerPool::SequenceToken()));
+
+ pool()->FlushForTesting();
+}
+
TEST(SequencedWorkerPoolRefPtrTest, ShutsDownCleanWithContinueOnShutdown) {
MessageLoop loop;
scoped_refptr<SequencedWorkerPool> pool(new SequencedWorkerPool(3, "Pool"));
« base/threading/sequenced_task_runner_handle.cc ('K') | « base/threading/sequenced_worker_pool.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698