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/resources/tiling_set_raster_queue_all.h" | 9 #include "cc/resources/tiling_set_raster_queue_all.h" |
10 #include "cc/test/begin_frame_args_test.h" | 10 #include "cc/test/begin_frame_args_test.h" |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 pending_layer->SetBounds(pending_layer->raster_source()->GetSize()); | 123 pending_layer->SetBounds(pending_layer->raster_source()->GetSize()); |
124 pending_tree->SetRootLayer(pending_layer.Pass()); | 124 pending_tree->SetRootLayer(pending_layer.Pass()); |
125 | 125 |
126 pending_layer_ = static_cast<FakePictureLayerImpl*>( | 126 pending_layer_ = static_cast<FakePictureLayerImpl*>( |
127 host_impl_.pending_tree()->LayerById(id_)); | 127 host_impl_.pending_tree()->LayerById(id_)); |
128 | 128 |
129 // Add tilings/tiles for the layer. | 129 // Add tilings/tiles for the layer. |
130 host_impl_.pending_tree()->UpdateDrawProperties(); | 130 host_impl_.pending_tree()->UpdateDrawProperties(); |
131 } | 131 } |
132 | 132 |
| 133 scoped_ptr<RasterTilePriorityQueue> BuildRasterQueue( |
| 134 TreePriority tree_priority, |
| 135 RasterTilePriorityQueue::Type type) { |
| 136 global_state_.tree_priority = tree_priority; |
| 137 tile_manager()->SetGlobalStateForTesting(global_state_); |
| 138 return tile_manager()->BuildRasterQueue(type); |
| 139 } |
| 140 |
| 141 scoped_ptr<EvictionTilePriorityQueue> BuildEvictionQueue( |
| 142 TreePriority tree_priority) { |
| 143 global_state_.tree_priority = tree_priority; |
| 144 tile_manager()->SetGlobalStateForTesting(global_state_); |
| 145 return tile_manager()->BuildEvictionQueue(); |
| 146 } |
| 147 |
133 TileManager* tile_manager() { return host_impl_.tile_manager(); } | 148 TileManager* tile_manager() { return host_impl_.tile_manager(); } |
134 | 149 |
135 protected: | 150 protected: |
136 GlobalStateThatImpactsTilePriority global_state_; | 151 GlobalStateThatImpactsTilePriority global_state_; |
137 | 152 |
138 TestSharedBitmapManager shared_bitmap_manager_; | 153 TestSharedBitmapManager shared_bitmap_manager_; |
139 TileMemoryLimitPolicy memory_limit_policy_; | 154 TileMemoryLimitPolicy memory_limit_policy_; |
140 int max_tiles_; | 155 int max_tiles_; |
141 bool ready_to_activate_; | 156 bool ready_to_activate_; |
142 int id_; | 157 int id_; |
143 FakeImplProxy proxy_; | 158 FakeImplProxy proxy_; |
144 FakeLayerTreeHostImpl host_impl_; | 159 FakeLayerTreeHostImpl host_impl_; |
145 FakePictureLayerImpl* pending_layer_; | 160 FakePictureLayerImpl* pending_layer_; |
146 FakePictureLayerImpl* active_layer_; | 161 FakePictureLayerImpl* active_layer_; |
147 }; | 162 }; |
148 | 163 |
149 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) { | 164 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) { |
150 const gfx::Size layer_bounds(1000, 1000); | 165 const gfx::Size layer_bounds(1000, 1000); |
151 host_impl_.SetViewportSize(layer_bounds); | 166 host_impl_.SetViewportSize(layer_bounds); |
152 SetupDefaultTrees(layer_bounds); | 167 SetupDefaultTrees(layer_bounds); |
153 | 168 |
154 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 169 scoped_ptr<RasterTilePriorityQueue> queue(BuildRasterQueue( |
155 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 170 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
156 EXPECT_FALSE(queue->IsEmpty()); | 171 EXPECT_FALSE(queue->IsEmpty()); |
157 | 172 |
158 size_t tile_count = 0; | 173 size_t tile_count = 0; |
159 std::set<Tile*> all_tiles; | 174 std::set<Tile*> all_tiles; |
160 while (!queue->IsEmpty()) { | 175 while (!queue->IsEmpty()) { |
161 EXPECT_TRUE(queue->Top()); | 176 EXPECT_TRUE(queue->Top()); |
162 all_tiles.insert(queue->Top()); | 177 all_tiles.insert(queue->Top()); |
163 ++tile_count; | 178 ++tile_count; |
164 queue->Pop(); | 179 queue->Pop(); |
165 } | 180 } |
166 | 181 |
167 EXPECT_EQ(tile_count, all_tiles.size()); | 182 EXPECT_EQ(tile_count, all_tiles.size()); |
168 EXPECT_EQ(16u, tile_count); | 183 EXPECT_EQ(16u, tile_count); |
169 | 184 |
170 // Sanity check, all tiles should be visible. | 185 // Sanity check, all tiles should be visible. |
171 std::set<Tile*> smoothness_tiles; | 186 std::set<Tile*> smoothness_tiles; |
172 queue = host_impl_.BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, | 187 queue = BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
173 RasterTilePriorityQueue::Type::ALL); | 188 RasterTilePriorityQueue::Type::ALL); |
174 bool had_low_res = false; | 189 bool had_low_res = false; |
175 while (!queue->IsEmpty()) { | 190 while (!queue->IsEmpty()) { |
176 Tile* tile = queue->Top(); | 191 Tile* tile = queue->Top(); |
177 EXPECT_TRUE(tile); | 192 EXPECT_TRUE(tile); |
178 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 193 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
179 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 194 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
180 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) | 195 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) |
181 had_low_res = true; | 196 had_low_res = true; |
182 else | 197 else |
183 smoothness_tiles.insert(tile); | 198 smoothness_tiles.insert(tile); |
184 queue->Pop(); | 199 queue->Pop(); |
185 } | 200 } |
186 EXPECT_EQ(all_tiles, smoothness_tiles); | 201 EXPECT_EQ(all_tiles, smoothness_tiles); |
187 EXPECT_TRUE(had_low_res); | 202 EXPECT_TRUE(had_low_res); |
188 | 203 |
189 // Check that everything is required for activation. | 204 // Check that everything is required for activation. |
190 queue = host_impl_.BuildRasterQueue( | 205 queue = |
191 SMOOTHNESS_TAKES_PRIORITY, | 206 BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
192 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 207 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
193 std::set<Tile*> required_for_activation_tiles; | 208 std::set<Tile*> required_for_activation_tiles; |
194 while (!queue->IsEmpty()) { | 209 while (!queue->IsEmpty()) { |
195 Tile* tile = queue->Top(); | 210 Tile* tile = queue->Top(); |
196 EXPECT_TRUE(tile->required_for_activation()); | 211 EXPECT_TRUE(tile->required_for_activation()); |
197 required_for_activation_tiles.insert(tile); | 212 required_for_activation_tiles.insert(tile); |
198 queue->Pop(); | 213 queue->Pop(); |
199 } | 214 } |
200 EXPECT_EQ(all_tiles, required_for_activation_tiles); | 215 EXPECT_EQ(all_tiles, required_for_activation_tiles); |
201 | 216 |
202 // Check that everything is required for draw. | 217 // Check that everything is required for draw. |
203 queue = host_impl_.BuildRasterQueue( | 218 queue = BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
204 SMOOTHNESS_TAKES_PRIORITY, | 219 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
205 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | |
206 std::set<Tile*> required_for_draw_tiles; | 220 std::set<Tile*> required_for_draw_tiles; |
207 while (!queue->IsEmpty()) { | 221 while (!queue->IsEmpty()) { |
208 Tile* tile = queue->Top(); | 222 Tile* tile = queue->Top(); |
209 EXPECT_TRUE(tile->required_for_draw()); | 223 EXPECT_TRUE(tile->required_for_draw()); |
210 required_for_draw_tiles.insert(tile); | 224 required_for_draw_tiles.insert(tile); |
211 queue->Pop(); | 225 queue->Pop(); |
212 } | 226 } |
213 EXPECT_EQ(all_tiles, required_for_draw_tiles); | 227 EXPECT_EQ(all_tiles, required_for_draw_tiles); |
214 | 228 |
215 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 229 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 std::vector<Tile*> active_low_res_tiles = | 272 std::vector<Tile*> active_low_res_tiles = |
259 active_layer_->LowResTiling()->AllTilesForTesting(); | 273 active_layer_->LowResTiling()->AllTilesForTesting(); |
260 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 274 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
261 all_tiles.insert(active_low_res_tiles[i]); | 275 all_tiles.insert(active_low_res_tiles[i]); |
262 | 276 |
263 Tile* last_tile = NULL; | 277 Tile* last_tile = NULL; |
264 smoothness_tiles.clear(); | 278 smoothness_tiles.clear(); |
265 tile_count = 0; | 279 tile_count = 0; |
266 size_t correct_order_tiles = 0u; | 280 size_t correct_order_tiles = 0u; |
267 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 281 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
268 queue = host_impl_.BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, | 282 queue = BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
269 RasterTilePriorityQueue::Type::ALL); | 283 RasterTilePriorityQueue::Type::ALL); |
270 std::set<Tile*> expected_required_for_draw_tiles; | 284 std::set<Tile*> expected_required_for_draw_tiles; |
271 std::set<Tile*> expected_required_for_activation_tiles; | 285 std::set<Tile*> expected_required_for_activation_tiles; |
272 while (!queue->IsEmpty()) { | 286 while (!queue->IsEmpty()) { |
273 Tile* tile = queue->Top(); | 287 Tile* tile = queue->Top(); |
274 EXPECT_TRUE(tile); | 288 EXPECT_TRUE(tile); |
275 | 289 |
276 if (!last_tile) | 290 if (!last_tile) |
277 last_tile = tile; | 291 last_tile = tile; |
278 | 292 |
279 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, | 293 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 queue->Pop(); | 325 queue->Pop(); |
312 } | 326 } |
313 | 327 |
314 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 328 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
315 EXPECT_EQ(all_tiles, smoothness_tiles); | 329 EXPECT_EQ(all_tiles, smoothness_tiles); |
316 // Since we don't guarantee increasing distance due to spiral iterator, we | 330 // Since we don't guarantee increasing distance due to spiral iterator, we |
317 // should check that we're _mostly_ right. | 331 // should check that we're _mostly_ right. |
318 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); | 332 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); |
319 | 333 |
320 // Check that we have consistent required_for_activation tiles. | 334 // Check that we have consistent required_for_activation tiles. |
321 queue = host_impl_.BuildRasterQueue( | 335 queue = |
322 SMOOTHNESS_TAKES_PRIORITY, | 336 BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
323 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 337 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
324 required_for_activation_tiles.clear(); | 338 required_for_activation_tiles.clear(); |
325 while (!queue->IsEmpty()) { | 339 while (!queue->IsEmpty()) { |
326 Tile* tile = queue->Top(); | 340 Tile* tile = queue->Top(); |
327 EXPECT_TRUE(tile->required_for_activation()); | 341 EXPECT_TRUE(tile->required_for_activation()); |
328 required_for_activation_tiles.insert(tile); | 342 required_for_activation_tiles.insert(tile); |
329 queue->Pop(); | 343 queue->Pop(); |
330 } | 344 } |
331 EXPECT_EQ(expected_required_for_activation_tiles, | 345 EXPECT_EQ(expected_required_for_activation_tiles, |
332 required_for_activation_tiles); | 346 required_for_activation_tiles); |
333 EXPECT_NE(all_tiles, required_for_activation_tiles); | 347 EXPECT_NE(all_tiles, required_for_activation_tiles); |
334 | 348 |
335 // Check that we have consistent required_for_draw tiles. | 349 // Check that we have consistent required_for_draw tiles. |
336 queue = host_impl_.BuildRasterQueue( | 350 queue = BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
337 SMOOTHNESS_TAKES_PRIORITY, | 351 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
338 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | |
339 required_for_draw_tiles.clear(); | 352 required_for_draw_tiles.clear(); |
340 while (!queue->IsEmpty()) { | 353 while (!queue->IsEmpty()) { |
341 Tile* tile = queue->Top(); | 354 Tile* tile = queue->Top(); |
342 EXPECT_TRUE(tile->required_for_draw()); | 355 EXPECT_TRUE(tile->required_for_draw()); |
343 required_for_draw_tiles.insert(tile); | 356 required_for_draw_tiles.insert(tile); |
344 queue->Pop(); | 357 queue->Pop(); |
345 } | 358 } |
346 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); | 359 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
347 EXPECT_NE(all_tiles, required_for_draw_tiles); | 360 EXPECT_NE(all_tiles, required_for_draw_tiles); |
348 | 361 |
349 std::set<Tile*> new_content_tiles; | 362 std::set<Tile*> new_content_tiles; |
350 last_tile = NULL; | 363 last_tile = NULL; |
351 size_t increasing_distance_tiles = 0u; | 364 size_t increasing_distance_tiles = 0u; |
352 // Here we expect to get increasing PENDING_TREE priority_bin. | 365 // Here we expect to get increasing PENDING_TREE priority_bin. |
353 queue = host_impl_.BuildRasterQueue(NEW_CONTENT_TAKES_PRIORITY, | 366 queue = BuildRasterQueue(NEW_CONTENT_TAKES_PRIORITY, |
354 RasterTilePriorityQueue::Type::ALL); | 367 RasterTilePriorityQueue::Type::ALL); |
355 tile_count = 0; | 368 tile_count = 0; |
356 while (!queue->IsEmpty()) { | 369 while (!queue->IsEmpty()) { |
357 Tile* tile = queue->Top(); | 370 Tile* tile = queue->Top(); |
358 EXPECT_TRUE(tile); | 371 EXPECT_TRUE(tile); |
359 | 372 |
360 if (!last_tile) | 373 if (!last_tile) |
361 last_tile = tile; | 374 last_tile = tile; |
362 | 375 |
363 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, | 376 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, |
364 tile->priority(PENDING_TREE).priority_bin); | 377 tile->priority(PENDING_TREE).priority_bin); |
(...skipping 17 matching lines...) Expand all Loading... |
382 queue->Pop(); | 395 queue->Pop(); |
383 } | 396 } |
384 | 397 |
385 EXPECT_EQ(tile_count, new_content_tiles.size()); | 398 EXPECT_EQ(tile_count, new_content_tiles.size()); |
386 EXPECT_EQ(high_res_tiles, new_content_tiles); | 399 EXPECT_EQ(high_res_tiles, new_content_tiles); |
387 // Since we don't guarantee increasing distance due to spiral iterator, we | 400 // Since we don't guarantee increasing distance due to spiral iterator, we |
388 // should check that we're _mostly_ right. | 401 // should check that we're _mostly_ right. |
389 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); | 402 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); |
390 | 403 |
391 // Check that we have consistent required_for_activation tiles. | 404 // Check that we have consistent required_for_activation tiles. |
392 queue = host_impl_.BuildRasterQueue( | 405 queue = |
393 NEW_CONTENT_TAKES_PRIORITY, | 406 BuildRasterQueue(NEW_CONTENT_TAKES_PRIORITY, |
394 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 407 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
395 required_for_activation_tiles.clear(); | 408 required_for_activation_tiles.clear(); |
396 while (!queue->IsEmpty()) { | 409 while (!queue->IsEmpty()) { |
397 Tile* tile = queue->Top(); | 410 Tile* tile = queue->Top(); |
398 EXPECT_TRUE(tile->required_for_activation()); | 411 EXPECT_TRUE(tile->required_for_activation()); |
399 required_for_activation_tiles.insert(tile); | 412 required_for_activation_tiles.insert(tile); |
400 queue->Pop(); | 413 queue->Pop(); |
401 } | 414 } |
402 EXPECT_EQ(expected_required_for_activation_tiles, | 415 EXPECT_EQ(expected_required_for_activation_tiles, |
403 required_for_activation_tiles); | 416 required_for_activation_tiles); |
404 EXPECT_NE(new_content_tiles, required_for_activation_tiles); | 417 EXPECT_NE(new_content_tiles, required_for_activation_tiles); |
405 | 418 |
406 // Check that we have consistent required_for_draw tiles. | 419 // Check that we have consistent required_for_draw tiles. |
407 queue = host_impl_.BuildRasterQueue( | 420 queue = BuildRasterQueue(NEW_CONTENT_TAKES_PRIORITY, |
408 NEW_CONTENT_TAKES_PRIORITY, | 421 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
409 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | |
410 required_for_draw_tiles.clear(); | 422 required_for_draw_tiles.clear(); |
411 while (!queue->IsEmpty()) { | 423 while (!queue->IsEmpty()) { |
412 Tile* tile = queue->Top(); | 424 Tile* tile = queue->Top(); |
413 EXPECT_TRUE(tile->required_for_draw()); | 425 EXPECT_TRUE(tile->required_for_draw()); |
414 required_for_draw_tiles.insert(tile); | 426 required_for_draw_tiles.insert(tile); |
415 queue->Pop(); | 427 queue->Pop(); |
416 } | 428 } |
417 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); | 429 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
418 EXPECT_NE(new_content_tiles, required_for_draw_tiles); | 430 EXPECT_NE(new_content_tiles, required_for_draw_tiles); |
419 } | 431 } |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 for (int j = 0; j <= 3; ++j) { | 483 for (int j = 0; j <= 3; ++j) { |
472 expected_all_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); | 484 expected_all_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); |
473 expected_all_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); | 485 expected_all_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); |
474 } | 486 } |
475 } | 487 } |
476 // Expect 15 shared tiles and 1 unshared tile. | 488 // Expect 15 shared tiles and 1 unshared tile. |
477 EXPECT_EQ(17u, expected_all_tiles.size()); | 489 EXPECT_EQ(17u, expected_all_tiles.size()); |
478 | 490 |
479 // The actual test will now build different queues and verify that the queues | 491 // The actual test will now build different queues and verify that the queues |
480 // return the same information as computed manually above. | 492 // return the same information as computed manually above. |
481 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 493 scoped_ptr<RasterTilePriorityQueue> queue(BuildRasterQueue( |
482 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 494 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
483 std::set<Tile*> actual_now_tiles; | 495 std::set<Tile*> actual_now_tiles; |
484 std::set<Tile*> actual_all_tiles; | 496 std::set<Tile*> actual_all_tiles; |
485 while (!queue->IsEmpty()) { | 497 while (!queue->IsEmpty()) { |
486 Tile* tile = queue->Top(); | 498 Tile* tile = queue->Top(); |
487 queue->Pop(); | 499 queue->Pop(); |
488 if (tile->combined_priority().priority_bin == TilePriority::NOW) | 500 if (tile->combined_priority().priority_bin == TilePriority::NOW) |
489 actual_now_tiles.insert(tile); | 501 actual_now_tiles.insert(tile); |
490 actual_all_tiles.insert(tile); | 502 actual_all_tiles.insert(tile); |
491 } | 503 } |
492 EXPECT_EQ(expected_now_tiles, actual_now_tiles); | 504 EXPECT_EQ(expected_now_tiles, actual_now_tiles); |
493 EXPECT_EQ(expected_all_tiles, actual_all_tiles); | 505 EXPECT_EQ(expected_all_tiles, actual_all_tiles); |
494 | 506 |
495 queue = host_impl_.BuildRasterQueue( | 507 queue = BuildRasterQueue(SAME_PRIORITY_FOR_BOTH_TREES, |
496 SAME_PRIORITY_FOR_BOTH_TREES, | 508 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
497 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | |
498 std::set<Tile*> actual_required_for_draw_tiles; | 509 std::set<Tile*> actual_required_for_draw_tiles; |
499 while (!queue->IsEmpty()) { | 510 while (!queue->IsEmpty()) { |
500 Tile* tile = queue->Top(); | 511 Tile* tile = queue->Top(); |
501 queue->Pop(); | 512 queue->Pop(); |
502 actual_required_for_draw_tiles.insert(tile); | 513 actual_required_for_draw_tiles.insert(tile); |
503 } | 514 } |
504 EXPECT_EQ(expected_required_for_draw_tiles, actual_required_for_draw_tiles); | 515 EXPECT_EQ(expected_required_for_draw_tiles, actual_required_for_draw_tiles); |
505 | 516 |
506 queue = host_impl_.BuildRasterQueue( | 517 queue = |
507 SAME_PRIORITY_FOR_BOTH_TREES, | 518 BuildRasterQueue(SAME_PRIORITY_FOR_BOTH_TREES, |
508 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 519 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
509 std::set<Tile*> actual_required_for_activation_tiles; | 520 std::set<Tile*> actual_required_for_activation_tiles; |
510 while (!queue->IsEmpty()) { | 521 while (!queue->IsEmpty()) { |
511 Tile* tile = queue->Top(); | 522 Tile* tile = queue->Top(); |
512 queue->Pop(); | 523 queue->Pop(); |
513 actual_required_for_activation_tiles.insert(tile); | 524 actual_required_for_activation_tiles.insert(tile); |
514 } | 525 } |
515 EXPECT_EQ(expected_required_for_activation_tiles, | 526 EXPECT_EQ(expected_required_for_activation_tiles, |
516 actual_required_for_activation_tiles); | 527 actual_required_for_activation_tiles); |
517 } | 528 } |
518 | 529 |
(...skipping 18 matching lines...) Expand all Loading... |
537 pending_layer_->AddChild(pending_child.Pass()); | 548 pending_layer_->AddChild(pending_child.Pass()); |
538 | 549 |
539 // Set a small viewport, so we have soon and eventually tiles. | 550 // Set a small viewport, so we have soon and eventually tiles. |
540 host_impl_.SetViewportSize(gfx::Size(200, 200)); | 551 host_impl_.SetViewportSize(gfx::Size(200, 200)); |
541 time_ticks += base::TimeDelta::FromMilliseconds(1); | 552 time_ticks += base::TimeDelta::FromMilliseconds(1); |
542 host_impl_.SetCurrentBeginFrameArgs( | 553 host_impl_.SetCurrentBeginFrameArgs( |
543 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 554 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
544 host_impl_.pending_tree()->UpdateDrawProperties(); | 555 host_impl_.pending_tree()->UpdateDrawProperties(); |
545 | 556 |
546 host_impl_.SetRequiresHighResToDraw(); | 557 host_impl_.SetRequiresHighResToDraw(); |
547 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 558 scoped_ptr<RasterTilePriorityQueue> queue(BuildRasterQueue( |
548 SMOOTHNESS_TAKES_PRIORITY, RasterTilePriorityQueue::Type::ALL)); | 559 SMOOTHNESS_TAKES_PRIORITY, RasterTilePriorityQueue::Type::ALL)); |
549 EXPECT_FALSE(queue->IsEmpty()); | 560 EXPECT_FALSE(queue->IsEmpty()); |
550 | 561 |
551 // Get all the tiles that are NOW or SOON and make sure they are ready to | 562 // Get all the tiles that are NOW or SOON and make sure they are ready to |
552 // draw. | 563 // draw. |
553 std::vector<Tile*> all_tiles; | 564 std::vector<Tile*> all_tiles; |
554 while (!queue->IsEmpty()) { | 565 while (!queue->IsEmpty()) { |
555 Tile* tile = queue->Top(); | 566 Tile* tile = queue->Top(); |
556 if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) | 567 if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) |
557 break; | 568 break; |
558 | 569 |
559 all_tiles.push_back(tile); | 570 all_tiles.push_back(tile); |
560 queue->Pop(); | 571 queue->Pop(); |
561 } | 572 } |
562 | 573 |
563 tile_manager()->InitializeTilesWithResourcesForTesting( | 574 tile_manager()->InitializeTilesWithResourcesForTesting( |
564 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 575 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
565 | 576 |
566 // Ensure we can activate. | 577 // Ensure we can activate. |
567 EXPECT_TRUE(tile_manager()->IsReadyToActivate()); | 578 EXPECT_TRUE(tile_manager()->IsReadyToActivate()); |
568 } | 579 } |
569 | 580 |
570 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { | 581 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { |
571 const gfx::Size layer_bounds(1000, 1000); | 582 const gfx::Size layer_bounds(1000, 1000); |
572 host_impl_.SetViewportSize(layer_bounds); | 583 host_impl_.SetViewportSize(layer_bounds); |
573 SetupDefaultTrees(layer_bounds); | 584 SetupDefaultTrees(layer_bounds); |
574 | 585 |
575 scoped_ptr<EvictionTilePriorityQueue> empty_queue( | 586 scoped_ptr<EvictionTilePriorityQueue> empty_queue( |
576 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); | 587 BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
577 EXPECT_TRUE(empty_queue->IsEmpty()); | 588 EXPECT_TRUE(empty_queue->IsEmpty()); |
578 std::set<Tile*> all_tiles; | 589 std::set<Tile*> all_tiles; |
579 size_t tile_count = 0; | 590 size_t tile_count = 0; |
580 | 591 |
581 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( | 592 scoped_ptr<RasterTilePriorityQueue> raster_queue(BuildRasterQueue( |
582 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 593 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
583 while (!raster_queue->IsEmpty()) { | 594 while (!raster_queue->IsEmpty()) { |
584 ++tile_count; | 595 ++tile_count; |
585 EXPECT_TRUE(raster_queue->Top()); | 596 EXPECT_TRUE(raster_queue->Top()); |
586 all_tiles.insert(raster_queue->Top()); | 597 all_tiles.insert(raster_queue->Top()); |
587 raster_queue->Pop(); | 598 raster_queue->Pop(); |
588 } | 599 } |
589 | 600 |
590 EXPECT_EQ(tile_count, all_tiles.size()); | 601 EXPECT_EQ(tile_count, all_tiles.size()); |
591 EXPECT_EQ(16u, tile_count); | 602 EXPECT_EQ(16u, tile_count); |
592 | 603 |
593 tile_manager()->InitializeTilesWithResourcesForTesting( | 604 tile_manager()->InitializeTilesWithResourcesForTesting( |
594 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 605 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
595 | 606 |
596 scoped_ptr<EvictionTilePriorityQueue> queue( | 607 scoped_ptr<EvictionTilePriorityQueue> queue( |
597 host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY)); | 608 BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY)); |
598 EXPECT_FALSE(queue->IsEmpty()); | 609 EXPECT_FALSE(queue->IsEmpty()); |
599 | 610 |
600 // Sanity check, all tiles should be visible. | 611 // Sanity check, all tiles should be visible. |
601 std::set<Tile*> smoothness_tiles; | 612 std::set<Tile*> smoothness_tiles; |
602 while (!queue->IsEmpty()) { | 613 while (!queue->IsEmpty()) { |
603 Tile* tile = queue->Top(); | 614 Tile* tile = queue->Top(); |
604 EXPECT_TRUE(tile); | 615 EXPECT_TRUE(tile); |
605 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 616 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
606 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 617 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
607 EXPECT_TRUE(tile->HasResource()); | 618 EXPECT_TRUE(tile->HasResource()); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 667 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
657 all_tiles.insert(active_low_res_tiles[i]); | 668 all_tiles.insert(active_low_res_tiles[i]); |
658 | 669 |
659 tile_manager()->InitializeTilesWithResourcesForTesting( | 670 tile_manager()->InitializeTilesWithResourcesForTesting( |
660 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 671 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
661 | 672 |
662 Tile* last_tile = NULL; | 673 Tile* last_tile = NULL; |
663 smoothness_tiles.clear(); | 674 smoothness_tiles.clear(); |
664 tile_count = 0; | 675 tile_count = 0; |
665 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 676 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
666 queue = host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY); | 677 queue = BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY); |
667 int distance_increasing = 0; | 678 int distance_increasing = 0; |
668 int distance_decreasing = 0; | 679 int distance_decreasing = 0; |
669 while (!queue->IsEmpty()) { | 680 while (!queue->IsEmpty()) { |
670 Tile* tile = queue->Top(); | 681 Tile* tile = queue->Top(); |
671 EXPECT_TRUE(tile); | 682 EXPECT_TRUE(tile); |
672 EXPECT_TRUE(tile->HasResource()); | 683 EXPECT_TRUE(tile->HasResource()); |
673 | 684 |
674 if (!last_tile) | 685 if (!last_tile) |
675 last_tile = tile; | 686 last_tile = tile; |
676 | 687 |
(...skipping 21 matching lines...) Expand all Loading... |
698 | 709 |
699 // Ensure that the distance is decreasing many more times than increasing. | 710 // Ensure that the distance is decreasing many more times than increasing. |
700 EXPECT_EQ(3, distance_increasing); | 711 EXPECT_EQ(3, distance_increasing); |
701 EXPECT_EQ(17, distance_decreasing); | 712 EXPECT_EQ(17, distance_decreasing); |
702 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 713 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
703 EXPECT_EQ(all_tiles, smoothness_tiles); | 714 EXPECT_EQ(all_tiles, smoothness_tiles); |
704 | 715 |
705 std::set<Tile*> new_content_tiles; | 716 std::set<Tile*> new_content_tiles; |
706 last_tile = NULL; | 717 last_tile = NULL; |
707 // Here we expect to get increasing PENDING_TREE priority_bin. | 718 // Here we expect to get increasing PENDING_TREE priority_bin. |
708 queue = host_impl_.BuildEvictionQueue(NEW_CONTENT_TAKES_PRIORITY); | 719 queue = BuildEvictionQueue(NEW_CONTENT_TAKES_PRIORITY); |
709 distance_decreasing = 0; | 720 distance_decreasing = 0; |
710 distance_increasing = 0; | 721 distance_increasing = 0; |
711 while (!queue->IsEmpty()) { | 722 while (!queue->IsEmpty()) { |
712 Tile* tile = queue->Top(); | 723 Tile* tile = queue->Top(); |
713 EXPECT_TRUE(tile); | 724 EXPECT_TRUE(tile); |
714 | 725 |
715 if (!last_tile) | 726 if (!last_tile) |
716 last_tile = tile; | 727 last_tile = tile; |
717 | 728 |
718 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, | 729 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
768 static_cast<FakePictureLayerImpl*>(pending_layer_->children()[0]); | 779 static_cast<FakePictureLayerImpl*>(pending_layer_->children()[0]); |
769 pending_child_layer->SetDrawsContent(true); | 780 pending_child_layer->SetDrawsContent(true); |
770 | 781 |
771 time_ticks += base::TimeDelta::FromMilliseconds(1); | 782 time_ticks += base::TimeDelta::FromMilliseconds(1); |
772 host_impl_.SetCurrentBeginFrameArgs( | 783 host_impl_.SetCurrentBeginFrameArgs( |
773 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 784 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
774 host_impl_.pending_tree()->UpdateDrawProperties(); | 785 host_impl_.pending_tree()->UpdateDrawProperties(); |
775 | 786 |
776 std::set<Tile*> all_tiles; | 787 std::set<Tile*> all_tiles; |
777 size_t tile_count = 0; | 788 size_t tile_count = 0; |
778 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( | 789 scoped_ptr<RasterTilePriorityQueue> raster_queue(BuildRasterQueue( |
779 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 790 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
780 while (!raster_queue->IsEmpty()) { | 791 while (!raster_queue->IsEmpty()) { |
781 ++tile_count; | 792 ++tile_count; |
782 EXPECT_TRUE(raster_queue->Top()); | 793 EXPECT_TRUE(raster_queue->Top()); |
783 all_tiles.insert(raster_queue->Top()); | 794 all_tiles.insert(raster_queue->Top()); |
784 raster_queue->Pop(); | 795 raster_queue->Pop(); |
785 } | 796 } |
786 EXPECT_EQ(tile_count, all_tiles.size()); | 797 EXPECT_EQ(tile_count, all_tiles.size()); |
787 EXPECT_EQ(32u, tile_count); | 798 EXPECT_EQ(32u, tile_count); |
788 | 799 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 pending_child_low_res_tiles.end()); | 835 pending_child_low_res_tiles.end()); |
825 | 836 |
826 tile_manager()->InitializeTilesWithResourcesForTesting( | 837 tile_manager()->InitializeTilesWithResourcesForTesting( |
827 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 838 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
828 | 839 |
829 // Verify occlusion is considered by EvictionTilePriorityQueue. | 840 // Verify occlusion is considered by EvictionTilePriorityQueue. |
830 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 841 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
831 size_t occluded_count = 0u; | 842 size_t occluded_count = 0u; |
832 Tile* last_tile = NULL; | 843 Tile* last_tile = NULL; |
833 scoped_ptr<EvictionTilePriorityQueue> queue( | 844 scoped_ptr<EvictionTilePriorityQueue> queue( |
834 host_impl_.BuildEvictionQueue(tree_priority)); | 845 BuildEvictionQueue(tree_priority)); |
835 while (!queue->IsEmpty()) { | 846 while (!queue->IsEmpty()) { |
836 Tile* tile = queue->Top(); | 847 Tile* tile = queue->Top(); |
837 if (!last_tile) | 848 if (!last_tile) |
838 last_tile = tile; | 849 last_tile = tile; |
839 | 850 |
840 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); | 851 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); |
841 | 852 |
842 // The only way we will encounter an occluded tile after an unoccluded | 853 // The only way we will encounter an occluded tile after an unoccluded |
843 // tile is if the priorty bin decreased, the tile is required for | 854 // tile is if the priorty bin decreased, the tile is required for |
844 // activation, or the scale changed. | 855 // activation, or the scale changed. |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); | 961 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); |
951 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); | 962 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); |
952 | 963 |
953 // Verify that eviction queue returns tiles also from layers without valid | 964 // Verify that eviction queue returns tiles also from layers without valid |
954 // tile priorities and that the tile priority bin of those tiles is (at most) | 965 // tile priorities and that the tile priority bin of those tiles is (at most) |
955 // EVENTUALLY. | 966 // EVENTUALLY. |
956 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 967 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
957 std::set<Tile*> new_content_tiles; | 968 std::set<Tile*> new_content_tiles; |
958 size_t tile_count = 0; | 969 size_t tile_count = 0; |
959 scoped_ptr<EvictionTilePriorityQueue> queue( | 970 scoped_ptr<EvictionTilePriorityQueue> queue( |
960 host_impl_.BuildEvictionQueue(tree_priority)); | 971 BuildEvictionQueue(tree_priority)); |
961 while (!queue->IsEmpty()) { | 972 while (!queue->IsEmpty()) { |
962 Tile* tile = queue->Top(); | 973 Tile* tile = queue->Top(); |
963 const TilePriority& pending_priority = tile->priority(PENDING_TREE); | 974 const TilePriority& pending_priority = tile->priority(PENDING_TREE); |
964 EXPECT_NE(std::numeric_limits<float>::infinity(), | 975 EXPECT_NE(std::numeric_limits<float>::infinity(), |
965 pending_priority.distance_to_visible); | 976 pending_priority.distance_to_visible); |
966 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) | 977 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) |
967 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); | 978 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); |
968 else | 979 else |
969 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); | 980 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); |
970 new_content_tiles.insert(tile); | 981 new_content_tiles.insert(tile); |
971 ++tile_count; | 982 ++tile_count; |
972 queue->Pop(); | 983 queue->Pop(); |
973 } | 984 } |
974 EXPECT_EQ(tile_count, new_content_tiles.size()); | 985 EXPECT_EQ(tile_count, new_content_tiles.size()); |
975 EXPECT_EQ(all_tiles, new_content_tiles); | 986 EXPECT_EQ(all_tiles, new_content_tiles); |
976 } | 987 } |
977 | 988 |
978 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { | 989 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { |
979 const gfx::Size layer_bounds(1000, 1000); | 990 const gfx::Size layer_bounds(1000, 1000); |
980 host_impl_.SetViewportSize(layer_bounds); | 991 host_impl_.SetViewportSize(layer_bounds); |
981 SetupDefaultTrees(layer_bounds); | 992 SetupDefaultTrees(layer_bounds); |
982 | 993 |
983 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 994 scoped_ptr<RasterTilePriorityQueue> queue(BuildRasterQueue( |
984 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 995 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
985 EXPECT_FALSE(queue->IsEmpty()); | 996 EXPECT_FALSE(queue->IsEmpty()); |
986 | 997 |
987 size_t tile_count = 0; | 998 size_t tile_count = 0; |
988 std::set<Tile*> all_tiles; | 999 std::set<Tile*> all_tiles; |
989 while (!queue->IsEmpty()) { | 1000 while (!queue->IsEmpty()) { |
990 EXPECT_TRUE(queue->Top()); | 1001 EXPECT_TRUE(queue->Top()); |
991 all_tiles.insert(queue->Top()); | 1002 all_tiles.insert(queue->Top()); |
992 ++tile_count; | 1003 ++tile_count; |
993 queue->Pop(); | 1004 queue->Pop(); |
994 } | 1005 } |
995 | 1006 |
996 EXPECT_EQ(tile_count, all_tiles.size()); | 1007 EXPECT_EQ(tile_count, all_tiles.size()); |
997 EXPECT_EQ(16u, tile_count); | 1008 EXPECT_EQ(16u, tile_count); |
998 | 1009 |
999 for (int i = 1; i < 10; ++i) { | 1010 for (int i = 1; i < 10; ++i) { |
1000 scoped_ptr<FakePictureLayerImpl> pending_layer = | 1011 scoped_ptr<FakePictureLayerImpl> pending_layer = |
1001 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1012 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
1002 pending_layer->SetDrawsContent(true); | 1013 pending_layer->SetDrawsContent(true); |
1003 pending_layer->set_has_valid_tile_priorities(true); | 1014 pending_layer->set_has_valid_tile_priorities(true); |
1004 pending_layer_->AddChild(pending_layer.Pass()); | 1015 pending_layer_->AddChild(pending_layer.Pass()); |
1005 } | 1016 } |
1006 | 1017 |
1007 queue = host_impl_.BuildRasterQueue(SAME_PRIORITY_FOR_BOTH_TREES, | 1018 queue = BuildRasterQueue(SAME_PRIORITY_FOR_BOTH_TREES, |
1008 RasterTilePriorityQueue::Type::ALL); | 1019 RasterTilePriorityQueue::Type::ALL); |
1009 EXPECT_FALSE(queue->IsEmpty()); | 1020 EXPECT_FALSE(queue->IsEmpty()); |
1010 | 1021 |
1011 tile_count = 0; | 1022 tile_count = 0; |
1012 all_tiles.clear(); | 1023 all_tiles.clear(); |
1013 while (!queue->IsEmpty()) { | 1024 while (!queue->IsEmpty()) { |
1014 EXPECT_TRUE(queue->Top()); | 1025 EXPECT_TRUE(queue->Top()); |
1015 all_tiles.insert(queue->Top()); | 1026 all_tiles.insert(queue->Top()); |
1016 ++tile_count; | 1027 ++tile_count; |
1017 queue->Pop(); | 1028 queue->Pop(); |
1018 } | 1029 } |
1019 EXPECT_EQ(tile_count, all_tiles.size()); | 1030 EXPECT_EQ(tile_count, all_tiles.size()); |
1020 EXPECT_EQ(16u, tile_count); | 1031 EXPECT_EQ(16u, tile_count); |
1021 } | 1032 } |
1022 | 1033 |
1023 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { | 1034 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { |
1024 const gfx::Size layer_bounds(1000, 1000); | 1035 const gfx::Size layer_bounds(1000, 1000); |
1025 host_impl_.SetViewportSize(layer_bounds); | 1036 host_impl_.SetViewportSize(layer_bounds); |
1026 SetupDefaultTrees(layer_bounds); | 1037 SetupDefaultTrees(layer_bounds); |
1027 | 1038 |
1028 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( | 1039 scoped_ptr<RasterTilePriorityQueue> raster_queue(BuildRasterQueue( |
1029 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 1040 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
1030 EXPECT_FALSE(raster_queue->IsEmpty()); | 1041 EXPECT_FALSE(raster_queue->IsEmpty()); |
1031 | 1042 |
1032 size_t tile_count = 0; | 1043 size_t tile_count = 0; |
1033 std::set<Tile*> all_tiles; | 1044 std::set<Tile*> all_tiles; |
1034 while (!raster_queue->IsEmpty()) { | 1045 while (!raster_queue->IsEmpty()) { |
1035 EXPECT_TRUE(raster_queue->Top()); | 1046 EXPECT_TRUE(raster_queue->Top()); |
1036 all_tiles.insert(raster_queue->Top()); | 1047 all_tiles.insert(raster_queue->Top()); |
1037 ++tile_count; | 1048 ++tile_count; |
1038 raster_queue->Pop(); | 1049 raster_queue->Pop(); |
1039 } | 1050 } |
1040 EXPECT_EQ(tile_count, all_tiles.size()); | 1051 EXPECT_EQ(tile_count, all_tiles.size()); |
1041 EXPECT_EQ(16u, tile_count); | 1052 EXPECT_EQ(16u, tile_count); |
1042 | 1053 |
1043 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); | 1054 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); |
1044 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 1055 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
1045 | 1056 |
1046 for (int i = 1; i < 10; ++i) { | 1057 for (int i = 1; i < 10; ++i) { |
1047 scoped_ptr<FakePictureLayerImpl> pending_layer = | 1058 scoped_ptr<FakePictureLayerImpl> pending_layer = |
1048 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1059 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
1049 pending_layer->SetDrawsContent(true); | 1060 pending_layer->SetDrawsContent(true); |
1050 pending_layer->set_has_valid_tile_priorities(true); | 1061 pending_layer->set_has_valid_tile_priorities(true); |
1051 pending_layer_->AddChild(pending_layer.Pass()); | 1062 pending_layer_->AddChild(pending_layer.Pass()); |
1052 } | 1063 } |
1053 | 1064 |
1054 scoped_ptr<EvictionTilePriorityQueue> queue( | 1065 scoped_ptr<EvictionTilePriorityQueue> queue( |
1055 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); | 1066 BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
1056 EXPECT_FALSE(queue->IsEmpty()); | 1067 EXPECT_FALSE(queue->IsEmpty()); |
1057 | 1068 |
1058 tile_count = 0; | 1069 tile_count = 0; |
1059 all_tiles.clear(); | 1070 all_tiles.clear(); |
1060 while (!queue->IsEmpty()) { | 1071 while (!queue->IsEmpty()) { |
1061 EXPECT_TRUE(queue->Top()); | 1072 EXPECT_TRUE(queue->Top()); |
1062 all_tiles.insert(queue->Top()); | 1073 all_tiles.insert(queue->Top()); |
1063 ++tile_count; | 1074 ++tile_count; |
1064 queue->Pop(); | 1075 queue->Pop(); |
1065 } | 1076 } |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1252 EXPECT_GT(eventually_bin_order_correct_count, | 1263 EXPECT_GT(eventually_bin_order_correct_count, |
1253 eventually_bin_order_incorrect_count); | 1264 eventually_bin_order_incorrect_count); |
1254 | 1265 |
1255 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1266 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
1256 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1267 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
1257 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1268 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
1258 } | 1269 } |
1259 | 1270 |
1260 } // namespace | 1271 } // namespace |
1261 } // namespace cc | 1272 } // namespace cc |
OLD | NEW |