| Index: base/task_scheduler/task_scheduler_impl_unittest.cc | 
| diff --git a/base/task_scheduler/task_scheduler_impl_unittest.cc b/base/task_scheduler/task_scheduler_impl_unittest.cc | 
| index 6aaf4af8753cd16976280e8c0af0f56cbaeb93e9..bacedb7cf98747e75dc9f8987fe25b8e5027b026 100644 | 
| --- a/base/task_scheduler/task_scheduler_impl_unittest.cc | 
| +++ b/base/task_scheduler/task_scheduler_impl_unittest.cc | 
| @@ -322,5 +322,49 @@ TEST_F(TaskSchedulerImplTest, GetMaxConcurrentTasksWithTraitsDeprecated) { | 
| TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock())); | 
| } | 
|  | 
| +// Verify that the RunsTasksOnCurrentThread() method of a SequencedTaskRunner | 
| +// returns false when called from a task that isn't part of the sequence. | 
| +TEST_F(TaskSchedulerImplTest, SequencedRunsTasksOnCurrentThread) { | 
| +  auto single_thread_task_runner = | 
| +      scheduler_->CreateSingleThreadTaskRunnerWithTraits(TaskTraits()); | 
| +  auto sequenced_task_runner = | 
| +      scheduler_->CreateSequencedTaskRunnerWithTraits(TaskTraits()); | 
| + | 
| +  WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, | 
| +                         WaitableEvent::InitialState::NOT_SIGNALED); | 
| +  single_thread_task_runner->PostTask( | 
| +      FROM_HERE, | 
| +      Bind( | 
| +          [](scoped_refptr<TaskRunner> sequenced_task_runner, | 
| +             WaitableEvent* task_ran) { | 
| +            EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread()); | 
| +            task_ran->Signal(); | 
| +          }, | 
| +          sequenced_task_runner, Unretained(&task_ran))); | 
| +  task_ran.Wait(); | 
| +} | 
| + | 
| +// Verify that the RunsTasksOnCurrentThread() method of a SingleThreadTaskRunner | 
| +// returns false when called from a task that isn't part of the sequence. | 
| +TEST_F(TaskSchedulerImplTest, SingleThreadRunsTasksOnCurrentThread) { | 
| +  auto sequenced_task_runner = | 
| +      scheduler_->CreateSequencedTaskRunnerWithTraits(TaskTraits()); | 
| +  auto single_thread_task_runner = | 
| +      scheduler_->CreateSingleThreadTaskRunnerWithTraits(TaskTraits()); | 
| + | 
| +  WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, | 
| +                         WaitableEvent::InitialState::NOT_SIGNALED); | 
| +  sequenced_task_runner->PostTask( | 
| +      FROM_HERE, | 
| +      Bind( | 
| +          [](scoped_refptr<TaskRunner> single_thread_task_runner, | 
| +             WaitableEvent* task_ran) { | 
| +            EXPECT_FALSE(single_thread_task_runner->RunsTasksOnCurrentThread()); | 
| +            task_ran->Signal(); | 
| +          }, | 
| +          single_thread_task_runner, Unretained(&task_ran))); | 
| +  task_ran.Wait(); | 
| +} | 
| + | 
| }  // namespace internal | 
| }  // namespace base | 
|  |