| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/test/task_runner_test_template.h" |
| |
| namespace base { |
| |
| namespace internal { |
| |
| TaskTracker::TaskTracker() : task_runs_(0), task_runs_cv_(&lock_) {} |
| |
| TaskTracker::~TaskTracker() {} |
| |
| Closure TaskTracker::WrapTask(const Closure& task, int i) { |
| return Bind(&TaskTracker::RunTask, this, task, i); |
| } |
| |
| void TaskTracker::RunTask(const Closure& task, int i) { |
| AutoLock lock(lock_); |
| if (!task.is_null()) { |
| task.Run(); |
| } |
| ++task_run_counts_[i]; |
| ++task_runs_; |
| task_runs_cv_.Signal(); |
| } |
| |
| std::map<int, int> TaskTracker::GetTaskRunCounts() const { |
| AutoLock lock(lock_); |
| return task_run_counts_; |
| } |
| |
| void TaskTracker::WaitForCompletedTasks(int count) { |
| AutoLock lock(lock_); |
| while (task_runs_ < count) |
| task_runs_cv_.Wait(); |
| } |
| |
| void ExpectRunsTasksOnCurrentThread( |
| bool expected_value, |
| const scoped_refptr<TaskRunner>& task_runner) { |
| EXPECT_EQ(expected_value, task_runner->RunsTasksOnCurrentThread()); |
| } |
| |
| } // namespace internal |
| |
| } // namespace base |