Index: cc/resources/tile_manager_unittest.cc |
diff --git a/cc/resources/tile_manager_unittest.cc b/cc/resources/tile_manager_unittest.cc |
index 2ac504a2d36d7e4141a8526e6b4e07b2a75e2201..310cdc67d6cd9857d68958a1280a689a9201006f 100644 |
--- a/cc/resources/tile_manager_unittest.cc |
+++ b/cc/resources/tile_manager_unittest.cc |
@@ -183,8 +183,9 @@ |
while (!queue->IsEmpty()) { |
Tile* tile = queue->Top(); |
EXPECT_TRUE(tile); |
- EXPECT_EQ(TilePriority::NOW, tile->priority().priority_bin); |
- if (tile->priority().resolution == LOW_RESOLUTION) |
+ EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
+ EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
+ if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) |
had_low_res = true; |
else |
smoothness_tiles.insert(tile); |
@@ -283,23 +284,28 @@ |
if (!last_tile) |
last_tile = tile; |
- EXPECT_LE(last_tile->priority().priority_bin, |
- tile->priority().priority_bin); |
+ EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, |
+ tile->priority(ACTIVE_TREE).priority_bin); |
bool skip_updating_last_tile = false; |
- if (last_tile->priority().priority_bin == tile->priority().priority_bin) { |
- correct_order_tiles += last_tile->priority().distance_to_visible <= |
- tile->priority().distance_to_visible; |
- } else if (tile->priority().priority_bin == TilePriority::NOW) { |
+ if (last_tile->priority(ACTIVE_TREE).priority_bin == |
+ tile->priority(ACTIVE_TREE).priority_bin) { |
+ correct_order_tiles += |
+ last_tile->priority(ACTIVE_TREE).distance_to_visible <= |
+ tile->priority(ACTIVE_TREE).distance_to_visible; |
+ } else if (tile->priority(ACTIVE_TREE).priority_bin == |
+ TilePriority::EVENTUALLY && |
+ tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW) { |
// Since we'd return pending tree now tiles before the eventually tiles on |
// the active tree, update the value. |
++correct_order_tiles; |
skip_updating_last_tile = true; |
} |
- if (tile->priority().priority_bin == TilePriority::NOW && |
- last_tile->priority().resolution != tile->priority().resolution) { |
+ if (tile->priority(ACTIVE_TREE).priority_bin == TilePriority::NOW && |
+ last_tile->priority(ACTIVE_TREE).resolution != |
+ tile->priority(ACTIVE_TREE).resolution) { |
// Low resolution should come first. |
- EXPECT_EQ(LOW_RESOLUTION, last_tile->priority().resolution); |
+ EXPECT_EQ(LOW_RESOLUTION, last_tile->priority(ACTIVE_TREE).resolution); |
} |
if (!skip_updating_last_tile) |
@@ -362,17 +368,20 @@ |
if (!last_tile) |
last_tile = tile; |
- EXPECT_LE(last_tile->priority().priority_bin, |
- tile->priority().priority_bin); |
- if (last_tile->priority().priority_bin == tile->priority().priority_bin) { |
- increasing_distance_tiles += last_tile->priority().distance_to_visible <= |
- tile->priority().distance_to_visible; |
- } |
- |
- if (tile->priority().priority_bin == TilePriority::NOW && |
- last_tile->priority().resolution != tile->priority().resolution) { |
+ EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, |
+ tile->priority(PENDING_TREE).priority_bin); |
+ if (last_tile->priority(PENDING_TREE).priority_bin == |
+ tile->priority(PENDING_TREE).priority_bin) { |
+ increasing_distance_tiles += |
+ last_tile->priority(PENDING_TREE).distance_to_visible <= |
+ tile->priority(PENDING_TREE).distance_to_visible; |
+ } |
+ |
+ if (tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW && |
+ last_tile->priority(PENDING_TREE).resolution != |
+ tile->priority(PENDING_TREE).resolution) { |
// High resolution should come first. |
- EXPECT_EQ(HIGH_RESOLUTION, last_tile->priority().resolution); |
+ EXPECT_EQ(HIGH_RESOLUTION, last_tile->priority(PENDING_TREE).resolution); |
} |
last_tile = tile; |
@@ -426,8 +435,6 @@ |
pending_layer_->tilings()->AddTiling(1.5f, pending_layer_->raster_source()); |
active_layer_->tilings()->AddTiling(1.5f, active_layer_->raster_source()); |
- pending_layer_->tilings()->AddTiling(1.7f, pending_layer_->raster_source()); |
- active_layer_->tilings()->AddTiling(1.7f, active_layer_->raster_source()); |
pending_layer_->tilings()->UpdateTilePriorities(gfx::Rect(viewport), 1.f, 5.0, |
Occlusion(), true); |
@@ -437,6 +444,7 @@ |
std::set<Tile*> all_expected_tiles; |
for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
+ tiling->CreateAllTilesForTesting(); |
if (tiling->contents_scale() == 1.f) { |
tiling->set_resolution(HIGH_RESOLUTION); |
const auto& all_tiles = tiling->AllTilesForTesting(); |
@@ -448,21 +456,13 @@ |
for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
PictureLayerTiling* tiling = active_layer_->tilings()->tiling_at(i); |
+ tiling->CreateAllTilesForTesting(); |
if (tiling->contents_scale() == 1.5f) { |
tiling->set_resolution(HIGH_RESOLUTION); |
const auto& all_tiles = tiling->AllTilesForTesting(); |
all_expected_tiles.insert(all_tiles.begin(), all_tiles.end()); |
} else { |
tiling->set_resolution(NON_IDEAL_RESOLUTION); |
- // Non ideal tilings with a high res pending twin have to be processed |
- // because of possible activation tiles. |
- if (tiling->contents_scale() == 1.f) { |
- tiling->UpdateAllTilePrioritiesForTesting(); |
- const auto& all_tiles = tiling->AllTilesForTesting(); |
- for (auto* tile : all_tiles) |
- EXPECT_TRUE(tile->required_for_activation()); |
- all_expected_tiles.insert(all_tiles.begin(), all_tiles.end()); |
- } |
} |
} |
@@ -492,19 +492,19 @@ |
// Use a tile's content rect as an invalidation. We should inset it a bit to |
// ensure that border math doesn't invalidate neighbouring tiles. |
gfx::Rect invalidation = |
- active_layer_->HighResTiling()->TileAt(1, 0)->content_rect(); |
+ pending_layer_->HighResTiling()->TileAt(1, 0)->content_rect(); |
invalidation.Inset(2, 2); |
pending_layer_->set_invalidation(invalidation); |
pending_layer_->HighResTiling()->Invalidate(invalidation); |
- pending_layer_->HighResTiling()->CreateMissingTilesInLiveTilesRect(); |
pending_layer_->LowResTiling()->Invalidate(invalidation); |
- pending_layer_->LowResTiling()->CreateMissingTilesInLiveTilesRect(); |
- |
- // Sanity checks: Tile at 0, 0 not exist on the pending tree (it's not |
- // invalidated). Tile 1, 0 should exist on both. |
- EXPECT_FALSE(pending_layer_->HighResTiling()->TileAt(0, 0)); |
+ |
+ // Sanity checks: Tile at 0, 0 should be the same on both trees, tile at 1, 0 |
+ // should be different. |
+ EXPECT_TRUE(pending_layer_->HighResTiling()->TileAt(0, 0)); |
EXPECT_TRUE(active_layer_->HighResTiling()->TileAt(0, 0)); |
+ EXPECT_EQ(pending_layer_->HighResTiling()->TileAt(0, 0), |
+ active_layer_->HighResTiling()->TileAt(0, 0)); |
EXPECT_TRUE(pending_layer_->HighResTiling()->TileAt(1, 0)); |
EXPECT_TRUE(active_layer_->HighResTiling()->TileAt(1, 0)); |
EXPECT_NE(pending_layer_->HighResTiling()->TileAt(1, 0), |
@@ -515,20 +515,13 @@ |
std::set<Tile*> expected_required_for_activation_tiles; |
for (int i = 0; i <= 1; ++i) { |
for (int j = 0; j <= 1; ++j) { |
- bool have_pending_tile = false; |
- if (pending_layer_->HighResTiling()->TileAt(i, j)) { |
- expected_now_tiles.insert( |
- pending_layer_->HighResTiling()->TileAt(i, j)); |
- expected_required_for_activation_tiles.insert( |
- pending_layer_->HighResTiling()->TileAt(i, j)); |
- have_pending_tile = true; |
- } |
- Tile* active_tile = active_layer_->HighResTiling()->TileAt(i, j); |
- EXPECT_TRUE(active_tile); |
- expected_now_tiles.insert(active_tile); |
- expected_required_for_draw_tiles.insert(active_tile); |
- if (!have_pending_tile) |
- expected_required_for_activation_tiles.insert(active_tile); |
+ expected_now_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); |
+ expected_now_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); |
+ |
+ expected_required_for_activation_tiles.insert( |
+ pending_layer_->HighResTiling()->TileAt(i, j)); |
+ expected_required_for_draw_tiles.insert( |
+ active_layer_->HighResTiling()->TileAt(i, j)); |
} |
} |
// Expect 3 shared tiles and 1 unshared tile in total. |
@@ -542,10 +535,7 @@ |
std::set<Tile*> expected_all_tiles; |
for (int i = 0; i <= 3; ++i) { |
for (int j = 0; j <= 3; ++j) { |
- if (pending_layer_->HighResTiling()->TileAt(i, j)) |
- expected_all_tiles.insert( |
- pending_layer_->HighResTiling()->TileAt(i, j)); |
- EXPECT_TRUE(active_layer_->HighResTiling()->TileAt(i, j)); |
+ expected_all_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); |
expected_all_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); |
} |
} |
@@ -561,7 +551,7 @@ |
while (!queue->IsEmpty()) { |
Tile* tile = queue->Top(); |
queue->Pop(); |
- if (tile->priority().priority_bin == TilePriority::NOW) |
+ if (tile->combined_priority().priority_bin == TilePriority::NOW) |
actual_now_tiles.insert(tile); |
actual_all_tiles.insert(tile); |
} |
@@ -630,7 +620,7 @@ |
std::vector<Tile*> all_tiles; |
while (!queue->IsEmpty()) { |
Tile* tile = queue->Top(); |
- if (tile->priority().priority_bin >= TilePriority::EVENTUALLY) |
+ if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) |
break; |
all_tiles.push_back(tile); |
@@ -679,7 +669,8 @@ |
while (!queue->IsEmpty()) { |
Tile* tile = queue->Top(); |
EXPECT_TRUE(tile); |
- EXPECT_EQ(TilePriority::NOW, tile->priority().priority_bin); |
+ EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
+ EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
EXPECT_TRUE(tile->HasResource()); |
smoothness_tiles.insert(tile); |
queue->Pop(); |
@@ -694,9 +685,7 @@ |
// Invalidate the pending tree. |
pending_layer_->set_invalidation(invalidation); |
pending_layer_->HighResTiling()->Invalidate(invalidation); |
- pending_layer_->HighResTiling()->CreateMissingTilesInLiveTilesRect(); |
pending_layer_->LowResTiling()->Invalidate(invalidation); |
- pending_layer_->LowResTiling()->CreateMissingTilesInLiveTilesRect(); |
active_layer_->ResetAllTilesPriorities(); |
pending_layer_->ResetAllTilesPriorities(); |
@@ -752,8 +741,8 @@ |
if (!last_tile) |
last_tile = tile; |
- const TilePriority& last_priority = last_tile->priority(); |
- const TilePriority& priority = tile->priority(); |
+ const TilePriority& last_priority = last_tile->combined_priority(); |
+ const TilePriority& priority = tile->combined_priority(); |
EXPECT_GE(last_priority.priority_bin, priority.priority_bin); |
if (last_priority.priority_bin == priority.priority_bin) { |
@@ -793,8 +782,8 @@ |
if (!last_tile) |
last_tile = tile; |
- const TilePriority& last_priority = last_tile->priority(); |
- const TilePriority& priority = tile->priority(); |
+ const TilePriority& last_priority = last_tile->combined_priority(); |
+ const TilePriority& priority = tile->combined_priority(); |
EXPECT_GE(last_priority.priority_bin, priority.priority_bin); |
if (last_priority.priority_bin == priority.priority_bin) { |
@@ -933,7 +922,7 @@ |
if (!last_tile) |
last_tile = tile; |
- bool tile_is_occluded = tile->is_occluded(); |
+ bool tile_is_occluded = tile->is_occluded_combined(); |
// The only way we will encounter an occluded tile after an unoccluded |
// tile is if the priorty bin decreased, the tile is required for |
@@ -941,12 +930,12 @@ |
if (tile_is_occluded) { |
occluded_count++; |
- bool last_tile_is_occluded = last_tile->is_occluded(); |
+ bool last_tile_is_occluded = last_tile->is_occluded_combined(); |
if (!last_tile_is_occluded) { |
TilePriority::PriorityBin tile_priority_bin = |
- tile->priority().priority_bin; |
+ tile->priority_for_tree_priority(tree_priority).priority_bin; |
TilePriority::PriorityBin last_tile_priority_bin = |
- last_tile->priority().priority_bin; |
+ last_tile->priority_for_tree_priority(tree_priority).priority_bin; |
EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || |
tile->required_for_activation() || |
@@ -1056,7 +1045,7 @@ |
host_impl_.BuildEvictionQueue(tree_priority)); |
while (!queue->IsEmpty()) { |
Tile* tile = queue->Top(); |
- const TilePriority& pending_priority = tile->priority(); |
+ const TilePriority& pending_priority = tile->priority(PENDING_TREE); |
EXPECT_NE(std::numeric_limits<float>::infinity(), |
pending_priority.distance_to_visible); |
if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) |
@@ -1219,7 +1208,7 @@ |
std::set<Tile*> unique_tiles; |
unique_tiles.insert(queue->Top()); |
Tile* last_tile = queue->Top(); |
- have_tiles[last_tile->priority().priority_bin] = true; |
+ have_tiles[last_tile->priority(ACTIVE_TREE).priority_bin] = true; |
// On the second iteration, mark everything as ready to draw (solid color). |
if (i == 1) { |
@@ -1234,8 +1223,8 @@ |
queue->Pop(); |
unique_tiles.insert(new_tile); |
- TilePriority last_priority = last_tile->priority(); |
- TilePriority new_priority = new_tile->priority(); |
+ TilePriority last_priority = last_tile->priority(ACTIVE_TREE); |
+ TilePriority new_priority = new_tile->priority(ACTIVE_TREE); |
EXPECT_LE(last_priority.priority_bin, new_priority.priority_bin); |
if (last_priority.priority_bin == new_priority.priority_bin) { |
if (last_priority.priority_bin == TilePriority::EVENTUALLY) { |
@@ -1322,8 +1311,8 @@ |
Tile* new_tile = queue->Top(); |
- TilePriority last_priority = last_tile->priority(); |
- TilePriority new_priority = new_tile->priority(); |
+ TilePriority last_priority = last_tile->priority(ACTIVE_TREE); |
+ TilePriority new_priority = new_tile->priority(ACTIVE_TREE); |
have_tiles[new_priority.priority_bin] = true; |