// Copyright 2012 The Chromium Authors // 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 test { TaskTracker::TaskTracker() : task_runs_(0), task_runs_cv_(&lock_) {} TaskTracker::~TaskTracker() = default; RepeatingClosure TaskTracker::WrapTask(RepeatingClosure task, int i) { return BindRepeating(&TaskTracker::RunTask, this, std::move(task), i); } void TaskTracker::RunTask(RepeatingClosure 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(); } } // namespace test // This suite is instantiated in binaries that use //base:test_support. GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TaskRunnerTest); } // namespace base