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

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

Issue 324483003: cc: Removed LCD text settings from the impl side. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/resources/tile_manager.cc ('k') | cc/test/fake_picture_layer_impl.h » ('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/tile.h" 5 #include "cc/resources/tile.h"
6 #include "cc/resources/tile_priority.h" 6 #include "cc/resources/tile_priority.h"
7 #include "cc/test/fake_impl_proxy.h" 7 #include "cc/test/fake_impl_proxy.h"
8 #include "cc/test/fake_layer_tree_host_impl.h" 8 #include "cc/test/fake_layer_tree_host_impl.h"
9 #include "cc/test/fake_output_surface.h" 9 #include "cc/test/fake_output_surface.h"
10 #include "cc/test/fake_output_surface_client.h" 10 #include "cc/test/fake_output_surface_client.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 const gfx::Size& tile_size) { 95 const gfx::Size& tile_size) {
96 TileVector tiles; 96 TileVector tiles;
97 for (int i = 0; i < count; ++i) { 97 for (int i = 0; i < count; ++i) {
98 scoped_refptr<Tile> tile = tile_manager_->CreateTile(picture_pile_.get(), 98 scoped_refptr<Tile> tile = tile_manager_->CreateTile(picture_pile_.get(),
99 tile_size, 99 tile_size,
100 gfx::Rect(), 100 gfx::Rect(),
101 gfx::Rect(), 101 gfx::Rect(),
102 1.0, 102 1.0,
103 0, 103 0,
104 0, 104 0,
105 Tile::USE_LCD_TEXT); 105 0);
106 tile->SetPriority(ACTIVE_TREE, active_priority); 106 tile->SetPriority(ACTIVE_TREE, active_priority);
107 tile->SetPriority(PENDING_TREE, pending_priority); 107 tile->SetPriority(PENDING_TREE, pending_priority);
108 tiles.push_back(tile); 108 tiles.push_back(tile);
109 } 109 }
110 return tiles; 110 return tiles;
111 } 111 }
112 112
113 TileVector CreateTiles(int count, 113 TileVector CreateTiles(int count,
114 TilePriority active_priority, 114 TilePriority active_priority,
115 TilePriority pending_priority) { 115 TilePriority pending_priority) {
116 return CreateTilesWithSize( 116 return CreateTilesWithSize(
117 count, active_priority, pending_priority, settings_.default_tile_size); 117 count, active_priority, pending_priority, settings_.default_tile_size);
118 } 118 }
119 119
120 FakeTileManager* tile_manager() { return tile_manager_.get(); } 120 FakeTileManager* tile_manager() { return tile_manager_.get(); }
121 121
122 int AssignedMemoryCount(const TileVector& tiles) { 122 int AssignedMemoryCount(const TileVector& tiles) {
123 int has_memory_count = 0; 123 int has_memory_count = 0;
124 for (TileVector::const_iterator it = tiles.begin(); it != tiles.end(); 124 for (TileVector::const_iterator it = tiles.begin(); it != tiles.end();
125 ++it) { 125 ++it) {
126 if (tile_manager_->HasBeenAssignedMemory(*it)) 126 if (tile_manager_->HasBeenAssignedMemory(*it))
127 ++has_memory_count; 127 ++has_memory_count;
128 } 128 }
129 return has_memory_count; 129 return has_memory_count;
130 } 130 }
131 131
132 int TilesWithLCDCount(const TileVector& tiles) {
133 int has_lcd_count = 0;
134 for (TileVector::const_iterator it = tiles.begin(); it != tiles.end();
135 ++it) {
136 if ((*it)->GetRasterModeForTesting() == HIGH_QUALITY_RASTER_MODE)
137 ++has_lcd_count;
138 }
139 return has_lcd_count;
140 }
141
142 bool ready_to_activate() const { return ready_to_activate_; } 132 bool ready_to_activate() const { return ready_to_activate_; }
143 133
144 // The parametrization specifies whether the max tile limit should 134 // The parametrization specifies whether the max tile limit should
145 // be applied to memory or resources. 135 // be applied to memory or resources.
146 bool UsingResourceLimit() { return !GetParam(); } 136 bool UsingResourceLimit() { return !GetParam(); }
147 bool UsingMemoryLimit() { return GetParam(); } 137 bool UsingMemoryLimit() { return GetParam(); }
148 138
149 protected: 139 protected:
150 GlobalStateThatImpactsTilePriority global_state_; 140 GlobalStateThatImpactsTilePriority global_state_;
151 141
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 411
422 // The pending tree is now more important. Active tiles will take higher 412 // The pending tree is now more important. Active tiles will take higher
423 // priority if they are ready-to-draw in practice. Importantly though, 413 // priority if they are ready-to-draw in practice. Importantly though,
424 // pending tiles also utilize the hard-limit. 414 // pending tiles also utilize the hard-limit.
425 SetTreePriority(NEW_CONTENT_TAKES_PRIORITY); 415 SetTreePriority(NEW_CONTENT_TAKES_PRIORITY);
426 tile_manager()->AssignMemoryToTiles(global_state_); 416 tile_manager()->AssignMemoryToTiles(global_state_);
427 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles)); 417 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles));
428 EXPECT_EQ(10, AssignedMemoryCount(pending_tree_tiles)); 418 EXPECT_EQ(10, AssignedMemoryCount(pending_tree_tiles));
429 } 419 }
430 420
431 TEST_P(TileManagerTest, RasterAsLCD) {
432 Initialize(20, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
433 TileVector active_tree_tiles =
434 CreateTiles(5, TilePriorityForNowBin(), TilePriority());
435 TileVector pending_tree_tiles =
436 CreateTiles(5, TilePriority(), TilePriorityForNowBin());
437
438 tile_manager()->AssignMemoryToTiles(global_state_);
439
440 EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles));
441 EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles));
442 }
443
444 TEST_P(TileManagerTest, RasterAsNoLCD) {
445 Initialize(20, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
446 TileVector active_tree_tiles =
447 CreateTiles(5, TilePriorityForNowBin(), TilePriority());
448 TileVector pending_tree_tiles =
449 CreateTiles(5, TilePriority(), TilePriorityForNowBin());
450
451 for (TileVector::iterator it = active_tree_tiles.begin();
452 it != active_tree_tiles.end();
453 ++it) {
454 (*it)->set_can_use_lcd_text(false);
455 }
456 for (TileVector::iterator it = pending_tree_tiles.begin();
457 it != pending_tree_tiles.end();
458 ++it) {
459 (*it)->set_can_use_lcd_text(false);
460 }
461
462 tile_manager()->AssignMemoryToTiles(global_state_);
463
464 EXPECT_EQ(0, TilesWithLCDCount(active_tree_tiles));
465 EXPECT_EQ(0, TilesWithLCDCount(pending_tree_tiles));
466 }
467
468 TEST_P(TileManagerTest, ReRasterAsNoLCD) {
469 Initialize(20, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
470 TileVector active_tree_tiles =
471 CreateTiles(5, TilePriorityForNowBin(), TilePriority());
472 TileVector pending_tree_tiles =
473 CreateTiles(5, TilePriority(), TilePriorityForNowBin());
474
475 tile_manager()->AssignMemoryToTiles(global_state_);
476
477 EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles));
478 EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles));
479
480 for (TileVector::iterator it = active_tree_tiles.begin();
481 it != active_tree_tiles.end();
482 ++it) {
483 (*it)->set_can_use_lcd_text(false);
484 }
485 for (TileVector::iterator it = pending_tree_tiles.begin();
486 it != pending_tree_tiles.end();
487 ++it) {
488 (*it)->set_can_use_lcd_text(false);
489 }
490
491 tile_manager()->AssignMemoryToTiles(global_state_);
492
493 EXPECT_EQ(0, TilesWithLCDCount(active_tree_tiles));
494 EXPECT_EQ(0, TilesWithLCDCount(pending_tree_tiles));
495 }
496
497 TEST_P(TileManagerTest, NoTextDontReRasterAsNoLCD) {
498 Initialize(20, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
499 TileVector active_tree_tiles =
500 CreateTiles(5, TilePriorityForNowBin(), TilePriority());
501 TileVector pending_tree_tiles =
502 CreateTiles(5, TilePriority(), TilePriorityForNowBin());
503
504 tile_manager()->AssignMemoryToTiles(global_state_);
505
506 EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles));
507 EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles));
508
509 for (TileVector::iterator it = active_tree_tiles.begin();
510 it != active_tree_tiles.end();
511 ++it) {
512 ManagedTileState::TileVersion& tile_version =
513 (*it)->GetTileVersionForTesting(HIGH_QUALITY_RASTER_MODE);
514 tile_version.SetSolidColorForTesting(SkColorSetARGB(0, 0, 0, 0));
515 (*it)->set_can_use_lcd_text(false);
516 EXPECT_TRUE((*it)->IsReadyToDraw());
517 }
518 for (TileVector::iterator it = pending_tree_tiles.begin();
519 it != pending_tree_tiles.end();
520 ++it) {
521 ManagedTileState::TileVersion& tile_version =
522 (*it)->GetTileVersionForTesting(HIGH_QUALITY_RASTER_MODE);
523 tile_version.SetSolidColorForTesting(SkColorSetARGB(0, 0, 0, 0));
524 (*it)->set_can_use_lcd_text(false);
525 EXPECT_TRUE((*it)->IsReadyToDraw());
526 }
527
528 tile_manager()->AssignMemoryToTiles(global_state_);
529
530 EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles));
531 EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles));
532 }
533
534 TEST_P(TileManagerTest, TextReRasterAsNoLCD) {
535 Initialize(20, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
536 TileVector active_tree_tiles =
537 CreateTiles(5, TilePriorityForNowBin(), TilePriority());
538 TileVector pending_tree_tiles =
539 CreateTiles(5, TilePriority(), TilePriorityForNowBin());
540
541 tile_manager()->AssignMemoryToTiles(global_state_);
542
543 EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles));
544 EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles));
545
546 for (TileVector::iterator it = active_tree_tiles.begin();
547 it != active_tree_tiles.end();
548 ++it) {
549 ManagedTileState::TileVersion& tile_version =
550 (*it)->GetTileVersionForTesting(HIGH_QUALITY_RASTER_MODE);
551 tile_version.SetSolidColorForTesting(SkColorSetARGB(0, 0, 0, 0));
552 tile_version.SetHasTextForTesting(true);
553 (*it)->set_can_use_lcd_text(false);
554
555 EXPECT_TRUE((*it)->IsReadyToDraw());
556 }
557 for (TileVector::iterator it = pending_tree_tiles.begin();
558 it != pending_tree_tiles.end();
559 ++it) {
560 ManagedTileState::TileVersion& tile_version =
561 (*it)->GetTileVersionForTesting(HIGH_QUALITY_RASTER_MODE);
562 tile_version.SetSolidColorForTesting(SkColorSetARGB(0, 0, 0, 0));
563 tile_version.SetHasTextForTesting(true);
564 (*it)->set_can_use_lcd_text(false);
565
566 EXPECT_TRUE((*it)->IsReadyToDraw());
567 }
568
569 tile_manager()->AssignMemoryToTiles(global_state_);
570
571 EXPECT_EQ(0, TilesWithLCDCount(active_tree_tiles));
572 EXPECT_EQ(0, TilesWithLCDCount(pending_tree_tiles));
573 }
574
575 TEST_P(TileManagerTest, RespectMemoryLimit) { 421 TEST_P(TileManagerTest, RespectMemoryLimit) {
576 if (UsingResourceLimit()) 422 if (UsingResourceLimit())
577 return; 423 return;
578 424
579 Initialize(5, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 425 Initialize(5, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
580 426
581 // We use double the tiles since the hard-limit is double. 427 // We use double the tiles since the hard-limit is double.
582 TileVector large_tiles = 428 TileVector large_tiles =
583 CreateTiles(10, TilePriorityForNowBin(), TilePriority()); 429 CreateTiles(10, TilePriorityForNowBin(), TilePriority());
584 430
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 947
1102 last_tile = tile; 948 last_tile = tile;
1103 new_content_tiles.insert(tile); 949 new_content_tiles.insert(tile);
1104 } 950 }
1105 951
1106 EXPECT_EQ(tile_count, new_content_tiles.size()); 952 EXPECT_EQ(tile_count, new_content_tiles.size());
1107 EXPECT_EQ(all_tiles, new_content_tiles); 953 EXPECT_EQ(all_tiles, new_content_tiles);
1108 } 954 }
1109 } // namespace 955 } // namespace
1110 } // namespace cc 956 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_manager.cc ('k') | cc/test/fake_picture_layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698