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")); |