| 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/eviction_tile_priority_queue.h" | 5 #include "cc/resources/eviction_tile_priority_queue.h" |
| 6 #include "cc/resources/raster_tile_priority_queue.h" | 6 #include "cc/resources/raster_tile_priority_queue.h" |
| 7 #include "cc/resources/tile.h" | 7 #include "cc/resources/tile.h" |
| 8 #include "cc/resources/tile_priority.h" | 8 #include "cc/resources/tile_priority.h" |
| 9 #include "cc/test/fake_impl_proxy.h" | 9 #include "cc/test/fake_impl_proxy.h" |
| 10 #include "cc/test/fake_layer_tree_host_impl.h" | 10 #include "cc/test/fake_layer_tree_host_impl.h" |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 size_t tile_count = 0; | 150 size_t tile_count = 0; |
| 151 std::set<Tile*> all_tiles; | 151 std::set<Tile*> all_tiles; |
| 152 while (!queue.IsEmpty()) { | 152 while (!queue.IsEmpty()) { |
| 153 EXPECT_TRUE(queue.Top()); | 153 EXPECT_TRUE(queue.Top()); |
| 154 all_tiles.insert(queue.Top()); | 154 all_tiles.insert(queue.Top()); |
| 155 ++tile_count; | 155 ++tile_count; |
| 156 queue.Pop(); | 156 queue.Pop(); |
| 157 } | 157 } |
| 158 | 158 |
| 159 EXPECT_EQ(tile_count, all_tiles.size()); | 159 EXPECT_EQ(tile_count, all_tiles.size()); |
| 160 EXPECT_EQ(17u, tile_count); | 160 EXPECT_EQ(16u, tile_count); |
| 161 | 161 |
| 162 // Sanity check, all tiles should be visible. | 162 // Sanity check, all tiles should be visible. |
| 163 std::set<Tile*> smoothness_tiles; | 163 std::set<Tile*> smoothness_tiles; |
| 164 queue.Reset(); | 164 queue.Reset(); |
| 165 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 165 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); |
| 166 bool had_low_res = false; |
| 166 while (!queue.IsEmpty()) { | 167 while (!queue.IsEmpty()) { |
| 167 Tile* tile = queue.Top(); | 168 Tile* tile = queue.Top(); |
| 168 EXPECT_TRUE(tile); | 169 EXPECT_TRUE(tile); |
| 169 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 170 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 170 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 171 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
| 171 smoothness_tiles.insert(tile); | 172 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) |
| 173 had_low_res = true; |
| 174 else |
| 175 smoothness_tiles.insert(tile); |
| 172 queue.Pop(); | 176 queue.Pop(); |
| 173 } | 177 } |
| 174 EXPECT_EQ(all_tiles, smoothness_tiles); | 178 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 179 EXPECT_TRUE(had_low_res); |
| 175 | 180 |
| 176 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 181 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
| 177 | 182 |
| 178 // Invalidate the pending tree. | 183 // Invalidate the pending tree. |
| 179 pending_layer_->set_invalidation(invalidation); | 184 pending_layer_->set_invalidation(invalidation); |
| 180 pending_layer_->HighResTiling()->UpdateTilesToCurrentPile( | 185 pending_layer_->HighResTiling()->UpdateTilesToCurrentPile( |
| 181 invalidation, gfx::Size(1000, 1000)); | 186 invalidation, gfx::Size(1000, 1000)); |
| 182 pending_layer_->LowResTiling()->UpdateTilesToCurrentPile( | 187 pending_layer_->LowResTiling()->UpdateTilesToCurrentPile( |
| 183 invalidation, gfx::Size(1000, 1000)); | 188 invalidation, gfx::Size(1000, 1000)); |
| 184 | 189 |
| 185 active_layer_->ResetAllTilesPriorities(); | 190 active_layer_->ResetAllTilesPriorities(); |
| 186 pending_layer_->ResetAllTilesPriorities(); | 191 pending_layer_->ResetAllTilesPriorities(); |
| 187 | 192 |
| 188 // Renew all of the tile priorities. | 193 // Renew all of the tile priorities. |
| 189 gfx::Rect viewport(50, 50, 100, 100); | 194 gfx::Rect viewport(50, 50, 100, 100); |
| 190 pending_layer_->HighResTiling()->ComputeTilePriorityRects( | 195 pending_layer_->HighResTiling()->ComputeTilePriorityRects( |
| 191 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); | 196 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 192 pending_layer_->LowResTiling()->ComputeTilePriorityRects( | 197 pending_layer_->LowResTiling()->ComputeTilePriorityRects( |
| 193 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); | 198 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 194 active_layer_->HighResTiling()->ComputeTilePriorityRects( | 199 active_layer_->HighResTiling()->ComputeTilePriorityRects( |
| 195 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | 200 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 196 active_layer_->LowResTiling()->ComputeTilePriorityRects( | 201 active_layer_->LowResTiling()->ComputeTilePriorityRects( |
| 197 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | 202 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 198 | 203 |
| 199 // Populate all tiles directly from the tilings. | 204 // Populate all tiles directly from the tilings. |
| 200 all_tiles.clear(); | 205 all_tiles.clear(); |
| 206 std::set<Tile*> high_res_tiles; |
| 201 std::vector<Tile*> pending_high_res_tiles = | 207 std::vector<Tile*> pending_high_res_tiles = |
| 202 pending_layer_->HighResTiling()->AllTilesForTesting(); | 208 pending_layer_->HighResTiling()->AllTilesForTesting(); |
| 203 for (size_t i = 0; i < pending_high_res_tiles.size(); ++i) | 209 for (size_t i = 0; i < pending_high_res_tiles.size(); ++i) { |
| 204 all_tiles.insert(pending_high_res_tiles[i]); | 210 all_tiles.insert(pending_high_res_tiles[i]); |
| 211 high_res_tiles.insert(pending_high_res_tiles[i]); |
| 212 } |
| 205 | 213 |
| 206 std::vector<Tile*> pending_low_res_tiles = | 214 std::vector<Tile*> pending_low_res_tiles = |
| 207 pending_layer_->LowResTiling()->AllTilesForTesting(); | 215 pending_layer_->LowResTiling()->AllTilesForTesting(); |
| 208 for (size_t i = 0; i < pending_low_res_tiles.size(); ++i) | 216 for (size_t i = 0; i < pending_low_res_tiles.size(); ++i) |
| 209 all_tiles.insert(pending_low_res_tiles[i]); | 217 all_tiles.insert(pending_low_res_tiles[i]); |
| 210 | 218 |
| 211 std::vector<Tile*> active_high_res_tiles = | 219 std::vector<Tile*> active_high_res_tiles = |
| 212 active_layer_->HighResTiling()->AllTilesForTesting(); | 220 active_layer_->HighResTiling()->AllTilesForTesting(); |
| 213 for (size_t i = 0; i < active_high_res_tiles.size(); ++i) | 221 for (size_t i = 0; i < active_high_res_tiles.size(); ++i) { |
| 214 all_tiles.insert(active_high_res_tiles[i]); | 222 all_tiles.insert(active_high_res_tiles[i]); |
| 223 high_res_tiles.insert(active_high_res_tiles[i]); |
| 224 } |
| 215 | 225 |
| 216 std::vector<Tile*> active_low_res_tiles = | 226 std::vector<Tile*> active_low_res_tiles = |
| 217 active_layer_->LowResTiling()->AllTilesForTesting(); | 227 active_layer_->LowResTiling()->AllTilesForTesting(); |
| 218 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 228 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
| 219 all_tiles.insert(active_low_res_tiles[i]); | 229 all_tiles.insert(active_low_res_tiles[i]); |
| 220 | 230 |
| 221 Tile* last_tile = NULL; | 231 Tile* last_tile = NULL; |
| 222 smoothness_tiles.clear(); | 232 smoothness_tiles.clear(); |
| 223 tile_count = 0; | 233 tile_count = 0; |
| 224 size_t correct_order_tiles = 0u; | 234 size_t correct_order_tiles = 0u; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 // Since we don't guarantee increasing distance due to spiral iterator, we | 278 // Since we don't guarantee increasing distance due to spiral iterator, we |
| 269 // should check that we're _mostly_ right. | 279 // should check that we're _mostly_ right. |
| 270 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); | 280 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); |
| 271 | 281 |
| 272 std::set<Tile*> new_content_tiles; | 282 std::set<Tile*> new_content_tiles; |
| 273 last_tile = NULL; | 283 last_tile = NULL; |
| 274 size_t increasing_distance_tiles = 0u; | 284 size_t increasing_distance_tiles = 0u; |
| 275 // Here we expect to get increasing PENDING_TREE priority_bin. | 285 // Here we expect to get increasing PENDING_TREE priority_bin. |
| 276 queue.Reset(); | 286 queue.Reset(); |
| 277 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | 287 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); |
| 288 tile_count = 0; |
| 278 while (!queue.IsEmpty()) { | 289 while (!queue.IsEmpty()) { |
| 279 Tile* tile = queue.Top(); | 290 Tile* tile = queue.Top(); |
| 280 EXPECT_TRUE(tile); | 291 EXPECT_TRUE(tile); |
| 281 | 292 |
| 282 if (!last_tile) | 293 if (!last_tile) |
| 283 last_tile = tile; | 294 last_tile = tile; |
| 284 | 295 |
| 285 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, | 296 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, |
| 286 tile->priority(PENDING_TREE).priority_bin); | 297 tile->priority(PENDING_TREE).priority_bin); |
| 287 if (last_tile->priority(PENDING_TREE).priority_bin == | 298 if (last_tile->priority(PENDING_TREE).priority_bin == |
| 288 tile->priority(PENDING_TREE).priority_bin) { | 299 tile->priority(PENDING_TREE).priority_bin) { |
| 289 increasing_distance_tiles += | 300 increasing_distance_tiles += |
| 290 last_tile->priority(PENDING_TREE).distance_to_visible <= | 301 last_tile->priority(PENDING_TREE).distance_to_visible <= |
| 291 tile->priority(PENDING_TREE).distance_to_visible; | 302 tile->priority(PENDING_TREE).distance_to_visible; |
| 292 } | 303 } |
| 293 | 304 |
| 294 if (tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW && | 305 if (tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW && |
| 295 last_tile->priority(PENDING_TREE).resolution != | 306 last_tile->priority(PENDING_TREE).resolution != |
| 296 tile->priority(PENDING_TREE).resolution) { | 307 tile->priority(PENDING_TREE).resolution) { |
| 297 // High resolution should come first. | 308 // High resolution should come first. |
| 298 EXPECT_EQ(HIGH_RESOLUTION, last_tile->priority(PENDING_TREE).resolution); | 309 EXPECT_EQ(HIGH_RESOLUTION, last_tile->priority(PENDING_TREE).resolution); |
| 299 } | 310 } |
| 300 | 311 |
| 301 last_tile = tile; | 312 last_tile = tile; |
| 302 new_content_tiles.insert(tile); | 313 new_content_tiles.insert(tile); |
| 314 ++tile_count; |
| 303 queue.Pop(); | 315 queue.Pop(); |
| 304 } | 316 } |
| 305 | 317 |
| 306 EXPECT_EQ(tile_count, new_content_tiles.size()); | 318 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 307 EXPECT_EQ(all_tiles, new_content_tiles); | 319 EXPECT_EQ(high_res_tiles, new_content_tiles); |
| 308 // Since we don't guarantee increasing distance due to spiral iterator, we | 320 // Since we don't guarantee increasing distance due to spiral iterator, we |
| 309 // should check that we're _mostly_ right. | 321 // should check that we're _mostly_ right. |
| 310 EXPECT_GT(increasing_distance_tiles, 3 * tile_count / 4); | 322 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); |
| 311 } | 323 } |
| 312 | 324 |
| 313 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { | 325 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { |
| 314 SetupDefaultTrees(gfx::Size(1000, 1000)); | 326 SetupDefaultTrees(gfx::Size(1000, 1000)); |
| 315 | 327 |
| 316 active_layer_->CreateDefaultTilingsAndTiles(); | 328 active_layer_->CreateDefaultTilingsAndTiles(); |
| 317 pending_layer_->CreateDefaultTilingsAndTiles(); | 329 pending_layer_->CreateDefaultTilingsAndTiles(); |
| 318 | 330 |
| 319 EvictionTilePriorityQueue empty_queue; | 331 EvictionTilePriorityQueue empty_queue; |
| 320 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 332 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 321 EXPECT_TRUE(empty_queue.IsEmpty()); | 333 EXPECT_TRUE(empty_queue.IsEmpty()); |
| 322 std::set<Tile*> all_tiles; | 334 std::set<Tile*> all_tiles; |
| 323 size_t tile_count = 0; | 335 size_t tile_count = 0; |
| 324 | 336 |
| 325 RasterTilePriorityQueue raster_queue; | 337 RasterTilePriorityQueue raster_queue; |
| 326 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 338 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 327 while (!raster_queue.IsEmpty()) { | 339 while (!raster_queue.IsEmpty()) { |
| 328 ++tile_count; | 340 ++tile_count; |
| 329 EXPECT_TRUE(raster_queue.Top()); | 341 EXPECT_TRUE(raster_queue.Top()); |
| 330 all_tiles.insert(raster_queue.Top()); | 342 all_tiles.insert(raster_queue.Top()); |
| 331 raster_queue.Pop(); | 343 raster_queue.Pop(); |
| 332 } | 344 } |
| 333 | 345 |
| 334 EXPECT_EQ(tile_count, all_tiles.size()); | 346 EXPECT_EQ(tile_count, all_tiles.size()); |
| 335 EXPECT_EQ(17u, tile_count); | 347 EXPECT_EQ(16u, tile_count); |
| 336 | 348 |
| 337 tile_manager()->InitializeTilesWithResourcesForTesting( | 349 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 338 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 350 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 339 | 351 |
| 340 EvictionTilePriorityQueue queue; | 352 EvictionTilePriorityQueue queue; |
| 341 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 353 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); |
| 342 EXPECT_FALSE(queue.IsEmpty()); | 354 EXPECT_FALSE(queue.IsEmpty()); |
| 343 | 355 |
| 344 // Sanity check, all tiles should be visible. | 356 // Sanity check, all tiles should be visible. |
| 345 std::set<Tile*> smoothness_tiles; | 357 std::set<Tile*> smoothness_tiles; |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 size_t tile_count = 0; | 512 size_t tile_count = 0; |
| 501 RasterTilePriorityQueue raster_queue; | 513 RasterTilePriorityQueue raster_queue; |
| 502 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 514 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 503 while (!raster_queue.IsEmpty()) { | 515 while (!raster_queue.IsEmpty()) { |
| 504 ++tile_count; | 516 ++tile_count; |
| 505 EXPECT_TRUE(raster_queue.Top()); | 517 EXPECT_TRUE(raster_queue.Top()); |
| 506 all_tiles.insert(raster_queue.Top()); | 518 all_tiles.insert(raster_queue.Top()); |
| 507 raster_queue.Pop(); | 519 raster_queue.Pop(); |
| 508 } | 520 } |
| 509 EXPECT_EQ(tile_count, all_tiles.size()); | 521 EXPECT_EQ(tile_count, all_tiles.size()); |
| 510 EXPECT_EQ(34u, tile_count); | 522 EXPECT_EQ(32u, tile_count); |
| 511 | 523 |
| 512 pending_layer_->ResetAllTilesPriorities(); | 524 pending_layer_->ResetAllTilesPriorities(); |
| 513 | 525 |
| 514 // Renew all of the tile priorities. | 526 // Renew all of the tile priorities. |
| 515 gfx::Rect viewport(layer_bounds); | 527 gfx::Rect viewport(layer_bounds); |
| 516 pending_layer_->HighResTiling()->ComputeTilePriorityRects( | 528 pending_layer_->HighResTiling()->ComputeTilePriorityRects( |
| 517 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); | 529 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 518 pending_layer_->LowResTiling()->ComputeTilePriorityRects( | 530 pending_layer_->LowResTiling()->ComputeTilePriorityRects( |
| 519 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); | 531 PENDING_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 520 pending_child_layer->HighResTiling()->ComputeTilePriorityRects( | 532 pending_child_layer->HighResTiling()->ComputeTilePriorityRects( |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 602 size_t tile_count = 0; | 614 size_t tile_count = 0; |
| 603 std::set<Tile*> all_tiles; | 615 std::set<Tile*> all_tiles; |
| 604 while (!queue.IsEmpty()) { | 616 while (!queue.IsEmpty()) { |
| 605 EXPECT_TRUE(queue.Top()); | 617 EXPECT_TRUE(queue.Top()); |
| 606 all_tiles.insert(queue.Top()); | 618 all_tiles.insert(queue.Top()); |
| 607 ++tile_count; | 619 ++tile_count; |
| 608 queue.Pop(); | 620 queue.Pop(); |
| 609 } | 621 } |
| 610 | 622 |
| 611 EXPECT_EQ(tile_count, all_tiles.size()); | 623 EXPECT_EQ(tile_count, all_tiles.size()); |
| 612 EXPECT_EQ(17u, tile_count); | 624 EXPECT_EQ(16u, tile_count); |
| 613 | 625 |
| 614 queue.Reset(); | 626 queue.Reset(); |
| 615 for (int i = 1; i < 10; ++i) { | 627 for (int i = 1; i < 10; ++i) { |
| 616 scoped_ptr<FakePictureLayerImpl> pending_layer = | 628 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 617 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 629 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 618 pending_layer->SetDrawsContent(true); | 630 pending_layer->SetDrawsContent(true); |
| 619 pending_layer->DoPostCommitInitializationIfNeeded(); | 631 pending_layer->DoPostCommitInitializationIfNeeded(); |
| 620 pending_layer->set_has_valid_tile_priorities(true); | 632 pending_layer->set_has_valid_tile_priorities(true); |
| 621 pending_layer_->AddChild(pending_layer.Pass()); | 633 pending_layer_->AddChild(pending_layer.Pass()); |
| 622 } | 634 } |
| 623 | 635 |
| 624 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 636 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 625 EXPECT_FALSE(queue.IsEmpty()); | 637 EXPECT_FALSE(queue.IsEmpty()); |
| 626 | 638 |
| 627 tile_count = 0; | 639 tile_count = 0; |
| 628 all_tiles.clear(); | 640 all_tiles.clear(); |
| 629 while (!queue.IsEmpty()) { | 641 while (!queue.IsEmpty()) { |
| 630 EXPECT_TRUE(queue.Top()); | 642 EXPECT_TRUE(queue.Top()); |
| 631 all_tiles.insert(queue.Top()); | 643 all_tiles.insert(queue.Top()); |
| 632 ++tile_count; | 644 ++tile_count; |
| 633 queue.Pop(); | 645 queue.Pop(); |
| 634 } | 646 } |
| 635 EXPECT_EQ(tile_count, all_tiles.size()); | 647 EXPECT_EQ(tile_count, all_tiles.size()); |
| 636 EXPECT_EQ(17u, tile_count); | 648 EXPECT_EQ(16u, tile_count); |
| 637 } | 649 } |
| 638 | 650 |
| 639 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { | 651 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { |
| 640 SetupDefaultTrees(gfx::Size(1000, 1000)); | 652 SetupDefaultTrees(gfx::Size(1000, 1000)); |
| 641 | 653 |
| 642 active_layer_->CreateDefaultTilingsAndTiles(); | 654 active_layer_->CreateDefaultTilingsAndTiles(); |
| 643 pending_layer_->CreateDefaultTilingsAndTiles(); | 655 pending_layer_->CreateDefaultTilingsAndTiles(); |
| 644 | 656 |
| 645 RasterTilePriorityQueue raster_queue; | 657 RasterTilePriorityQueue raster_queue; |
| 646 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 658 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 647 EXPECT_FALSE(raster_queue.IsEmpty()); | 659 EXPECT_FALSE(raster_queue.IsEmpty()); |
| 648 | 660 |
| 649 size_t tile_count = 0; | 661 size_t tile_count = 0; |
| 650 std::set<Tile*> all_tiles; | 662 std::set<Tile*> all_tiles; |
| 651 while (!raster_queue.IsEmpty()) { | 663 while (!raster_queue.IsEmpty()) { |
| 652 EXPECT_TRUE(raster_queue.Top()); | 664 EXPECT_TRUE(raster_queue.Top()); |
| 653 all_tiles.insert(raster_queue.Top()); | 665 all_tiles.insert(raster_queue.Top()); |
| 654 ++tile_count; | 666 ++tile_count; |
| 655 raster_queue.Pop(); | 667 raster_queue.Pop(); |
| 656 } | 668 } |
| 657 EXPECT_EQ(tile_count, all_tiles.size()); | 669 EXPECT_EQ(tile_count, all_tiles.size()); |
| 658 EXPECT_EQ(17u, tile_count); | 670 EXPECT_EQ(16u, tile_count); |
| 659 | 671 |
| 660 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); | 672 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); |
| 661 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 673 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 662 | 674 |
| 663 EvictionTilePriorityQueue queue; | 675 EvictionTilePriorityQueue queue; |
| 664 for (int i = 1; i < 10; ++i) { | 676 for (int i = 1; i < 10; ++i) { |
| 665 scoped_ptr<FakePictureLayerImpl> pending_layer = | 677 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 666 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 678 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 667 pending_layer->SetDrawsContent(true); | 679 pending_layer->SetDrawsContent(true); |
| 668 pending_layer->DoPostCommitInitializationIfNeeded(); | 680 pending_layer->DoPostCommitInitializationIfNeeded(); |
| 669 pending_layer->set_has_valid_tile_priorities(true); | 681 pending_layer->set_has_valid_tile_priorities(true); |
| 670 pending_layer_->AddChild(pending_layer.Pass()); | 682 pending_layer_->AddChild(pending_layer.Pass()); |
| 671 } | 683 } |
| 672 | 684 |
| 673 host_impl_.BuildEvictionQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 685 host_impl_.BuildEvictionQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 674 EXPECT_FALSE(queue.IsEmpty()); | 686 EXPECT_FALSE(queue.IsEmpty()); |
| 675 | 687 |
| 676 tile_count = 0; | 688 tile_count = 0; |
| 677 all_tiles.clear(); | 689 all_tiles.clear(); |
| 678 while (!queue.IsEmpty()) { | 690 while (!queue.IsEmpty()) { |
| 679 EXPECT_TRUE(queue.Top()); | 691 EXPECT_TRUE(queue.Top()); |
| 680 all_tiles.insert(queue.Top()); | 692 all_tiles.insert(queue.Top()); |
| 681 ++tile_count; | 693 ++tile_count; |
| 682 queue.Pop(); | 694 queue.Pop(); |
| 683 } | 695 } |
| 684 EXPECT_EQ(tile_count, all_tiles.size()); | 696 EXPECT_EQ(tile_count, all_tiles.size()); |
| 685 EXPECT_EQ(17u, tile_count); | 697 EXPECT_EQ(16u, tile_count); |
| 686 } | 698 } |
| 687 | 699 |
| 688 } // namespace | 700 } // namespace |
| 689 } // namespace cc | 701 } // namespace cc |
| OLD | NEW |