Index: base/task_scheduler/scheduler_worker_thread_unittest.cc |
diff --git a/base/task_scheduler/scheduler_worker_thread_unittest.cc b/base/task_scheduler/scheduler_worker_thread_unittest.cc |
index 36fa42369fd5ef7d79be6c305860660dcb81d56d..2a9d5c69778c884143eff6ac6bd90d5e48a8fc2c 100644 |
--- a/base/task_scheduler/scheduler_worker_thread_unittest.cc |
+++ b/base/task_scheduler/scheduler_worker_thread_unittest.cc |
@@ -31,7 +31,8 @@ class TaskSchedulerWorkerThreadTest : public testing::TestWithParam<size_t> { |
protected: |
TaskSchedulerWorkerThreadTest() |
: main_entry_called_(true, false), |
- num_get_work_cv_(lock_.CreateConditionVariable()) {} |
+ num_get_work_cv_(lock_.CreateConditionVariable()), |
+ worker_thread_set_(true, false) {} |
void SetUp() override { |
worker_thread_ = SchedulerWorkerThread::Create( |
@@ -39,6 +40,7 @@ class TaskSchedulerWorkerThreadTest : public testing::TestWithParam<size_t> { |
WrapUnique(new TestSchedulerWorkerThreadDelegate(this)), |
&task_tracker_); |
ASSERT_TRUE(worker_thread_); |
+ worker_thread_set_.Signal(); |
main_entry_called_.Wait(); |
} |
@@ -91,7 +93,10 @@ class TaskSchedulerWorkerThreadTest : public testing::TestWithParam<size_t> { |
: outer_(outer) {} |
// SchedulerWorkerThread::Delegate: |
- void OnMainEntry() override { |
+ void OnMainEntry(SchedulerWorkerThread* worker_thread) override { |
+ outer_->worker_thread_set_.Wait(); |
+ EXPECT_EQ(outer_->worker_thread_.get(), worker_thread); |
+ |
// Without synchronization, OnMainEntry() could be called twice without |
// generating an error. |
AutoSchedulerLock auto_lock(outer_->lock_); |
@@ -200,6 +205,9 @@ class TaskSchedulerWorkerThreadTest : public testing::TestWithParam<size_t> { |
// Number of times that RunTaskCallback() has been called. |
size_t num_run_tasks_ = 0; |
+ // Signaled after |worker_thread_| is set. |
+ WaitableEvent worker_thread_set_; |
+ |
DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerThreadTest); |
}; |