Chromium Code Reviews| Index: base/test/task_runner_test_template.h |
| =================================================================== |
| --- base/test/task_runner_test_template.h (revision 183651) |
| +++ base/test/task_runner_test_template.h (working copy) |
| @@ -58,6 +58,7 @@ |
| #include "base/bind.h" |
| #include "base/callback.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/synchronization/condition_variable.h" |
| #include "base/synchronization/lock.h" |
| #include "base/task_runner.h" |
| #include "base/threading/thread.h" |
| @@ -81,6 +82,8 @@ |
| std::map<int, int> GetTaskRunCounts() const; |
| + void WaitForCountTasksToComplete(int count); |
|
akalin
2013/02/26 00:12:23
similar comments as in sequenced_task_runner_templ
michaeln
2013/02/27 00:57:12
Done.
|
| + |
| private: |
| friend class RefCountedThreadSafe<TaskTracker>; |
| @@ -88,8 +91,10 @@ |
| void RunTask(const Closure& task, int i); |
| - mutable Lock task_run_counts_lock_; |
| + mutable Lock lock_; |
| std::map<int, int> task_run_counts_; |
| + int task_runs_; |
| + ConditionVariable task_runs_cv_; |
| DISALLOW_COPY_AND_ASSIGN(TaskTracker); |
| }; |
| @@ -140,6 +145,7 @@ |
| } |
| std::map<int, int> expected_task_run_counts; |
| + int expected_total_tasks = 0; |
| this->delegate_.StartTaskRunner(); |
| scoped_refptr<TaskRunner> task_runner = this->delegate_.GetTaskRunner(); |
| @@ -150,8 +156,10 @@ |
| task_runner->PostDelayedTask( |
| FROM_HERE, ith_task, base::TimeDelta::FromMilliseconds(j)); |
| ++expected_task_run_counts[i]; |
| + ++expected_total_tasks; |
| } |
| } |
| + this->task_tracker_->WaitForCountTasksToComplete(expected_total_tasks); |
| this->delegate_.StopTaskRunner(); |
| EXPECT_EQ(expected_task_run_counts, |