| Index: cc/test/task_graph_runner_test_template.cc
|
| diff --git a/cc/test/task_graph_runner_test_template.cc b/cc/test/task_graph_runner_test_template.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ba9d4ccf9a51219e0f4f976cec2555034b985614
|
| --- /dev/null
|
| +++ b/cc/test/task_graph_runner_test_template.cc
|
| @@ -0,0 +1,99 @@
|
| +// Copyright 2015 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 "cc/test/task_graph_runner_test_template.h"
|
| +
|
| +namespace cc {
|
| +
|
| +const int TaskGraphRunnerTestBase::kNamespaceCount;
|
| +
|
| +void TaskGraphRunnerTestBase::SetTaskGraphRunner(
|
| + TaskGraphRunner* task_graph_runner) {
|
| + task_graph_runner_ = task_graph_runner;
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::ResetIds(int namespace_index) {
|
| + run_task_ids_[namespace_index].clear();
|
| + on_task_completed_ids_[namespace_index].clear();
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::RunAllTasks(int namespace_index) {
|
| + task_graph_runner_->WaitForTasksToFinishRunning(
|
| + namespace_token_[namespace_index]);
|
| +
|
| + Task::Vector completed_tasks;
|
| + task_graph_runner_->CollectCompletedTasks(namespace_token_[namespace_index],
|
| + &completed_tasks);
|
| + for (Task::Vector::const_iterator it = completed_tasks.begin();
|
| + it != completed_tasks.end(); ++it) {
|
| + FakeTaskImpl* task = static_cast<FakeTaskImpl*>(it->get());
|
| + task->CompleteOnOriginThread();
|
| + }
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::RunTaskOnWorkerThread(int namespace_index,
|
| + unsigned id) {
|
| + base::AutoLock lock(run_task_ids_lock_);
|
| + run_task_ids_[namespace_index].push_back(id);
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::OnTaskCompleted(int namespace_index,
|
| + unsigned id) {
|
| + on_task_completed_ids_[namespace_index].push_back(id);
|
| +}
|
| +
|
| +const std::vector<unsigned>& TaskGraphRunnerTestBase::run_task_ids(
|
| + int namespace_index) {
|
| + return run_task_ids_[namespace_index];
|
| +}
|
| +
|
| +const std::vector<unsigned>& TaskGraphRunnerTestBase::on_task_completed_ids(
|
| + int namespace_index) {
|
| + return on_task_completed_ids_[namespace_index];
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::ScheduleTasks(
|
| + int namespace_index,
|
| + const std::vector<TaskInfo>& tasks) {
|
| + Task::Vector new_tasks;
|
| + Task::Vector new_dependents;
|
| + TaskGraph new_graph;
|
| +
|
| + for (std::vector<TaskInfo>::const_iterator it = tasks.begin();
|
| + it != tasks.end(); ++it) {
|
| + scoped_refptr<FakeTaskImpl> new_task(
|
| + new FakeTaskImpl(this, it->namespace_index, it->id));
|
| + new_graph.nodes.push_back(
|
| + TaskGraph::Node(new_task.get(), it->priority, 0u));
|
| + for (unsigned i = 0; i < it->dependent_count; ++i) {
|
| + scoped_refptr<FakeDependentTaskImpl> new_dependent_task(
|
| + new FakeDependentTaskImpl(this, it->namespace_index,
|
| + it->dependent_id));
|
| + new_graph.nodes.push_back(
|
| + TaskGraph::Node(new_dependent_task.get(), it->priority, 1u));
|
| + new_graph.edges.push_back(
|
| + TaskGraph::Edge(new_task.get(), new_dependent_task.get()));
|
| +
|
| + new_dependents.push_back(new_dependent_task.get());
|
| + }
|
| +
|
| + new_tasks.push_back(new_task.get());
|
| + }
|
| +
|
| + task_graph_runner_->ScheduleTasks(namespace_token_[namespace_index],
|
| + &new_graph);
|
| +
|
| + dependents_[namespace_index].swap(new_dependents);
|
| + tasks_[namespace_index].swap(new_tasks);
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::FakeTaskImpl::RunOnWorkerThread() {
|
| + test_->RunTaskOnWorkerThread(namespace_index_, id_);
|
| +}
|
| +
|
| +void TaskGraphRunnerTestBase::FakeTaskImpl::CompleteOnOriginThread() {
|
| + test_->OnTaskCompleted(namespace_index_, id_);
|
| +}
|
| +
|
| +} // namespace cc
|
|
|