Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: cc/resources/worker_pool_unittest.cc

Issue 17244003: cc: Move task graph construction to RasterWorkerPool classes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@wp-run-count
Patch Set: add missing CC_EXPORT Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/worker_pool_perftest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/worker_pool_unittest.cc
diff --git a/cc/resources/worker_pool_unittest.cc b/cc/resources/worker_pool_unittest.cc
index babf7fbec7acfb61a75115ae18446111d348a2c9..5c946e001d0e9fdbe32d186ac5b50c08ae627131 100644
--- a/cc/resources/worker_pool_unittest.cc
+++ b/cc/resources/worker_pool_unittest.cc
@@ -13,16 +13,10 @@ namespace cc {
namespace {
-class FakeTaskImpl : public internal::WorkerPoolTask {
+class FakeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
public:
- FakeTaskImpl(const base::Closure& callback,
- const base::Closure& reply,
- internal::WorkerPoolTask::TaskVector* dependencies)
- : internal::WorkerPoolTask(dependencies),
- callback_(callback),
- reply_(reply) {
- }
- FakeTaskImpl(const base::Closure& callback, const base::Closure& reply)
+ FakeWorkerPoolTaskImpl(const base::Closure& callback,
+ const base::Closure& reply)
: callback_(callback),
reply_(reply) {
}
@@ -38,10 +32,12 @@ class FakeTaskImpl : public internal::WorkerPoolTask {
}
private:
- virtual ~FakeTaskImpl() {}
+ virtual ~FakeWorkerPoolTaskImpl() {}
const base::Closure callback_;
const base::Closure reply_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeWorkerPoolTaskImpl);
};
class FakeWorkerPool : public WorkerPool {
@@ -57,26 +53,49 @@ class FakeWorkerPool : public WorkerPool {
const base::Closure& reply,
const base::Closure& dependency,
int count) {
- scoped_refptr<FakeTaskImpl> dependency_task(
- new FakeTaskImpl(dependency, base::Closure()));
+ unsigned priority = 0u;
+ TaskGraph graph;
+
+ scoped_refptr<FakeWorkerPoolTaskImpl> completion_task(
+ new FakeWorkerPoolTaskImpl(
+ base::Bind(&FakeWorkerPool::OnTasksCompleted,
+ base::Unretained(this)),
+ base::Closure()));
+ scoped_ptr<GraphNode> completion_node(new GraphNode);
+ completion_node->set_task(completion_task.get());
+
+ scoped_refptr<FakeWorkerPoolTaskImpl> dependency_task(
+ new FakeWorkerPoolTaskImpl(dependency, base::Closure()));
+ scoped_ptr<GraphNode> dependency_node(new GraphNode);
+ dependency_node->set_task(dependency_task.get());
- internal::WorkerPoolTask::TaskVector tasks;
+ TaskVector tasks;
for (int i = 0; i < count; ++i) {
- internal::WorkerPoolTask::TaskVector dependencies(1, dependency_task);
- tasks.push_back(new FakeTaskImpl(callback, reply, &dependencies));
+ scoped_refptr<FakeWorkerPoolTaskImpl> task(
+ new FakeWorkerPoolTaskImpl(callback, reply));
+ scoped_ptr<GraphNode> node(new GraphNode);
+ node->set_task(task.get());
+ node->add_dependent(completion_node.get());
+ completion_node->add_dependency();
+ dependency_node->add_dependent(node.get());
+ node->add_dependency();
+ node->set_priority(priority++);
+ graph.set(task.get(), node.Pass());
+ tasks.push_back(task.get());
}
- scoped_refptr<FakeTaskImpl> completion_task(
- new FakeTaskImpl(base::Bind(&FakeWorkerPool::OnTasksCompleted,
- base::Unretained(this)),
- base::Closure(),
- &tasks));
+
+ completion_node->set_priority(priority++);
+ graph.set(completion_task.get(), completion_node.Pass());
+ dependency_node->set_priority(priority++);
+ graph.set(dependency_task.get(), dependency_node.Pass());
scheduled_tasks_completion_.reset(new CompletionEvent);
- TaskGraph graph;
- BuildTaskGraph(completion_task.get(), &graph);
- WorkerPool::SetTaskGraph(&graph);
- root_.swap(completion_task);
+ SetTaskGraph(&graph);
+
+ tasks_.swap(tasks);
+ completion_task_.swap(completion_task);
+ dependency_task_.swap(dependency_task);
}
void WaitForTasksToComplete() {
@@ -85,13 +104,19 @@ class FakeWorkerPool : public WorkerPool {
}
private:
+ typedef std::vector<scoped_refptr<internal::WorkerPoolTask> > TaskVector;
+
void OnTasksCompleted() {
DCHECK(scheduled_tasks_completion_);
scheduled_tasks_completion_->Signal();
}
- scoped_refptr<FakeTaskImpl> root_;
+ TaskVector tasks_;
+ scoped_refptr<FakeWorkerPoolTaskImpl> completion_task_;
+ scoped_refptr<FakeWorkerPoolTaskImpl> dependency_task_;
scoped_ptr<CompletionEvent> scheduled_tasks_completion_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeWorkerPool);
};
class WorkerPoolTest : public testing::Test {
« no previous file with comments | « cc/resources/worker_pool_perftest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698