Index: base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
diff --git a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
index bbc6723c6671adeea5dab6f9fd9b8fc7d74073d2..0af4eeee466043e02dd4089d2ce862f30be69259 100644 |
--- a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
+++ b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
@@ -327,6 +327,31 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, PostDelayedTask) { |
task_ran.Wait(); |
} |
+// Verify that the RunsTasksOnCurrentThread() method of a SEQUENCED TaskRunner |
+// returns false when called from a task that isn't part of the sequence. |
+TEST_P(TaskSchedulerWorkerPoolImplTest, SequencedRunsTasksOnCurrentThread) { |
+ scoped_refptr<TaskRunner> task_runner( |
+ worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam())); |
+ scoped_refptr<TaskRunner> sequenced_task_runner( |
+ worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), |
+ ExecutionMode::SEQUENCED)); |
+ |
+ WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, |
+ WaitableEvent::InitialState::NOT_SIGNALED); |
+ task_runner->PostTask( |
+ FROM_HERE, |
+ Bind( |
+ [](scoped_refptr<TaskRunner> sequenced_task_runner, |
+ WaitableEvent* task_ran) { |
+ EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread()); |
+ // Tests that use TestTaskFactory already verify that |
+ // RunsTasksOnCurrentThread() returns true when appropriate. |
+ task_ran->Signal(); |
+ }, |
+ sequenced_task_runner, Unretained(&task_ran))); |
+ task_ran.Wait(); |
+} |
+ |
INSTANTIATE_TEST_CASE_P(Parallel, |
TaskSchedulerWorkerPoolImplTest, |
::testing::Values(ExecutionMode::PARALLEL)); |