| Index: base/threading/sequenced_worker_pool_unittest.cc
|
| ===================================================================
|
| --- base/threading/sequenced_worker_pool_unittest.cc (revision 128981)
|
| +++ base/threading/sequenced_worker_pool_unittest.cc (working copy)
|
| @@ -510,6 +510,58 @@
|
| EXPECT_EQ(old_has_work_call_count + 1, has_work_call_count());
|
| }
|
|
|
| +void IsRunningOnCurrentThreadTask(
|
| + SequencedWorkerPool::SequenceToken test_positive_token,
|
| + SequencedWorkerPool::SequenceToken test_negative_token,
|
| + SequencedWorkerPool* pool,
|
| + SequencedWorkerPool* unused_pool) {
|
| + EXPECT_TRUE(pool->RunsTasksOnCurrentThread());
|
| + EXPECT_TRUE(pool->IsRunningSequenceOnCurrentThread(test_positive_token));
|
| + EXPECT_FALSE(pool->IsRunningSequenceOnCurrentThread(test_negative_token));
|
| + EXPECT_FALSE(unused_pool->RunsTasksOnCurrentThread());
|
| + EXPECT_FALSE(
|
| + unused_pool->IsRunningSequenceOnCurrentThread(test_positive_token));
|
| + EXPECT_FALSE(
|
| + unused_pool->IsRunningSequenceOnCurrentThread(test_negative_token));
|
| +}
|
| +
|
| +// Verify correctness of the IsRunningSequenceOnCurrentThread method.
|
| +TEST_F(SequencedWorkerPoolTest, IsRunningOnCurrentThread) {
|
| + SequencedWorkerPool::SequenceToken token1 = pool()->GetSequenceToken();
|
| + SequencedWorkerPool::SequenceToken token2 = pool()->GetSequenceToken();
|
| + SequencedWorkerPool::SequenceToken unsequenced_token;
|
| +
|
| + scoped_refptr<SequencedWorkerPool> unused_pool =
|
| + new SequencedWorkerPool(2, "unused_pool");
|
| + EXPECT_TRUE(token1.Equals(unused_pool->GetSequenceToken()));
|
| + EXPECT_TRUE(token2.Equals(unused_pool->GetSequenceToken()));
|
| +
|
| + EXPECT_FALSE(pool()->RunsTasksOnCurrentThread());
|
| + EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(token1));
|
| + EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(token2));
|
| + EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(unsequenced_token));
|
| + EXPECT_FALSE(unused_pool->RunsTasksOnCurrentThread());
|
| + EXPECT_FALSE(unused_pool->IsRunningSequenceOnCurrentThread(token1));
|
| + EXPECT_FALSE(unused_pool->IsRunningSequenceOnCurrentThread(token2));
|
| + EXPECT_FALSE(
|
| + unused_pool->IsRunningSequenceOnCurrentThread(unsequenced_token));
|
| +
|
| + pool()->PostSequencedWorkerTask(
|
| + token1, FROM_HERE,
|
| + base::Bind(&IsRunningOnCurrentThreadTask,
|
| + token1, token2, pool(), unused_pool));
|
| + pool()->PostSequencedWorkerTask(
|
| + token2, FROM_HERE,
|
| + base::Bind(&IsRunningOnCurrentThreadTask,
|
| + token2, unsequenced_token, pool(), unused_pool));
|
| + pool()->PostWorkerTask(
|
| + FROM_HERE,
|
| + base::Bind(&IsRunningOnCurrentThreadTask,
|
| + unsequenced_token, token1, pool(), unused_pool));
|
| + pool()->Shutdown();
|
| + unused_pool->Shutdown();
|
| +}
|
| +
|
| class SequencedWorkerPoolTaskRunnerTestDelegate {
|
| public:
|
| SequencedWorkerPoolTaskRunnerTestDelegate() {}
|
|
|