OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/tiles/picture_layer_tiling_set.h" | 5 #include "cc/tiles/picture_layer_tiling_set.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "cc/resources/resource_provider.h" | 10 #include "cc/resources/resource_provider.h" |
11 #include "cc/test/fake_display_list_raster_source.h" | |
12 #include "cc/test/fake_output_surface.h" | 11 #include "cc/test/fake_output_surface.h" |
13 #include "cc/test/fake_output_surface_client.h" | 12 #include "cc/test/fake_output_surface_client.h" |
14 #include "cc/test/fake_picture_layer_tiling_client.h" | 13 #include "cc/test/fake_picture_layer_tiling_client.h" |
| 14 #include "cc/test/fake_raster_source.h" |
15 #include "cc/test/fake_resource_provider.h" | 15 #include "cc/test/fake_resource_provider.h" |
16 #include "cc/test/test_shared_bitmap_manager.h" | 16 #include "cc/test/test_shared_bitmap_manager.h" |
17 #include "cc/trees/layer_tree_settings.h" | 17 #include "cc/trees/layer_tree_settings.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
19 #include "ui/gfx/geometry/size_conversions.h" | 19 #include "ui/gfx/geometry/size_conversions.h" |
20 | 20 |
21 namespace cc { | 21 namespace cc { |
22 namespace { | 22 namespace { |
23 | 23 |
24 scoped_ptr<PictureLayerTilingSet> CreateTilingSet( | 24 scoped_ptr<PictureLayerTilingSet> CreateTilingSet( |
25 PictureLayerTilingClient* client) { | 25 PictureLayerTilingClient* client) { |
26 LayerTreeSettings defaults; | 26 LayerTreeSettings defaults; |
27 return PictureLayerTilingSet::Create( | 27 return PictureLayerTilingSet::Create( |
28 ACTIVE_TREE, client, defaults.tiling_interest_area_padding, | 28 ACTIVE_TREE, client, defaults.tiling_interest_area_padding, |
29 defaults.skewport_target_time_in_seconds, | 29 defaults.skewport_target_time_in_seconds, |
30 defaults.skewport_extrapolation_limit_in_content_pixels); | 30 defaults.skewport_extrapolation_limit_in_content_pixels); |
31 } | 31 } |
32 | 32 |
33 TEST(PictureLayerTilingSetTest, NoResources) { | 33 TEST(PictureLayerTilingSetTest, NoResources) { |
34 FakePictureLayerTilingClient client; | 34 FakePictureLayerTilingClient client; |
35 gfx::Size layer_bounds(1000, 800); | 35 gfx::Size layer_bounds(1000, 800); |
36 scoped_ptr<PictureLayerTilingSet> set = CreateTilingSet(&client); | 36 scoped_ptr<PictureLayerTilingSet> set = CreateTilingSet(&client); |
37 client.SetTileSize(gfx::Size(256, 256)); | 37 client.SetTileSize(gfx::Size(256, 256)); |
38 | 38 |
39 scoped_refptr<FakeDisplayListRasterSource> raster_source = | 39 scoped_refptr<FakeRasterSource> raster_source = |
40 FakeDisplayListRasterSource::CreateEmpty(layer_bounds); | 40 FakeRasterSource::CreateEmpty(layer_bounds); |
41 | 41 |
42 set->AddTiling(1.0, raster_source); | 42 set->AddTiling(1.0, raster_source); |
43 set->AddTiling(1.5, raster_source); | 43 set->AddTiling(1.5, raster_source); |
44 set->AddTiling(2.0, raster_source); | 44 set->AddTiling(2.0, raster_source); |
45 | 45 |
46 float contents_scale = 2.0; | 46 float contents_scale = 2.0; |
47 gfx::Size content_bounds( | 47 gfx::Size content_bounds( |
48 gfx::ScaleToCeiledSize(layer_bounds, contents_scale)); | 48 gfx::ScaleToCeiledSize(layer_bounds, contents_scale)); |
49 gfx::Rect content_rect(content_bounds); | 49 gfx::Rect content_rect(content_bounds); |
50 | 50 |
(...skipping 16 matching lines...) Expand all Loading... |
67 FakePictureLayerTilingClient client; | 67 FakePictureLayerTilingClient client; |
68 gfx::Size layer_bounds(10, 10); | 68 gfx::Size layer_bounds(10, 10); |
69 PictureLayerTilingSet::TilingRange higher_than_high_res_range(0, 0); | 69 PictureLayerTilingSet::TilingRange higher_than_high_res_range(0, 0); |
70 PictureLayerTilingSet::TilingRange high_res_range(0, 0); | 70 PictureLayerTilingSet::TilingRange high_res_range(0, 0); |
71 PictureLayerTilingSet::TilingRange between_high_and_low_res_range(0, 0); | 71 PictureLayerTilingSet::TilingRange between_high_and_low_res_range(0, 0); |
72 PictureLayerTilingSet::TilingRange low_res_range(0, 0); | 72 PictureLayerTilingSet::TilingRange low_res_range(0, 0); |
73 PictureLayerTilingSet::TilingRange lower_than_low_res_range(0, 0); | 73 PictureLayerTilingSet::TilingRange lower_than_low_res_range(0, 0); |
74 PictureLayerTiling* high_res_tiling; | 74 PictureLayerTiling* high_res_tiling; |
75 PictureLayerTiling* low_res_tiling; | 75 PictureLayerTiling* low_res_tiling; |
76 | 76 |
77 scoped_refptr<FakeDisplayListRasterSource> raster_source = | 77 scoped_refptr<FakeRasterSource> raster_source = |
78 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 78 FakeRasterSource::CreateFilled(layer_bounds); |
79 | 79 |
80 scoped_ptr<PictureLayerTilingSet> set = CreateTilingSet(&client); | 80 scoped_ptr<PictureLayerTilingSet> set = CreateTilingSet(&client); |
81 set->AddTiling(2.0, raster_source); | 81 set->AddTiling(2.0, raster_source); |
82 high_res_tiling = set->AddTiling(1.0, raster_source); | 82 high_res_tiling = set->AddTiling(1.0, raster_source); |
83 high_res_tiling->set_resolution(HIGH_RESOLUTION); | 83 high_res_tiling->set_resolution(HIGH_RESOLUTION); |
84 set->AddTiling(0.5, raster_source); | 84 set->AddTiling(0.5, raster_source); |
85 low_res_tiling = set->AddTiling(0.25, raster_source); | 85 low_res_tiling = set->AddTiling(0.25, raster_source); |
86 low_res_tiling->set_resolution(LOW_RESOLUTION); | 86 low_res_tiling->set_resolution(LOW_RESOLUTION); |
87 set->AddTiling(0.125, raster_source); | 87 set->AddTiling(0.125, raster_source); |
88 | 88 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 218 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
219 new TestSharedBitmapManager()); | 219 new TestSharedBitmapManager()); |
220 scoped_ptr<ResourceProvider> resource_provider = | 220 scoped_ptr<ResourceProvider> resource_provider = |
221 FakeResourceProvider::Create(output_surface.get(), | 221 FakeResourceProvider::Create(output_surface.get(), |
222 shared_bitmap_manager.get()); | 222 shared_bitmap_manager.get()); |
223 | 223 |
224 FakePictureLayerTilingClient client(resource_provider.get()); | 224 FakePictureLayerTilingClient client(resource_provider.get()); |
225 client.SetTileSize(gfx::Size(256, 256)); | 225 client.SetTileSize(gfx::Size(256, 256)); |
226 gfx::Size layer_bounds(1000, 800); | 226 gfx::Size layer_bounds(1000, 800); |
227 scoped_ptr<PictureLayerTilingSet> set = CreateTilingSet(&client); | 227 scoped_ptr<PictureLayerTilingSet> set = CreateTilingSet(&client); |
228 scoped_refptr<FakeDisplayListRasterSource> raster_source = | 228 scoped_refptr<FakeRasterSource> raster_source = |
229 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 229 FakeRasterSource::CreateFilled(layer_bounds); |
230 | 230 |
231 float scale = min_scale; | 231 float scale = min_scale; |
232 for (int i = 0; i < num_tilings; ++i, scale += scale_increment) { | 232 for (int i = 0; i < num_tilings; ++i, scale += scale_increment) { |
233 PictureLayerTiling* tiling = set->AddTiling(scale, raster_source); | 233 PictureLayerTiling* tiling = set->AddTiling(scale, raster_source); |
234 tiling->set_resolution(HIGH_RESOLUTION); | 234 tiling->set_resolution(HIGH_RESOLUTION); |
235 tiling->CreateAllTilesForTesting(); | 235 tiling->CreateAllTilesForTesting(); |
236 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); | 236 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); |
237 client.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 237 client.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
238 } | 238 } |
239 | 239 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 | 298 |
299 TEST(PictureLayerTilingSetTest, TileSizeChange) { | 299 TEST(PictureLayerTilingSetTest, TileSizeChange) { |
300 FakePictureLayerTilingClient pending_client; | 300 FakePictureLayerTilingClient pending_client; |
301 FakePictureLayerTilingClient active_client; | 301 FakePictureLayerTilingClient active_client; |
302 scoped_ptr<PictureLayerTilingSet> pending_set = PictureLayerTilingSet::Create( | 302 scoped_ptr<PictureLayerTilingSet> pending_set = PictureLayerTilingSet::Create( |
303 PENDING_TREE, &pending_client, 1000, 1.f, 1000); | 303 PENDING_TREE, &pending_client, 1000, 1.f, 1000); |
304 scoped_ptr<PictureLayerTilingSet> active_set = PictureLayerTilingSet::Create( | 304 scoped_ptr<PictureLayerTilingSet> active_set = PictureLayerTilingSet::Create( |
305 ACTIVE_TREE, &active_client, 1000, 1.f, 1000); | 305 ACTIVE_TREE, &active_client, 1000, 1.f, 1000); |
306 | 306 |
307 gfx::Size layer_bounds(100, 100); | 307 gfx::Size layer_bounds(100, 100); |
308 scoped_refptr<FakeDisplayListRasterSource> raster_source = | 308 scoped_refptr<FakeRasterSource> raster_source = |
309 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 309 FakeRasterSource::CreateFilled(layer_bounds); |
310 | 310 |
311 gfx::Size tile_size1(10, 10); | 311 gfx::Size tile_size1(10, 10); |
312 gfx::Size tile_size2(30, 30); | 312 gfx::Size tile_size2(30, 30); |
313 gfx::Size tile_size3(20, 20); | 313 gfx::Size tile_size3(20, 20); |
314 | 314 |
315 pending_client.SetTileSize(tile_size1); | 315 pending_client.SetTileSize(tile_size1); |
316 pending_set->AddTiling(1.f, raster_source); | 316 pending_set->AddTiling(1.f, raster_source); |
317 // New tilings get the correct tile size. | 317 // New tilings get the correct tile size. |
318 EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); | 318 EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); |
319 | 319 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 | 405 |
406 TEST(PictureLayerTilingSetTest, MaxContentScale) { | 406 TEST(PictureLayerTilingSetTest, MaxContentScale) { |
407 FakePictureLayerTilingClient pending_client; | 407 FakePictureLayerTilingClient pending_client; |
408 FakePictureLayerTilingClient active_client; | 408 FakePictureLayerTilingClient active_client; |
409 scoped_ptr<PictureLayerTilingSet> pending_set = PictureLayerTilingSet::Create( | 409 scoped_ptr<PictureLayerTilingSet> pending_set = PictureLayerTilingSet::Create( |
410 PENDING_TREE, &pending_client, 1000, 1.f, 1000); | 410 PENDING_TREE, &pending_client, 1000, 1.f, 1000); |
411 scoped_ptr<PictureLayerTilingSet> active_set = PictureLayerTilingSet::Create( | 411 scoped_ptr<PictureLayerTilingSet> active_set = PictureLayerTilingSet::Create( |
412 ACTIVE_TREE, &active_client, 1000, 1.f, 1000); | 412 ACTIVE_TREE, &active_client, 1000, 1.f, 1000); |
413 | 413 |
414 gfx::Size layer_bounds(100, 105); | 414 gfx::Size layer_bounds(100, 105); |
415 scoped_refptr<FakeDisplayListRasterSource> raster_source = | 415 scoped_refptr<FakeRasterSource> raster_source = |
416 FakeDisplayListRasterSource::CreateEmpty(layer_bounds); | 416 FakeRasterSource::CreateEmpty(layer_bounds); |
417 | 417 |
418 // Tilings can be added of any scale, the tiling client can controls this. | 418 // Tilings can be added of any scale, the tiling client can controls this. |
419 pending_set->AddTiling(1.f, raster_source); | 419 pending_set->AddTiling(1.f, raster_source); |
420 pending_set->AddTiling(2.f, raster_source); | 420 pending_set->AddTiling(2.f, raster_source); |
421 pending_set->AddTiling(3.f, raster_source); | 421 pending_set->AddTiling(3.f, raster_source); |
422 | 422 |
423 // Set some expected things for the tiling set to function. | 423 // Set some expected things for the tiling set to function. |
424 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); | 424 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
425 active_client.set_twin_tiling_set(pending_set.get()); | 425 active_client.set_twin_tiling_set(pending_set.get()); |
426 | 426 |
(...skipping 24 matching lines...) Expand all Loading... |
451 | 451 |
452 // Clone from the pending to the active tree with the same max content size. | 452 // Clone from the pending to the active tree with the same max content size. |
453 active_set->UpdateTilingsToCurrentRasterSourceForActivation( | 453 active_set->UpdateTilingsToCurrentRasterSourceForActivation( |
454 raster_source.get(), pending_set.get(), Region(), 1.f, max_content_scale); | 454 raster_source.get(), pending_set.get(), Region(), 1.f, max_content_scale); |
455 // All the tilings are on the active tree. | 455 // All the tilings are on the active tree. |
456 EXPECT_EQ(2u, active_set->num_tilings()); | 456 EXPECT_EQ(2u, active_set->num_tilings()); |
457 } | 457 } |
458 | 458 |
459 } // namespace | 459 } // namespace |
460 } // namespace cc | 460 } // namespace cc |
OLD | NEW |