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

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

Issue 22831041: cc: Removed low priority bin from tile management. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 7 years, 3 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/prioritized_tile_set.cc ('k') | cc/resources/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 <algorithm> 5 #include <algorithm>
6 #include <vector> 6 #include <vector>
7 7
8 #include "cc/resources/managed_tile_state.h" 8 #include "cc/resources/managed_tile_state.h"
9 #include "cc/resources/prioritized_tile_set.h" 9 #include "cc/resources/prioritized_tile_set.h"
10 #include "cc/resources/tile.h" 10 #include "cc/resources/tile.h"
11 #include "cc/test/fake_output_surface.h" 11 #include "cc/test/fake_output_surface.h"
12 #include "cc/test/fake_output_surface_client.h" 12 #include "cc/test/fake_output_surface_client.h"
13 #include "cc/test/fake_picture_pile_impl.h" 13 #include "cc/test/fake_picture_pile_impl.h"
14 #include "cc/test/fake_tile_manager.h" 14 #include "cc/test/fake_tile_manager.h"
15 #include "cc/test/fake_tile_manager_client.h" 15 #include "cc/test/fake_tile_manager_client.h"
16 #include "cc/test/test_tile_priorities.h" 16 #include "cc/test/test_tile_priorities.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 namespace cc { 19 namespace cc {
20 20
21 class BinComparator { 21 class BinComparator {
22 public: 22 public:
23 bool operator()(const scoped_refptr<Tile>& a, 23 bool operator()(const scoped_refptr<Tile>& a,
24 const scoped_refptr<Tile>& b) const { 24 const scoped_refptr<Tile>& b) const {
25 const ManagedTileState& ams = a->managed_state(); 25 const ManagedTileState& ams = a->managed_state();
26 const ManagedTileState& bms = b->managed_state(); 26 const ManagedTileState& bms = b->managed_state();
27 27
28 if (ams.bin[LOW_PRIORITY_BIN] != bms.bin[LOW_PRIORITY_BIN])
29 return ams.bin[LOW_PRIORITY_BIN] < bms.bin[LOW_PRIORITY_BIN];
30
31 if (ams.required_for_activation != bms.required_for_activation) 28 if (ams.required_for_activation != bms.required_for_activation)
32 return ams.required_for_activation; 29 return ams.required_for_activation;
33 30
34 if (ams.resolution != bms.resolution) 31 if (ams.resolution != bms.resolution)
35 return ams.resolution < bms.resolution; 32 return ams.resolution < bms.resolution;
36 33
37 if (ams.time_to_needed_in_seconds != bms.time_to_needed_in_seconds) 34 if (ams.time_to_needed_in_seconds != bms.time_to_needed_in_seconds)
38 return ams.time_to_needed_in_seconds < bms.time_to_needed_in_seconds; 35 return ams.time_to_needed_in_seconds < bms.time_to_needed_in_seconds;
39 36
40 if (ams.distance_to_visible_in_pixels != 37 if (ams.distance_to_visible_in_pixels !=
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 int i = 0; 300 int i = 0;
304 for (PrioritizedTileSet::Iterator it(&set, true); 301 for (PrioritizedTileSet::Iterator it(&set, true);
305 it; 302 it;
306 ++it) { 303 ++it) {
307 EXPECT_TRUE(*it == tiles[i].get()); 304 EXPECT_TRUE(*it == tiles[i].get());
308 ++i; 305 ++i;
309 } 306 }
310 EXPECT_EQ(20, i); 307 EXPECT_EQ(20, i);
311 } 308 }
312 309
313 TEST_F(PrioritizedTileSetTest, NeverAndActiveBin) { 310 TEST_F(PrioritizedTileSetTest, AtLastAndActiveBin) {
314 // Ensure that NEVER_AND_ACTIVE_BIN tiles are sorted. 311 // Ensure that AT_LAST_AND_ACTIVE_BIN tiles are sorted.
315 312
316 PrioritizedTileSet set; 313 PrioritizedTileSet set;
317 TilePriority priorities[4] = { 314 TilePriority priorities[4] = {
318 TilePriorityForEventualBin(), 315 TilePriorityForEventualBin(),
319 TilePriorityForNowBin(), 316 TilePriorityForNowBin(),
320 TilePriority(), 317 TilePriority(),
321 TilePriorityForSoonBin()}; 318 TilePriorityForSoonBin()};
322 319
323 std::vector<scoped_refptr<Tile> > tiles; 320 std::vector<scoped_refptr<Tile> > tiles;
324 for (int priority = 0; priority < 4; ++priority) { 321 for (int priority = 0; priority < 4; ++priority) {
325 for (int i = 0; i < 5; ++i) { 322 for (int i = 0; i < 5; ++i) {
326 scoped_refptr<Tile> tile = CreateTile(); 323 scoped_refptr<Tile> tile = CreateTile();
327 tile->SetPriority(ACTIVE_TREE, priorities[priority]); 324 tile->SetPriority(ACTIVE_TREE, priorities[priority]);
328 tile->SetPriority(PENDING_TREE, priorities[priority]); 325 tile->SetPriority(PENDING_TREE, priorities[priority]);
329 tiles.push_back(tile); 326 tiles.push_back(tile);
330 set.InsertTile(tile, NEVER_AND_ACTIVE_BIN); 327 set.InsertTile(tile, AT_LAST_AND_ACTIVE_BIN);
331 } 328 }
332 } 329 }
333 330
334 // Tiles should appear in BinComparator order. 331 // Tiles should appear in BinComparator order.
335 std::sort(tiles.begin(), tiles.end(), BinComparator()); 332 std::sort(tiles.begin(), tiles.end(), BinComparator());
336 333
337 int i = 0; 334 int i = 0;
338 for (PrioritizedTileSet::Iterator it(&set, true); 335 for (PrioritizedTileSet::Iterator it(&set, true);
339 it; 336 it;
340 ++it) { 337 ++it) {
341 EXPECT_TRUE(*it == tiles[i].get()); 338 EXPECT_TRUE(*it == tiles[i].get());
342 ++i; 339 ++i;
343 } 340 }
344 EXPECT_EQ(20, i); 341 EXPECT_EQ(20, i);
345 } 342 }
346 343
347 TEST_F(PrioritizedTileSetTest, NeverBin) { 344 TEST_F(PrioritizedTileSetTest, AtLastBin) {
348 // Ensure that NEVER_BIN tiles are sorted, since they might not 345 // Ensure that AT_LAST_BIN tiles are sorted.
349 // be NEVER_BIN on a LOW_PRIORITY tree.
350 346
351 PrioritizedTileSet set; 347 PrioritizedTileSet set;
352 TilePriority priorities[4] = { 348 TilePriority priorities[4] = {
353 TilePriorityForEventualBin(), 349 TilePriorityForEventualBin(),
354 TilePriorityForNowBin(), 350 TilePriorityForNowBin(),
355 TilePriority(), 351 TilePriority(),
356 TilePriorityForSoonBin()}; 352 TilePriorityForSoonBin()};
357 353
358 std::vector<scoped_refptr<Tile> > tiles; 354 std::vector<scoped_refptr<Tile> > tiles;
359 for (int priority = 0; priority < 4; ++priority) { 355 for (int priority = 0; priority < 4; ++priority) {
360 for (int i = 0; i < 5; ++i) { 356 for (int i = 0; i < 5; ++i) {
361 scoped_refptr<Tile> tile = CreateTile(); 357 scoped_refptr<Tile> tile = CreateTile();
362 tile->SetPriority(ACTIVE_TREE, priorities[priority]); 358 tile->SetPriority(ACTIVE_TREE, priorities[priority]);
363 tile->SetPriority(PENDING_TREE, priorities[priority]); 359 tile->SetPriority(PENDING_TREE, priorities[priority]);
364 tiles.push_back(tile); 360 tiles.push_back(tile);
365 set.InsertTile(tile, NEVER_BIN); 361 set.InsertTile(tile, AT_LAST_BIN);
366 } 362 }
367 } 363 }
368 364
369 // Tiles should appear in BinComparator order. 365 // Tiles should appear in BinComparator order.
370 std::sort(tiles.begin(), tiles.end(), BinComparator()); 366 std::sort(tiles.begin(), tiles.end(), BinComparator());
371 367
372 int i = 0; 368 int i = 0;
373 for (PrioritizedTileSet::Iterator it(&set, true); 369 for (PrioritizedTileSet::Iterator it(&set, true);
374 it; 370 it;
375 ++it) { 371 ++it) {
376 EXPECT_TRUE(*it == tiles[i].get()); 372 EXPECT_TRUE(*it == tiles[i].get());
377 ++i; 373 ++i;
378 } 374 }
379 EXPECT_EQ(20, i); 375 EXPECT_EQ(20, i);
380 } 376 }
381 377
382 TEST_F(PrioritizedTileSetTest, TilesForEachBin) { 378 TEST_F(PrioritizedTileSetTest, TilesForEachBin) {
383 // Aggregate test with one tile for each of the bins, which 379 // Aggregate test with one tile for each of the bins, which
384 // should appear in order of the bins. 380 // should appear in order of the bins.
385 381
386 scoped_refptr<Tile> now_and_ready_to_draw_bin = CreateTile(); 382 scoped_refptr<Tile> now_and_ready_to_draw_bin = CreateTile();
387 scoped_refptr<Tile> now_bin = CreateTile(); 383 scoped_refptr<Tile> now_bin = CreateTile();
388 scoped_refptr<Tile> soon_bin = CreateTile(); 384 scoped_refptr<Tile> soon_bin = CreateTile();
389 scoped_refptr<Tile> eventually_and_active_bin = CreateTile(); 385 scoped_refptr<Tile> eventually_and_active_bin = CreateTile();
390 scoped_refptr<Tile> eventually_bin = CreateTile(); 386 scoped_refptr<Tile> eventually_bin = CreateTile();
391 scoped_refptr<Tile> never_bin = CreateTile(); 387 scoped_refptr<Tile> at_last_bin = CreateTile();
392 scoped_refptr<Tile> never_and_active_bin = CreateTile(); 388 scoped_refptr<Tile> at_last_and_active_bin = CreateTile();
393 389
394 PrioritizedTileSet set; 390 PrioritizedTileSet set;
395 set.InsertTile(soon_bin, SOON_BIN); 391 set.InsertTile(soon_bin, SOON_BIN);
396 set.InsertTile(never_and_active_bin, NEVER_AND_ACTIVE_BIN); 392 set.InsertTile(at_last_and_active_bin, AT_LAST_AND_ACTIVE_BIN);
397 set.InsertTile(eventually_bin, EVENTUALLY_BIN); 393 set.InsertTile(eventually_bin, EVENTUALLY_BIN);
398 set.InsertTile(now_bin, NOW_BIN); 394 set.InsertTile(now_bin, NOW_BIN);
399 set.InsertTile(eventually_and_active_bin, EVENTUALLY_AND_ACTIVE_BIN); 395 set.InsertTile(eventually_and_active_bin, EVENTUALLY_AND_ACTIVE_BIN);
400 set.InsertTile(never_bin, NEVER_BIN); 396 set.InsertTile(at_last_bin, AT_LAST_BIN);
401 set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN); 397 set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN);
402 398
403 // Tiles should appear in order. 399 // Tiles should appear in order.
404 PrioritizedTileSet::Iterator it(&set, true); 400 PrioritizedTileSet::Iterator it(&set, true);
405 EXPECT_TRUE(*it == now_and_ready_to_draw_bin.get()); 401 EXPECT_TRUE(*it == now_and_ready_to_draw_bin.get());
406 ++it; 402 ++it;
407 EXPECT_TRUE(*it == now_bin.get()); 403 EXPECT_TRUE(*it == now_bin.get());
408 ++it; 404 ++it;
409 EXPECT_TRUE(*it == soon_bin.get()); 405 EXPECT_TRUE(*it == soon_bin.get());
410 ++it; 406 ++it;
411 EXPECT_TRUE(*it == eventually_and_active_bin.get()); 407 EXPECT_TRUE(*it == eventually_and_active_bin.get());
412 ++it; 408 ++it;
413 EXPECT_TRUE(*it == eventually_bin.get()); 409 EXPECT_TRUE(*it == eventually_bin.get());
414 ++it; 410 ++it;
415 EXPECT_TRUE(*it == never_and_active_bin.get()); 411 EXPECT_TRUE(*it == at_last_and_active_bin.get());
416 ++it; 412 ++it;
417 EXPECT_TRUE(*it == never_bin.get()); 413 EXPECT_TRUE(*it == at_last_bin.get());
418 ++it; 414 ++it;
419 EXPECT_FALSE(it); 415 EXPECT_FALSE(it);
420 } 416 }
421 417
422 TEST_F(PrioritizedTileSetTest, ManyTilesForEachBin) { 418 TEST_F(PrioritizedTileSetTest, ManyTilesForEachBin) {
423 // Aggregate test with many tiles in each of the bins of various 419 // Aggregate test with many tiles in each of the bins of various
424 // priorities. Ensure that they are all returned in a sorted order. 420 // priorities. Ensure that they are all returned in a sorted order.
425 421
426 std::vector<scoped_refptr<Tile> > now_and_ready_to_draw_bins; 422 std::vector<scoped_refptr<Tile> > now_and_ready_to_draw_bins;
427 std::vector<scoped_refptr<Tile> > now_bins; 423 std::vector<scoped_refptr<Tile> > now_bins;
428 std::vector<scoped_refptr<Tile> > soon_bins; 424 std::vector<scoped_refptr<Tile> > soon_bins;
429 std::vector<scoped_refptr<Tile> > eventually_and_active_bins; 425 std::vector<scoped_refptr<Tile> > eventually_and_active_bins;
430 std::vector<scoped_refptr<Tile> > eventually_bins; 426 std::vector<scoped_refptr<Tile> > eventually_bins;
431 std::vector<scoped_refptr<Tile> > never_bins; 427 std::vector<scoped_refptr<Tile> > at_last_bins;
432 std::vector<scoped_refptr<Tile> > never_and_active_bins; 428 std::vector<scoped_refptr<Tile> > at_last_and_active_bins;
433 429
434 TilePriority priorities[4] = { 430 TilePriority priorities[4] = {
435 TilePriorityForEventualBin(), 431 TilePriorityForEventualBin(),
436 TilePriorityForNowBin(), 432 TilePriorityForNowBin(),
437 TilePriority(), 433 TilePriority(),
438 TilePriorityForSoonBin()}; 434 TilePriorityForSoonBin()};
439 435
440 PrioritizedTileSet set; 436 PrioritizedTileSet set;
441 for (int priority = 0; priority < 4; ++priority) { 437 for (int priority = 0; priority < 4; ++priority) {
442 for (int i = 0; i < 5; ++i) { 438 for (int i = 0; i < 5; ++i) {
443 scoped_refptr<Tile> tile = CreateTile(); 439 scoped_refptr<Tile> tile = CreateTile();
444 tile->SetPriority(ACTIVE_TREE, priorities[priority]); 440 tile->SetPriority(ACTIVE_TREE, priorities[priority]);
445 tile->SetPriority(PENDING_TREE, priorities[priority]); 441 tile->SetPriority(PENDING_TREE, priorities[priority]);
446 442
447 now_and_ready_to_draw_bins.push_back(tile); 443 now_and_ready_to_draw_bins.push_back(tile);
448 now_bins.push_back(tile); 444 now_bins.push_back(tile);
449 soon_bins.push_back(tile); 445 soon_bins.push_back(tile);
450 eventually_and_active_bins.push_back(tile); 446 eventually_and_active_bins.push_back(tile);
451 eventually_bins.push_back(tile); 447 eventually_bins.push_back(tile);
452 never_bins.push_back(tile); 448 at_last_bins.push_back(tile);
453 never_and_active_bins.push_back(tile); 449 at_last_and_active_bins.push_back(tile);
454 450
455 set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN); 451 set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN);
456 set.InsertTile(tile, NOW_BIN); 452 set.InsertTile(tile, NOW_BIN);
457 set.InsertTile(tile, SOON_BIN); 453 set.InsertTile(tile, SOON_BIN);
458 set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN); 454 set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN);
459 set.InsertTile(tile, EVENTUALLY_BIN); 455 set.InsertTile(tile, EVENTUALLY_BIN);
460 set.InsertTile(tile, NEVER_BIN); 456 set.InsertTile(tile, AT_LAST_BIN);
461 set.InsertTile(tile, NEVER_AND_ACTIVE_BIN); 457 set.InsertTile(tile, AT_LAST_AND_ACTIVE_BIN);
462 } 458 }
463 } 459 }
464 460
465 PrioritizedTileSet::Iterator it(&set, true); 461 PrioritizedTileSet::Iterator it(&set, true);
466 std::vector<scoped_refptr<Tile> >::iterator vector_it; 462 std::vector<scoped_refptr<Tile> >::iterator vector_it;
467 463
468 // Now and ready are not sorted. 464 // Now and ready are not sorted.
469 for (vector_it = now_and_ready_to_draw_bins.begin(); 465 for (vector_it = now_and_ready_to_draw_bins.begin();
470 vector_it != now_and_ready_to_draw_bins.end(); 466 vector_it != now_and_ready_to_draw_bins.end();
471 ++vector_it) { 467 ++vector_it) {
(...skipping 28 matching lines...) Expand all
500 } 496 }
501 497
502 // Eventually bins are sorted. 498 // Eventually bins are sorted.
503 std::sort(eventually_bins.begin(), eventually_bins.end(), BinComparator()); 499 std::sort(eventually_bins.begin(), eventually_bins.end(), BinComparator());
504 for (vector_it = eventually_bins.begin(); vector_it != eventually_bins.end(); 500 for (vector_it = eventually_bins.begin(); vector_it != eventually_bins.end();
505 ++vector_it) { 501 ++vector_it) {
506 EXPECT_TRUE(*vector_it == *it); 502 EXPECT_TRUE(*vector_it == *it);
507 ++it; 503 ++it;
508 } 504 }
509 505
510 // Never and active bins are sorted. 506 // At last and active bins are sorted.
511 std::sort(never_and_active_bins.begin(), 507 std::sort(at_last_and_active_bins.begin(),
512 never_and_active_bins.end(), 508 at_last_and_active_bins.end(),
513 BinComparator()); 509 BinComparator());
514 for (vector_it = never_and_active_bins.begin(); 510 for (vector_it = at_last_and_active_bins.begin();
515 vector_it != never_and_active_bins.end(); 511 vector_it != at_last_and_active_bins.end();
516 ++vector_it) { 512 ++vector_it) {
517 EXPECT_TRUE(*vector_it == *it); 513 EXPECT_TRUE(*vector_it == *it);
518 ++it; 514 ++it;
519 } 515 }
520 516
521 // Never bins are sorted. 517 // At last bins are sorted.
522 std::sort(never_bins.begin(), never_bins.end(), BinComparator()); 518 std::sort(at_last_bins.begin(), at_last_bins.end(), BinComparator());
523 for (vector_it = never_bins.begin(); vector_it != never_bins.end(); 519 for (vector_it = at_last_bins.begin(); vector_it != at_last_bins.end();
524 ++vector_it) { 520 ++vector_it) {
525 EXPECT_TRUE(*vector_it == *it); 521 EXPECT_TRUE(*vector_it == *it);
526 ++it; 522 ++it;
527 } 523 }
528 524
529 EXPECT_FALSE(it); 525 EXPECT_FALSE(it);
530 } 526 }
531 527
532 TEST_F(PrioritizedTileSetTest, ManyTilesForEachBinDisablePriority) { 528 TEST_F(PrioritizedTileSetTest, ManyTilesForEachBinDisablePriority) {
533 // Aggregate test with many tiles for each of the bins. Tiles should 529 // Aggregate test with many tiles for each of the bins. Tiles should
534 // appear in order, until DisablePriorityOrdering is called. After that 530 // appear in order, until DisablePriorityOrdering is called. After that
535 // tiles should appear in the order they were inserted. 531 // tiles should appear in the order they were inserted.
536 532
537 std::vector<scoped_refptr<Tile> > now_and_ready_to_draw_bins; 533 std::vector<scoped_refptr<Tile> > now_and_ready_to_draw_bins;
538 std::vector<scoped_refptr<Tile> > now_bins; 534 std::vector<scoped_refptr<Tile> > now_bins;
539 std::vector<scoped_refptr<Tile> > soon_bins; 535 std::vector<scoped_refptr<Tile> > soon_bins;
540 std::vector<scoped_refptr<Tile> > eventually_and_active_bins; 536 std::vector<scoped_refptr<Tile> > eventually_and_active_bins;
541 std::vector<scoped_refptr<Tile> > eventually_bins; 537 std::vector<scoped_refptr<Tile> > eventually_bins;
542 std::vector<scoped_refptr<Tile> > never_bins; 538 std::vector<scoped_refptr<Tile> > at_last_bins;
543 std::vector<scoped_refptr<Tile> > never_and_active_bins; 539 std::vector<scoped_refptr<Tile> > at_last_and_active_bins;
544 540
545 TilePriority priorities[4] = { 541 TilePriority priorities[4] = {
546 TilePriorityForEventualBin(), 542 TilePriorityForEventualBin(),
547 TilePriorityForNowBin(), 543 TilePriorityForNowBin(),
548 TilePriority(), 544 TilePriority(),
549 TilePriorityForSoonBin()}; 545 TilePriorityForSoonBin()};
550 546
551 PrioritizedTileSet set; 547 PrioritizedTileSet set;
552 for (int priority = 0; priority < 4; ++priority) { 548 for (int priority = 0; priority < 4; ++priority) {
553 for (int i = 0; i < 5; ++i) { 549 for (int i = 0; i < 5; ++i) {
554 scoped_refptr<Tile> tile = CreateTile(); 550 scoped_refptr<Tile> tile = CreateTile();
555 tile->SetPriority(ACTIVE_TREE, priorities[priority]); 551 tile->SetPriority(ACTIVE_TREE, priorities[priority]);
556 tile->SetPriority(PENDING_TREE, priorities[priority]); 552 tile->SetPriority(PENDING_TREE, priorities[priority]);
557 553
558 now_and_ready_to_draw_bins.push_back(tile); 554 now_and_ready_to_draw_bins.push_back(tile);
559 now_bins.push_back(tile); 555 now_bins.push_back(tile);
560 soon_bins.push_back(tile); 556 soon_bins.push_back(tile);
561 eventually_and_active_bins.push_back(tile); 557 eventually_and_active_bins.push_back(tile);
562 eventually_bins.push_back(tile); 558 eventually_bins.push_back(tile);
563 never_bins.push_back(tile); 559 at_last_bins.push_back(tile);
564 never_and_active_bins.push_back(tile); 560 at_last_and_active_bins.push_back(tile);
565 561
566 set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN); 562 set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN);
567 set.InsertTile(tile, NOW_BIN); 563 set.InsertTile(tile, NOW_BIN);
568 set.InsertTile(tile, SOON_BIN); 564 set.InsertTile(tile, SOON_BIN);
569 set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN); 565 set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN);
570 set.InsertTile(tile, EVENTUALLY_BIN); 566 set.InsertTile(tile, EVENTUALLY_BIN);
571 set.InsertTile(tile, NEVER_BIN); 567 set.InsertTile(tile, AT_LAST_BIN);
572 set.InsertTile(tile, NEVER_AND_ACTIVE_BIN); 568 set.InsertTile(tile, AT_LAST_AND_ACTIVE_BIN);
573 } 569 }
574 } 570 }
575 571
576 PrioritizedTileSet::Iterator it(&set, true); 572 PrioritizedTileSet::Iterator it(&set, true);
577 std::vector<scoped_refptr<Tile> >::iterator vector_it; 573 std::vector<scoped_refptr<Tile> >::iterator vector_it;
578 574
579 // Now and ready are not sorted. 575 // Now and ready are not sorted.
580 for (vector_it = now_and_ready_to_draw_bins.begin(); 576 for (vector_it = now_and_ready_to_draw_bins.begin();
581 vector_it != now_and_ready_to_draw_bins.end(); 577 vector_it != now_and_ready_to_draw_bins.end();
582 ++vector_it) { 578 ++vector_it) {
(...skipping 30 matching lines...) Expand all
613 ++it; 609 ++it;
614 } 610 }
615 611
616 // Eventually bins are not sorted. 612 // Eventually bins are not sorted.
617 for (vector_it = eventually_bins.begin(); vector_it != eventually_bins.end(); 613 for (vector_it = eventually_bins.begin(); vector_it != eventually_bins.end();
618 ++vector_it) { 614 ++vector_it) {
619 EXPECT_TRUE(*vector_it == *it); 615 EXPECT_TRUE(*vector_it == *it);
620 ++it; 616 ++it;
621 } 617 }
622 618
623 // Never and active bins are not sorted. 619 // At last and active bins are not sorted.
624 for (vector_it = never_and_active_bins.begin(); 620 for (vector_it = at_last_and_active_bins.begin();
625 vector_it != never_and_active_bins.end(); 621 vector_it != at_last_and_active_bins.end();
626 ++vector_it) { 622 ++vector_it) {
627 EXPECT_TRUE(*vector_it == *it); 623 EXPECT_TRUE(*vector_it == *it);
628 ++it; 624 ++it;
629 } 625 }
630 626
631 // Never bins are not sorted. 627 // At last bins are not sorted.
632 for (vector_it = never_bins.begin(); vector_it != never_bins.end(); 628 for (vector_it = at_last_bins.begin(); vector_it != at_last_bins.end();
633 ++vector_it) { 629 ++vector_it) {
634 EXPECT_TRUE(*vector_it == *it); 630 EXPECT_TRUE(*vector_it == *it);
635 ++it; 631 ++it;
636 } 632 }
637 633
638 EXPECT_FALSE(it); 634 EXPECT_FALSE(it);
639 } 635 }
640 636
641 TEST_F(PrioritizedTileSetTest, TilesForFirstAndLastBins) { 637 TEST_F(PrioritizedTileSetTest, TilesForFirstAndLastBins) {
642 // Make sure that if we have empty lists between two non-empty lists, 638 // Make sure that if we have empty lists between two non-empty lists,
643 // we just get two tiles from the iterator. 639 // we just get two tiles from the iterator.
644 640
645 scoped_refptr<Tile> now_and_ready_to_draw_bin = CreateTile(); 641 scoped_refptr<Tile> now_and_ready_to_draw_bin = CreateTile();
646 scoped_refptr<Tile> never_bin = CreateTile(); 642 scoped_refptr<Tile> at_last_bin = CreateTile();
647 643
648 PrioritizedTileSet set; 644 PrioritizedTileSet set;
649 set.InsertTile(never_bin, NEVER_BIN); 645 set.InsertTile(at_last_bin, AT_LAST_BIN);
650 set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN); 646 set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN);
651 647
652 // Only two tiles should appear and they should appear in order. 648 // Only two tiles should appear and they should appear in order.
653 PrioritizedTileSet::Iterator it(&set, true); 649 PrioritizedTileSet::Iterator it(&set, true);
654 EXPECT_TRUE(*it == now_and_ready_to_draw_bin.get()); 650 EXPECT_TRUE(*it == now_and_ready_to_draw_bin.get());
655 ++it; 651 ++it;
656 EXPECT_TRUE(*it == never_bin.get()); 652 EXPECT_TRUE(*it == at_last_bin.get());
657 ++it; 653 ++it;
658 EXPECT_FALSE(it); 654 EXPECT_FALSE(it);
659 } 655 }
660 656
661 TEST_F(PrioritizedTileSetTest, MultipleIterators) { 657 TEST_F(PrioritizedTileSetTest, MultipleIterators) {
662 // Ensure that multiple iterators don't interfere with each other. 658 // Ensure that multiple iterators don't interfere with each other.
663 659
664 scoped_refptr<Tile> now_and_ready_to_draw_bin = CreateTile(); 660 scoped_refptr<Tile> now_and_ready_to_draw_bin = CreateTile();
665 scoped_refptr<Tile> now_bin = CreateTile(); 661 scoped_refptr<Tile> now_bin = CreateTile();
666 scoped_refptr<Tile> soon_bin = CreateTile(); 662 scoped_refptr<Tile> soon_bin = CreateTile();
667 scoped_refptr<Tile> eventually_bin = CreateTile(); 663 scoped_refptr<Tile> eventually_bin = CreateTile();
668 scoped_refptr<Tile> never_bin = CreateTile(); 664 scoped_refptr<Tile> at_last_bin = CreateTile();
669 665
670 PrioritizedTileSet set; 666 PrioritizedTileSet set;
671 set.InsertTile(soon_bin, SOON_BIN); 667 set.InsertTile(soon_bin, SOON_BIN);
672 set.InsertTile(eventually_bin, EVENTUALLY_BIN); 668 set.InsertTile(eventually_bin, EVENTUALLY_BIN);
673 set.InsertTile(now_bin, NOW_BIN); 669 set.InsertTile(now_bin, NOW_BIN);
674 set.InsertTile(never_bin, NEVER_BIN); 670 set.InsertTile(at_last_bin, AT_LAST_BIN);
675 set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN); 671 set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN);
676 672
677 // Tiles should appear in order. 673 // Tiles should appear in order.
678 PrioritizedTileSet::Iterator it(&set, true); 674 PrioritizedTileSet::Iterator it(&set, true);
679 EXPECT_TRUE(*it == now_and_ready_to_draw_bin.get()); 675 EXPECT_TRUE(*it == now_and_ready_to_draw_bin.get());
680 ++it; 676 ++it;
681 EXPECT_TRUE(*it == now_bin.get()); 677 EXPECT_TRUE(*it == now_bin.get());
682 ++it; 678 ++it;
683 EXPECT_TRUE(*it == soon_bin.get()); 679 EXPECT_TRUE(*it == soon_bin.get());
684 ++it; 680 ++it;
685 EXPECT_TRUE(*it == eventually_bin.get()); 681 EXPECT_TRUE(*it == eventually_bin.get());
686 ++it; 682 ++it;
687 EXPECT_TRUE(*it == never_bin.get()); 683 EXPECT_TRUE(*it == at_last_bin.get());
688 ++it; 684 ++it;
689 EXPECT_FALSE(it); 685 EXPECT_FALSE(it);
690 686
691 // Creating multiple iterators shouldn't affect old iterators. 687 // Creating multiple iterators shouldn't affect old iterators.
692 PrioritizedTileSet::Iterator second_it(&set, true); 688 PrioritizedTileSet::Iterator second_it(&set, true);
693 EXPECT_TRUE(second_it); 689 EXPECT_TRUE(second_it);
694 EXPECT_FALSE(it); 690 EXPECT_FALSE(it);
695 691
696 ++second_it; 692 ++second_it;
697 EXPECT_TRUE(second_it); 693 EXPECT_TRUE(second_it);
698 ++second_it; 694 ++second_it;
699 EXPECT_TRUE(second_it); 695 EXPECT_TRUE(second_it);
700 EXPECT_FALSE(it); 696 EXPECT_FALSE(it);
701 697
702 PrioritizedTileSet::Iterator third_it(&set, true); 698 PrioritizedTileSet::Iterator third_it(&set, true);
703 EXPECT_TRUE(third_it); 699 EXPECT_TRUE(third_it);
704 ++second_it; 700 ++second_it;
705 ++second_it; 701 ++second_it;
706 EXPECT_TRUE(second_it); 702 EXPECT_TRUE(second_it);
707 EXPECT_TRUE(third_it); 703 EXPECT_TRUE(third_it);
708 EXPECT_FALSE(it); 704 EXPECT_FALSE(it);
709 705
710 ++third_it; 706 ++third_it;
711 ++third_it; 707 ++third_it;
712 EXPECT_TRUE(third_it); 708 EXPECT_TRUE(third_it);
713 EXPECT_TRUE(*third_it == soon_bin.get()); 709 EXPECT_TRUE(*third_it == soon_bin.get());
714 EXPECT_TRUE(second_it); 710 EXPECT_TRUE(second_it);
715 EXPECT_TRUE(*second_it == never_bin.get()); 711 EXPECT_TRUE(*second_it == at_last_bin.get());
716 EXPECT_FALSE(it); 712 EXPECT_FALSE(it);
717 713
718 ++second_it; 714 ++second_it;
719 EXPECT_TRUE(third_it); 715 EXPECT_TRUE(third_it);
720 EXPECT_FALSE(second_it); 716 EXPECT_FALSE(second_it);
721 EXPECT_FALSE(it); 717 EXPECT_FALSE(it);
722 718
723 set.Clear(); 719 set.Clear();
724 720
725 PrioritizedTileSet::Iterator empty_it(&set, true); 721 PrioritizedTileSet::Iterator empty_it(&set, true);
726 EXPECT_FALSE(empty_it); 722 EXPECT_FALSE(empty_it);
727 } 723 }
728 724
729 } // namespace 725 } // namespace
730 } // namespace cc 726 } // namespace cc
731 727
OLDNEW
« no previous file with comments | « cc/resources/prioritized_tile_set.cc ('k') | cc/resources/tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698