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 |