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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 all_tiles.insert(active_high_res_tiles[i]); | 214 all_tiles.insert(active_high_res_tiles[i]); |
215 | 215 |
216 std::vector<Tile*> active_low_res_tiles = | 216 std::vector<Tile*> active_low_res_tiles = |
217 active_layer_->LowResTiling()->AllTilesForTesting(); | 217 active_layer_->LowResTiling()->AllTilesForTesting(); |
218 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 218 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
219 all_tiles.insert(active_low_res_tiles[i]); | 219 all_tiles.insert(active_low_res_tiles[i]); |
220 | 220 |
221 Tile* last_tile = NULL; | 221 Tile* last_tile = NULL; |
222 smoothness_tiles.clear(); | 222 smoothness_tiles.clear(); |
223 tile_count = 0; | 223 tile_count = 0; |
224 size_t increasing_distance_tiles = 0u; | 224 size_t correct_order_tiles = 0u; |
225 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 225 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
226 queue.Reset(); | 226 queue.Reset(); |
227 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 227 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); |
228 while (!queue.IsEmpty()) { | 228 while (!queue.IsEmpty()) { |
229 Tile* tile = queue.Top(); | 229 Tile* tile = queue.Top(); |
230 EXPECT_TRUE(tile); | 230 EXPECT_TRUE(tile); |
231 | 231 |
232 if (!last_tile) | 232 if (!last_tile) |
233 last_tile = tile; | 233 last_tile = tile; |
234 | 234 |
235 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, | 235 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, |
236 tile->priority(ACTIVE_TREE).priority_bin); | 236 tile->priority(ACTIVE_TREE).priority_bin); |
| 237 bool skip_updating_last_tile = false; |
237 if (last_tile->priority(ACTIVE_TREE).priority_bin == | 238 if (last_tile->priority(ACTIVE_TREE).priority_bin == |
238 tile->priority(ACTIVE_TREE).priority_bin) { | 239 tile->priority(ACTIVE_TREE).priority_bin) { |
239 increasing_distance_tiles += | 240 correct_order_tiles += |
240 last_tile->priority(ACTIVE_TREE).distance_to_visible <= | 241 last_tile->priority(ACTIVE_TREE).distance_to_visible <= |
241 tile->priority(ACTIVE_TREE).distance_to_visible; | 242 tile->priority(ACTIVE_TREE).distance_to_visible; |
| 243 } else if (tile->priority(ACTIVE_TREE).priority_bin == |
| 244 TilePriority::EVENTUALLY && |
| 245 tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW) { |
| 246 // Since we'd return pending tree now tiles before the eventually tiles on |
| 247 // the active tree, update the value. |
| 248 ++correct_order_tiles; |
| 249 skip_updating_last_tile = true; |
242 } | 250 } |
243 | 251 |
244 if (tile->priority(ACTIVE_TREE).priority_bin == TilePriority::NOW && | 252 if (tile->priority(ACTIVE_TREE).priority_bin == TilePriority::NOW && |
245 last_tile->priority(ACTIVE_TREE).resolution != | 253 last_tile->priority(ACTIVE_TREE).resolution != |
246 tile->priority(ACTIVE_TREE).resolution) { | 254 tile->priority(ACTIVE_TREE).resolution) { |
247 // Low resolution should come first. | 255 // Low resolution should come first. |
248 EXPECT_EQ(LOW_RESOLUTION, last_tile->priority(ACTIVE_TREE).resolution); | 256 EXPECT_EQ(LOW_RESOLUTION, last_tile->priority(ACTIVE_TREE).resolution); |
249 } | 257 } |
250 | 258 |
251 last_tile = tile; | 259 if (!skip_updating_last_tile) |
| 260 last_tile = tile; |
252 ++tile_count; | 261 ++tile_count; |
253 smoothness_tiles.insert(tile); | 262 smoothness_tiles.insert(tile); |
254 queue.Pop(); | 263 queue.Pop(); |
255 } | 264 } |
256 | 265 |
257 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 266 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
258 EXPECT_EQ(all_tiles, smoothness_tiles); | 267 EXPECT_EQ(all_tiles, smoothness_tiles); |
259 // Since we don't guarantee increasing distance due to spiral iterator, we | 268 // Since we don't guarantee increasing distance due to spiral iterator, we |
260 // should check that we're _mostly_ right. | 269 // should check that we're _mostly_ right. |
261 EXPECT_GT(increasing_distance_tiles, 3 * tile_count / 4); | 270 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); |
262 | 271 |
263 std::set<Tile*> new_content_tiles; | 272 std::set<Tile*> new_content_tiles; |
264 last_tile = NULL; | 273 last_tile = NULL; |
265 increasing_distance_tiles = 0u; | 274 size_t increasing_distance_tiles = 0u; |
266 // Here we expect to get increasing PENDING_TREE priority_bin. | 275 // Here we expect to get increasing PENDING_TREE priority_bin. |
267 queue.Reset(); | 276 queue.Reset(); |
268 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | 277 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); |
269 while (!queue.IsEmpty()) { | 278 while (!queue.IsEmpty()) { |
270 Tile* tile = queue.Top(); | 279 Tile* tile = queue.Top(); |
271 EXPECT_TRUE(tile); | 280 EXPECT_TRUE(tile); |
272 | 281 |
273 if (!last_tile) | 282 if (!last_tile) |
274 last_tile = tile; | 283 last_tile = tile; |
275 | 284 |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 all_tiles.insert(queue.Top()); | 680 all_tiles.insert(queue.Top()); |
672 ++tile_count; | 681 ++tile_count; |
673 queue.Pop(); | 682 queue.Pop(); |
674 } | 683 } |
675 EXPECT_EQ(tile_count, all_tiles.size()); | 684 EXPECT_EQ(tile_count, all_tiles.size()); |
676 EXPECT_EQ(17u, tile_count); | 685 EXPECT_EQ(17u, tile_count); |
677 } | 686 } |
678 | 687 |
679 } // namespace | 688 } // namespace |
680 } // namespace cc | 689 } // namespace cc |
OLD | NEW |