// 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 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& task_runner) { EXPECT_EQ(expected_value, task_runner->RunsTasksOnCurrentThread()); } } // namespace internal } // namespace base