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

Side by Side Diff: cc/resources/worker_pool_unittest.cc

Issue 73923003: Shared Raster Worker Threads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unit test updated Created 6 years, 11 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 unified diff | Download patch
« no previous file with comments | « cc/resources/worker_pool_perftest.cc ('k') | cc/test/fake_tile_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/memory/scoped_vector.h"
9 #include "cc/base/completion_event.h" 10 #include "cc/base/completion_event.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 namespace cc { 13 namespace cc {
13 14
14 namespace { 15 namespace {
16 const int kWorkerPoolCount = 3;
reveman 2014/01/13 18:37:21 nit: blank line before and no indent for this line
sohanjg 2014/01/14 06:21:26 Done.
15 17
16 class FakeWorkerPoolTaskImpl : public internal::WorkerPoolTask { 18 class FakeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
17 public: 19 public:
18 FakeWorkerPoolTaskImpl(const base::Closure& callback, 20 FakeWorkerPoolTaskImpl(const base::Closure& callback,
19 const base::Closure& reply) 21 const base::Closure& reply)
20 : callback_(callback), 22 : callback_(callback),
21 reply_(reply) { 23 reply_(reply) {
22 } 24 }
23 25
24 // Overridden from internal::WorkerPoolTask: 26 // Overridden from internal::WorkerPoolTask:
(...skipping 28 matching lines...) Expand all
53 dependent_count(dependent_count), 55 dependent_count(dependent_count),
54 priority(priority) { 56 priority(priority) {
55 } 57 }
56 58
57 base::Closure callback; 59 base::Closure callback;
58 base::Closure reply; 60 base::Closure reply;
59 base::Closure dependent; 61 base::Closure dependent;
60 unsigned dependent_count; 62 unsigned dependent_count;
61 unsigned priority; 63 unsigned priority;
62 }; 64 };
63 FakeWorkerPool() : WorkerPool(1, "test") {} 65 FakeWorkerPool() : WorkerPool() {}
64 virtual ~FakeWorkerPool() {} 66 virtual ~FakeWorkerPool() {}
65 67
66 static scoped_ptr<FakeWorkerPool> Create() { 68 static scoped_ptr<FakeWorkerPool> Create() {
67 return make_scoped_ptr(new FakeWorkerPool); 69 return make_scoped_ptr(new FakeWorkerPool);
68 } 70 }
69 71
70 void ScheduleTasks(const std::vector<Task>& tasks) { 72 void ScheduleTasks(const std::vector<Task>& tasks) {
71 TaskVector new_tasks; 73 TaskVector new_tasks;
72 TaskVector new_dependents; 74 TaskVector new_dependents;
73 TaskGraph new_graph; 75 TaskGraph new_graph;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 DISALLOW_COPY_AND_ASSIGN(FakeWorkerPool); 139 DISALLOW_COPY_AND_ASSIGN(FakeWorkerPool);
138 }; 140 };
139 141
140 class WorkerPoolTest : public testing::Test { 142 class WorkerPoolTest : public testing::Test {
141 public: 143 public:
142 WorkerPoolTest() {} 144 WorkerPoolTest() {}
143 virtual ~WorkerPoolTest() {} 145 virtual ~WorkerPoolTest() {}
144 146
145 // Overridden from testing::Test: 147 // Overridden from testing::Test:
146 virtual void SetUp() OVERRIDE { 148 virtual void SetUp() OVERRIDE {
147 worker_pool_ = FakeWorkerPool::Create(); 149 for (int i = 0; i < kWorkerPoolCount; i++)
reveman 2014/01/13 18:37:21 nit: ++i instead for consistency
150 worker_pools_.push_back(FakeWorkerPool::Create().release());
148 } 151 }
149 virtual void TearDown() OVERRIDE { 152 virtual void TearDown() OVERRIDE {
150 worker_pool_->Shutdown(); 153 for (ScopedVector<FakeWorkerPool>::iterator i =
151 worker_pool_->CheckForCompletedTasks(); 154 worker_pools_.begin(); i != worker_pools_.end(); ++i) {
reveman 2014/01/13 18:37:21 There are some style problems here but maybe bette
sohanjg 2014/01/14 06:21:26 Done.
155 (*i)->Shutdown();
156 (*i)->CheckForCompletedTasks();
157 }
152 } 158 }
153 159
154 void ResetIds() { 160 void ResetIds() {
155 run_task_ids_.clear(); 161 for (int i = 0; i < kWorkerPoolCount; i++) {
reveman 2014/01/13 18:37:21 nit: ++i instead
sohanjg 2014/01/14 06:21:26 Done.
156 on_task_completed_ids_.clear(); 162 run_task_ids_[i].clear();
163 on_task_completed_ids_[i].clear();
164 }
157 } 165 }
158 166
159 void RunAllTasks() { 167 void RunAllTasksforWorkerPool(int worker_pool_index) {
160 worker_pool_->WaitForTasksToComplete(); 168 worker_pools_[worker_pool_index]->WaitForTasksToComplete();
161 worker_pool_->CheckForCompletedTasks(); 169 worker_pools_[worker_pool_index]->CheckForCompletedTasks();
162 } 170 }
163 171
164 FakeWorkerPool* worker_pool() { 172 FakeWorkerPool* worker_pool(int worker_pool_index) {
165 return worker_pool_.get(); 173 return worker_pools_[worker_pool_index];
166 } 174 }
167 175
168 void RunTask(unsigned id) { 176 void RunTask(int worker_pool_index, unsigned id) {
169 run_task_ids_.push_back(id); 177 run_task_ids_[worker_pool_index].push_back(id);
170 } 178 }
171 179
172 void OnTaskCompleted(unsigned id) { 180 void OnTaskCompleted(int worker_pool_index, unsigned id) {
173 on_task_completed_ids_.push_back(id); 181 on_task_completed_ids_[worker_pool_index].push_back(id);
174 } 182 }
175 183
176 const std::vector<unsigned>& run_task_ids() { 184 const std::vector<unsigned>& run_task_ids(int worker_pool_index) {
177 return run_task_ids_; 185 return run_task_ids_[worker_pool_index];
178 } 186 }
179 187
180 const std::vector<unsigned>& on_task_completed_ids() { 188 const std::vector<unsigned>& on_task_completed_ids(int worker_pool_index) {
181 return on_task_completed_ids_; 189 return on_task_completed_ids_[worker_pool_index];
182 } 190 }
183 191
184 private: 192 private:
185 scoped_ptr<FakeWorkerPool> worker_pool_; 193 ScopedVector<FakeWorkerPool> worker_pools_;
186 std::vector<unsigned> run_task_ids_; 194 std::vector<unsigned> run_task_ids_[kWorkerPoolCount];
187 std::vector<unsigned> on_task_completed_ids_; 195 std::vector<unsigned> on_task_completed_ids_[kWorkerPoolCount];
188 }; 196 };
189 197
190 TEST_F(WorkerPoolTest, Basic) { 198 TEST_F(WorkerPoolTest, Basic) {
reveman 2014/01/13 18:37:21 Please avoid changing the logic and use a number o
sohanjg 2014/01/14 06:21:26 Done.
191 EXPECT_EQ(0u, run_task_ids().size()); 199 EXPECT_EQ(0u, run_task_ids(0).size());
192 EXPECT_EQ(0u, on_task_completed_ids().size()); 200 EXPECT_EQ(0u, on_task_completed_ids(0).size());
201 EXPECT_EQ(0u, run_task_ids(1).size());
202 EXPECT_EQ(0u, on_task_completed_ids(1).size());
203 EXPECT_EQ(0u, run_task_ids(2).size());
204 EXPECT_EQ(0u, on_task_completed_ids(2).size());
193 205
194 worker_pool()->ScheduleTasks( 206 worker_pool(0)->ScheduleTasks(
195 std::vector<FakeWorkerPool::Task>( 207 std::vector<FakeWorkerPool::Task>(
196 1, 208 1,
197 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 209 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
198 base::Unretained(this), 210 base::Unretained(this),
211 0,
199 0u), 212 0u),
200 base::Bind(&WorkerPoolTest::OnTaskCompleted, 213 base::Bind(&WorkerPoolTest::OnTaskCompleted,
201 base::Unretained(this), 214 base::Unretained(this),
215 0,
202 0u), 216 0u),
203 base::Closure(), 217 base::Closure(),
204 1u, 218 1u,
205 0u))); 219 0u)));
206 RunAllTasks();
207 220
208 EXPECT_EQ(1u, run_task_ids().size()); 221 worker_pool(1)->ScheduleTasks(
209 EXPECT_EQ(1u, on_task_completed_ids().size());
210
211 worker_pool()->ScheduleTasks(
212 std::vector<FakeWorkerPool::Task>( 222 std::vector<FakeWorkerPool::Task>(
213 1, 223 1,
214 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 224 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
215 base::Unretained(this), 225 base::Unretained(this),
226 1,
216 0u), 227 0u),
217 base::Bind(&WorkerPoolTest::OnTaskCompleted, 228 base::Bind(&WorkerPoolTest::OnTaskCompleted,
218 base::Unretained(this), 229 base::Unretained(this),
230 1,
219 0u), 231 0u),
220 base::Bind(&WorkerPoolTest::RunTask, 232 base::Bind(&WorkerPoolTest::RunTask,
221 base::Unretained(this), 233 base::Unretained(this),
234 1,
222 0u), 235 0u),
223 1u, 236 1u,
224 0u))); 237 0u)));
225 RunAllTasks();
226 238
227 EXPECT_EQ(3u, run_task_ids().size()); 239 worker_pool(2)->ScheduleTasks(
228 EXPECT_EQ(2u, on_task_completed_ids().size());
229
230 worker_pool()->ScheduleTasks(
231 std::vector<FakeWorkerPool::Task>( 240 std::vector<FakeWorkerPool::Task>(
232 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 241 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
233 base::Unretained(this), 242 base::Unretained(this),
243 2,
234 0u), 244 0u),
235 base::Bind(&WorkerPoolTest::OnTaskCompleted, 245 base::Bind(&WorkerPoolTest::OnTaskCompleted,
236 base::Unretained(this), 246 base::Unretained(this),
247 2,
237 0u), 248 0u),
238 base::Bind(&WorkerPoolTest::RunTask, 249 base::Bind(&WorkerPoolTest::RunTask,
239 base::Unretained(this), 250 base::Unretained(this),
251 2,
240 0u), 252 0u),
241 2u, 253 2u,
242 0u))); 254 0u)));
243 RunAllTasks(); 255 RunAllTasksforWorkerPool(0);
256 RunAllTasksforWorkerPool(1);
257 RunAllTasksforWorkerPool(2);
244 258
245 EXPECT_EQ(6u, run_task_ids().size()); 259 EXPECT_EQ(1u, run_task_ids(0).size());
246 EXPECT_EQ(3u, on_task_completed_ids().size()); 260 EXPECT_EQ(1u, on_task_completed_ids(0).size());
261 EXPECT_EQ(2u, run_task_ids(1).size());
262 EXPECT_EQ(1u, on_task_completed_ids(1).size());
263 EXPECT_EQ(3u, run_task_ids(2).size());
264 EXPECT_EQ(1u, on_task_completed_ids(2).size());
247 } 265 }
248 266
249 TEST_F(WorkerPoolTest, Dependencies) { 267 TEST_F(WorkerPoolTest, Dependencies) {
reveman 2014/01/13 18:37:21 Same thing with this test. Use "for" loops and don
sohanjg 2014/01/14 06:21:26 Done.
250 worker_pool()->ScheduleTasks( 268 worker_pool(0)->ScheduleTasks(
251 std::vector<FakeWorkerPool::Task>( 269 std::vector<FakeWorkerPool::Task>(
252 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 270 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
253 base::Unretained(this), 271 base::Unretained(this),
272 0,
254 0u), 273 0u),
255 base::Bind(&WorkerPoolTest::OnTaskCompleted, 274 base::Bind(&WorkerPoolTest::OnTaskCompleted,
256 base::Unretained(this), 275 base::Unretained(this),
276 0,
257 0u), 277 0u),
258 base::Bind(&WorkerPoolTest::RunTask, 278 base::Bind(&WorkerPoolTest::RunTask,
259 base::Unretained(this), 279 base::Unretained(this),
280 0,
260 1u), 281 1u),
261 1u, 282 1u,
262 0u))); 283 0u)));
263 RunAllTasks();
264 284
265 // Check if task ran before dependent. 285 worker_pool(1)->ScheduleTasks(
266 ASSERT_EQ(2u, run_task_ids().size());
267 EXPECT_EQ(0u, run_task_ids()[0]);
268 EXPECT_EQ(1u, run_task_ids()[1]);
269 ASSERT_EQ(1u, on_task_completed_ids().size());
270 EXPECT_EQ(0u, on_task_completed_ids()[0]);
271
272 worker_pool()->ScheduleTasks(
273 std::vector<FakeWorkerPool::Task>( 286 std::vector<FakeWorkerPool::Task>(
274 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 287 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
275 base::Unretained(this), 288 base::Unretained(this),
289 1,
276 2u), 290 2u),
277 base::Bind(&WorkerPoolTest::OnTaskCompleted, 291 base::Bind(&WorkerPoolTest::OnTaskCompleted,
278 base::Unretained(this), 292 base::Unretained(this),
293 1,
279 2u), 294 2u),
280 base::Bind(&WorkerPoolTest::RunTask, 295 base::Bind(&WorkerPoolTest::RunTask,
281 base::Unretained(this), 296 base::Unretained(this),
297 1,
282 3u), 298 3u),
283 2u, 299 2u,
284 0u))); 300 0u)));
285 RunAllTasks(); 301 RunAllTasksforWorkerPool(0);
302 RunAllTasksforWorkerPool(1);
303
304 // Check if task ran before dependent.
305 ASSERT_EQ(2u, run_task_ids(0).size());
306 EXPECT_EQ(0u, run_task_ids(0)[0]);
307 EXPECT_EQ(1u, run_task_ids(0)[1]);
308 ASSERT_EQ(1u, on_task_completed_ids(0).size());
309 EXPECT_EQ(0u, on_task_completed_ids(0)[0]);
286 310
287 // Task should only run once. 311 // Task should only run once.
288 ASSERT_EQ(5u, run_task_ids().size()); 312 ASSERT_EQ(3u, run_task_ids(1).size());
289 EXPECT_EQ(2u, run_task_ids()[2]); 313 EXPECT_EQ(2u, run_task_ids(1)[0]);
290 EXPECT_EQ(3u, run_task_ids()[3]); 314 EXPECT_EQ(3u, run_task_ids(1)[1]);
291 EXPECT_EQ(3u, run_task_ids()[4]); 315 EXPECT_EQ(3u, run_task_ids(1)[2]);
292 ASSERT_EQ(2u, on_task_completed_ids().size()); 316 ASSERT_EQ(1u, on_task_completed_ids(1).size());
293 EXPECT_EQ(2u, on_task_completed_ids()[1]); 317 EXPECT_EQ(2u, on_task_completed_ids(1)[0]);
294 } 318 }
295 319
296 TEST_F(WorkerPoolTest, Priority) { 320 TEST_F(WorkerPoolTest, Priority) {
reveman 2014/01/13 18:37:21 And same thing with this test. Use "for" loops and
sohanjg 2014/01/14 06:21:26 Done.
297 { 321 {
298 FakeWorkerPool::Task tasks[] = { 322 FakeWorkerPool::Task tasks[] = {
299 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 323 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
300 base::Unretained(this), 324 base::Unretained(this),
325 0,
301 0u), 326 0u),
302 base::Bind(&WorkerPoolTest::OnTaskCompleted, 327 base::Bind(&WorkerPoolTest::OnTaskCompleted,
303 base::Unretained(this), 328 base::Unretained(this),
329 0,
304 0u), 330 0u),
305 base::Bind(&WorkerPoolTest::RunTask, 331 base::Bind(&WorkerPoolTest::RunTask,
306 base::Unretained(this), 332 base::Unretained(this),
333 0,
307 2u), 334 2u),
308 1u, 335 1u,
309 1u), // Priority 1 336 1u), // Priority 1
310 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 337 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
311 base::Unretained(this), 338 base::Unretained(this),
339 0,
312 1u), 340 1u),
313 base::Bind(&WorkerPoolTest::OnTaskCompleted, 341 base::Bind(&WorkerPoolTest::OnTaskCompleted,
314 base::Unretained(this), 342 base::Unretained(this),
343 0,
315 1u), 344 1u),
316 base::Bind(&WorkerPoolTest::RunTask, 345 base::Bind(&WorkerPoolTest::RunTask,
317 base::Unretained(this), 346 base::Unretained(this),
347 0,
318 3u), 348 3u),
319 1u, 349 1u,
320 0u) // Priority 0 350 0u) // Priority 0
321 }; 351 };
322 worker_pool()->ScheduleTasks( 352 worker_pool(0)->ScheduleTasks(
323 std::vector<FakeWorkerPool::Task>(tasks, tasks + arraysize(tasks))); 353 std::vector<FakeWorkerPool::Task>(tasks, tasks + arraysize(tasks)));
324 } 354 }
325 RunAllTasks();
326
327 // Check if tasks ran in order of priority.
328 ASSERT_EQ(4u, run_task_ids().size());
329 EXPECT_EQ(1u, run_task_ids()[0]);
330 EXPECT_EQ(3u, run_task_ids()[1]);
331 EXPECT_EQ(0u, run_task_ids()[2]);
332 EXPECT_EQ(2u, run_task_ids()[3]);
333 ASSERT_EQ(2u, on_task_completed_ids().size());
334 EXPECT_EQ(1u, on_task_completed_ids()[0]);
335 EXPECT_EQ(0u, on_task_completed_ids()[1]);
336 355
337 ResetIds(); 356 ResetIds();
338 { 357 {
339 std::vector<FakeWorkerPool::Task> tasks; 358 std::vector<FakeWorkerPool::Task> tasks;
340 tasks.push_back( 359 tasks.push_back(
341 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 360 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
342 base::Unretained(this), 361 base::Unretained(this),
362 1,
343 0u), 363 0u),
344 base::Bind(&WorkerPoolTest::OnTaskCompleted, 364 base::Bind(&WorkerPoolTest::OnTaskCompleted,
345 base::Unretained(this), 365 base::Unretained(this),
366 1,
346 0u), 367 0u),
347 base::Bind(&WorkerPoolTest::RunTask, 368 base::Bind(&WorkerPoolTest::RunTask,
348 base::Unretained(this), 369 base::Unretained(this),
370 1,
349 3u), 371 3u),
350 1u, // 1 dependent 372 1u, // 1 dependent
351 1u)); // Priority 1 373 1u)); // Priority 1
352 tasks.push_back( 374 tasks.push_back(
353 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 375 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
354 base::Unretained(this), 376 base::Unretained(this),
377 1,
355 1u), 378 1u),
356 base::Bind(&WorkerPoolTest::OnTaskCompleted, 379 base::Bind(&WorkerPoolTest::OnTaskCompleted,
357 base::Unretained(this), 380 base::Unretained(this),
381 1,
358 1u), 382 1u),
359 base::Bind(&WorkerPoolTest::RunTask, 383 base::Bind(&WorkerPoolTest::RunTask,
360 base::Unretained(this), 384 base::Unretained(this),
385 1,
361 4u), 386 4u),
362 2u, // 2 dependents 387 2u, // 2 dependents
363 1u)); // Priority 1 388 1u)); // Priority 1
364 tasks.push_back( 389 tasks.push_back(
365 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 390 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
366 base::Unretained(this), 391 base::Unretained(this),
392 1,
367 2u), 393 2u),
368 base::Bind(&WorkerPoolTest::OnTaskCompleted, 394 base::Bind(&WorkerPoolTest::OnTaskCompleted,
369 base::Unretained(this), 395 base::Unretained(this),
396 1,
370 2u), 397 2u),
371 base::Bind(&WorkerPoolTest::RunTask, 398 base::Bind(&WorkerPoolTest::RunTask,
372 base::Unretained(this), 399 base::Unretained(this),
400 1,
373 5u), 401 5u),
374 1u, // 1 dependent 402 1u, // 1 dependent
375 0u)); // Priority 0 403 0u)); // Priority 0
376 worker_pool()->ScheduleTasks(tasks); 404 worker_pool(1)->ScheduleTasks(tasks);
377 } 405 }
378 RunAllTasks(); 406 RunAllTasksforWorkerPool(0);
407 RunAllTasksforWorkerPool(1);
408
409 // Check if tasks ran in order of priority.
410 ASSERT_EQ(4u, run_task_ids(0).size());
411 EXPECT_EQ(1u, run_task_ids(0)[0]);
412 EXPECT_EQ(3u, run_task_ids(0)[1]);
413 EXPECT_EQ(0u, run_task_ids(0)[2]);
414 EXPECT_EQ(2u, run_task_ids(0)[3]);
415 ASSERT_EQ(2u, on_task_completed_ids(0).size());
416 EXPECT_EQ(1u, on_task_completed_ids(0)[0]);
417 EXPECT_EQ(0u, on_task_completed_ids(0)[1]);
379 418
380 // Check if tasks ran in order of priority and that task with more 419 // Check if tasks ran in order of priority and that task with more
381 // dependents ran first when priority is the same. 420 // dependents ran first when priority is the same.
382 ASSERT_LE(3u, run_task_ids().size()); 421 ASSERT_LE(3u, run_task_ids(1).size());
383 EXPECT_EQ(2u, run_task_ids()[0]); 422 EXPECT_EQ(2u, run_task_ids(1)[0]);
384 EXPECT_EQ(5u, run_task_ids()[1]); 423 EXPECT_EQ(5u, run_task_ids(1)[1]);
385 EXPECT_EQ(1u, run_task_ids()[2]); 424 EXPECT_EQ(1u, run_task_ids(1)[2]);
386 ASSERT_EQ(3u, on_task_completed_ids().size()); 425 ASSERT_EQ(3u, on_task_completed_ids(1).size());
387 EXPECT_EQ(2u, on_task_completed_ids()[0]); 426 EXPECT_EQ(2u, on_task_completed_ids(1)[0]);
388 EXPECT_EQ(1u, on_task_completed_ids()[1]); 427 EXPECT_EQ(1u, on_task_completed_ids(1)[1]);
389 EXPECT_EQ(0u, on_task_completed_ids()[2]); 428 EXPECT_EQ(0u, on_task_completed_ids(1)[2]);
390 } 429 }
391 430
392 } // namespace 431 } // namespace
393 432
394 } // namespace cc 433 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/worker_pool_perftest.cc ('k') | cc/test/fake_tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698