OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/resources/worker_pool.h" | 5 #include "cc/resources/worker_pool.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "cc/base/completion_event.h" | 9 #include "cc/base/completion_event.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 virtual ~FakeWorkerPool() {} | 46 virtual ~FakeWorkerPool() {} |
47 | 47 |
48 static scoped_ptr<FakeWorkerPool> Create() { | 48 static scoped_ptr<FakeWorkerPool> Create() { |
49 return make_scoped_ptr(new FakeWorkerPool); | 49 return make_scoped_ptr(new FakeWorkerPool); |
50 } | 50 } |
51 | 51 |
52 void ScheduleTasks(const base::Closure& callback, | 52 void ScheduleTasks(const base::Closure& callback, |
53 const base::Closure& reply, | 53 const base::Closure& reply, |
54 const base::Closure& dependency, | 54 const base::Closure& dependency, |
55 int count) { | 55 int count) { |
56 unsigned priority = 0u; | |
57 TaskGraph graph; | 56 TaskGraph graph; |
58 | 57 |
59 scoped_refptr<FakeWorkerPoolTaskImpl> completion_task( | 58 scoped_refptr<FakeWorkerPoolTaskImpl> completion_task( |
60 new FakeWorkerPoolTaskImpl( | 59 new FakeWorkerPoolTaskImpl( |
61 base::Bind(&FakeWorkerPool::OnTasksCompleted, | 60 base::Bind(&FakeWorkerPool::OnTasksCompleted, |
62 base::Unretained(this)), | 61 base::Unretained(this)), |
63 base::Closure())); | 62 base::Closure())); |
64 scoped_ptr<GraphNode> completion_node(new GraphNode); | 63 scoped_ptr<internal::GraphNode> completion_node( |
65 completion_node->set_task(completion_task.get()); | 64 new internal::GraphNode(completion_task.get(), 0u)); |
66 | 65 |
67 scoped_refptr<FakeWorkerPoolTaskImpl> dependency_task( | 66 scoped_refptr<FakeWorkerPoolTaskImpl> dependency_task( |
68 new FakeWorkerPoolTaskImpl(dependency, base::Closure())); | 67 new FakeWorkerPoolTaskImpl(dependency, base::Closure())); |
69 scoped_ptr<GraphNode> dependency_node(new GraphNode); | 68 scoped_ptr<internal::GraphNode> dependency_node( |
70 dependency_node->set_task(dependency_task.get()); | 69 new internal::GraphNode(dependency_task.get(), 0u)); |
71 | 70 |
72 TaskVector tasks; | 71 TaskVector tasks; |
73 for (int i = 0; i < count; ++i) { | 72 for (int i = 0; i < count; ++i) { |
74 scoped_refptr<FakeWorkerPoolTaskImpl> task( | 73 scoped_refptr<FakeWorkerPoolTaskImpl> task( |
75 new FakeWorkerPoolTaskImpl(callback, reply)); | 74 new FakeWorkerPoolTaskImpl(callback, reply)); |
76 scoped_ptr<GraphNode> node(new GraphNode); | 75 scoped_ptr<internal::GraphNode> node( |
77 node->set_task(task.get()); | 76 new internal::GraphNode(task.get(), 0u)); |
78 node->add_dependent(completion_node.get()); | 77 node->add_dependent(completion_node.get()); |
79 completion_node->add_dependency(); | 78 completion_node->add_dependency(); |
80 dependency_node->add_dependent(node.get()); | 79 dependency_node->add_dependent(node.get()); |
81 node->add_dependency(); | 80 node->add_dependency(); |
82 node->set_priority(priority++); | |
83 graph.set(task.get(), node.Pass()); | 81 graph.set(task.get(), node.Pass()); |
84 tasks.push_back(task.get()); | 82 tasks.push_back(task.get()); |
85 } | 83 } |
86 | 84 |
87 completion_node->set_priority(priority++); | |
88 graph.set(completion_task.get(), completion_node.Pass()); | 85 graph.set(completion_task.get(), completion_node.Pass()); |
89 dependency_node->set_priority(priority++); | |
90 graph.set(dependency_task.get(), dependency_node.Pass()); | 86 graph.set(dependency_task.get(), dependency_node.Pass()); |
91 | 87 |
92 scheduled_tasks_completion_.reset(new CompletionEvent); | 88 scheduled_tasks_completion_.reset(new CompletionEvent); |
93 | 89 |
94 SetTaskGraph(&graph); | 90 SetTaskGraph(&graph); |
95 | 91 |
96 tasks_.swap(tasks); | 92 tasks_.swap(tasks); |
97 completion_task_.swap(completion_task); | 93 completion_task_.swap(completion_task); |
98 dependency_task_.swap(dependency_task); | 94 dependency_task_.swap(dependency_task); |
99 } | 95 } |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 EXPECT_EQ(1u, run_task_ids()[3]); | 218 EXPECT_EQ(1u, run_task_ids()[3]); |
223 EXPECT_EQ(1u, run_task_ids()[4]); | 219 EXPECT_EQ(1u, run_task_ids()[4]); |
224 ASSERT_EQ(3u, on_task_completed_ids().size()); | 220 ASSERT_EQ(3u, on_task_completed_ids().size()); |
225 EXPECT_EQ(1u, on_task_completed_ids()[1]); | 221 EXPECT_EQ(1u, on_task_completed_ids()[1]); |
226 EXPECT_EQ(1u, on_task_completed_ids()[2]); | 222 EXPECT_EQ(1u, on_task_completed_ids()[2]); |
227 } | 223 } |
228 | 224 |
229 } // namespace | 225 } // namespace |
230 | 226 |
231 } // namespace cc | 227 } // namespace cc |
OLD | NEW |