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/resources/picture_layer_tiling.h" | 5 #include "cc/resources/picture_layer_tiling.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 | 76 |
77 class PictureLayerTilingIteratorTest : public testing::Test { | 77 class PictureLayerTilingIteratorTest : public testing::Test { |
78 public: | 78 public: |
79 PictureLayerTilingIteratorTest() {} | 79 PictureLayerTilingIteratorTest() {} |
80 virtual ~PictureLayerTilingIteratorTest() {} | 80 virtual ~PictureLayerTilingIteratorTest() {} |
81 | 81 |
82 void Initialize(const gfx::Size& tile_size, | 82 void Initialize(const gfx::Size& tile_size, |
83 float contents_scale, | 83 float contents_scale, |
84 const gfx::Size& layer_bounds) { | 84 const gfx::Size& layer_bounds) { |
85 client_.SetTileSize(tile_size); | 85 client_.SetTileSize(tile_size); |
| 86 client_.set_tree(PENDING_TREE); |
86 tiling_ = TestablePictureLayerTiling::Create(contents_scale, | 87 tiling_ = TestablePictureLayerTiling::Create(contents_scale, |
87 layer_bounds, | 88 layer_bounds, |
88 &client_); | 89 &client_); |
89 } | 90 } |
90 | 91 |
91 void SetLiveRectAndVerifyTiles(const gfx::Rect& live_tiles_rect) { | 92 void SetLiveRectAndVerifyTiles(const gfx::Rect& live_tiles_rect) { |
92 tiling_->SetLiveTilesRect(live_tiles_rect); | 93 tiling_->SetLiveTilesRect(live_tiles_rect); |
93 | 94 |
94 std::vector<Tile*> tiles = tiling_->AllTilesForTesting(); | 95 std::vector<Tile*> tiles = tiling_->AllTilesForTesting(); |
95 for (std::vector<Tile*>::iterator iter = tiles.begin(); | 96 for (std::vector<Tile*>::iterator iter = tiles.begin(); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 | 332 |
332 // Partially covering content, but too large | 333 // Partially covering content, but too large |
333 VerifyTilesCoverNonContainedRect(1.0f, gfx::Rect(-1000, 100, 2000, 100)); | 334 VerifyTilesCoverNonContainedRect(1.0f, gfx::Rect(-1000, 100, 2000, 100)); |
334 VerifyTilesCoverNonContainedRect(1.5f, gfx::Rect(-1000, 100, 2000, 100)); | 335 VerifyTilesCoverNonContainedRect(1.5f, gfx::Rect(-1000, 100, 2000, 100)); |
335 VerifyTilesCoverNonContainedRect(0.5f, gfx::Rect(-1000, 100, 2000, 100)); | 336 VerifyTilesCoverNonContainedRect(0.5f, gfx::Rect(-1000, 100, 2000, 100)); |
336 } | 337 } |
337 | 338 |
338 TEST(PictureLayerTilingTest, SkewportLimits) { | 339 TEST(PictureLayerTilingTest, SkewportLimits) { |
339 FakePictureLayerTilingClient client; | 340 FakePictureLayerTilingClient client; |
340 client.set_skewport_extrapolation_limit_in_content_pixels(75); | 341 client.set_skewport_extrapolation_limit_in_content_pixels(75); |
| 342 client.set_tree(ACTIVE_TREE); |
341 scoped_ptr<TestablePictureLayerTiling> tiling; | 343 scoped_ptr<TestablePictureLayerTiling> tiling; |
342 | 344 |
343 gfx::Rect viewport(0, 0, 100, 100); | 345 gfx::Rect viewport(0, 0, 100, 100); |
344 gfx::Size layer_bounds(200, 200); | 346 gfx::Size layer_bounds(200, 200); |
345 | 347 |
346 client.SetTileSize(gfx::Size(100, 100)); | 348 client.SetTileSize(gfx::Size(100, 100)); |
347 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 349 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
348 | 350 |
349 tiling->UpdateTilePriorities( | 351 tiling->UpdateTilePriorities( |
350 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); | 352 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 } | 405 } |
404 | 406 |
405 TEST(PictureLayerTilingTest, ComputeSkewport) { | 407 TEST(PictureLayerTilingTest, ComputeSkewport) { |
406 FakePictureLayerTilingClient client; | 408 FakePictureLayerTilingClient client; |
407 scoped_ptr<TestablePictureLayerTiling> tiling; | 409 scoped_ptr<TestablePictureLayerTiling> tiling; |
408 | 410 |
409 gfx::Rect viewport(0, 0, 100, 100); | 411 gfx::Rect viewport(0, 0, 100, 100); |
410 gfx::Size layer_bounds(200, 200); | 412 gfx::Size layer_bounds(200, 200); |
411 | 413 |
412 client.SetTileSize(gfx::Size(100, 100)); | 414 client.SetTileSize(gfx::Size(100, 100)); |
| 415 client.set_tree(ACTIVE_TREE); |
413 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 416 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
414 | 417 |
415 tiling->UpdateTilePriorities( | 418 tiling->UpdateTilePriorities( |
416 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); | 419 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); |
417 | 420 |
418 // Move viewport down 50 pixels in 0.5 seconds. | 421 // Move viewport down 50 pixels in 0.5 seconds. |
419 gfx::Rect down_skewport = | 422 gfx::Rect down_skewport = |
420 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 423 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
421 | 424 |
422 EXPECT_EQ(0, down_skewport.x()); | 425 EXPECT_EQ(0, down_skewport.x()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 } | 465 } |
463 | 466 |
464 TEST(PictureLayerTilingTest, ViewportDistanceWithScale) { | 467 TEST(PictureLayerTilingTest, ViewportDistanceWithScale) { |
465 FakePictureLayerTilingClient client; | 468 FakePictureLayerTilingClient client; |
466 scoped_ptr<TestablePictureLayerTiling> tiling; | 469 scoped_ptr<TestablePictureLayerTiling> tiling; |
467 | 470 |
468 gfx::Rect viewport(0, 0, 100, 100); | 471 gfx::Rect viewport(0, 0, 100, 100); |
469 gfx::Size layer_bounds(1500, 1500); | 472 gfx::Size layer_bounds(1500, 1500); |
470 | 473 |
471 client.SetTileSize(gfx::Size(10, 10)); | 474 client.SetTileSize(gfx::Size(10, 10)); |
| 475 client.set_tree(ACTIVE_TREE); |
472 | 476 |
473 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. | 477 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. |
474 // The reason is that each tile has a one pixel border, so tile at (1, 2) | 478 // The reason is that each tile has a one pixel border, so tile at (1, 2) |
475 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at | 479 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at |
476 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the | 480 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the |
477 // tiling. | 481 // tiling. |
478 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); | 482 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); |
479 gfx::Rect viewport_in_content_space = | 483 gfx::Rect viewport_in_content_space = |
480 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); | 484 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); |
481 | 485 |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 FakePictureLayerTilingClient client; | 853 FakePictureLayerTilingClient client; |
850 scoped_ptr<TestablePictureLayerTiling> tiling; | 854 scoped_ptr<TestablePictureLayerTiling> tiling; |
851 | 855 |
852 gfx::Rect viewport(50, 50, 100, 100); | 856 gfx::Rect viewport(50, 50, 100, 100); |
853 gfx::Size layer_bounds(800, 800); | 857 gfx::Size layer_bounds(800, 800); |
854 | 858 |
855 gfx::Rect soon_rect = viewport; | 859 gfx::Rect soon_rect = viewport; |
856 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 860 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
857 | 861 |
858 client.SetTileSize(gfx::Size(30, 30)); | 862 client.SetTileSize(gfx::Size(30, 30)); |
| 863 client.set_tree(ACTIVE_TREE); |
859 | 864 |
860 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 865 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
861 tiling->UpdateTilePriorities( | 866 tiling->UpdateTilePriorities( |
862 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 867 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
863 | 868 |
864 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 869 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
865 EXPECT_FALSE(empty_iterator); | 870 EXPECT_FALSE(empty_iterator); |
866 | 871 |
867 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 872 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
868 | 873 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
957 | 962 |
958 TEST(PictureLayerTilingTest, TilingRasterTileIteratorMovingViewport) { | 963 TEST(PictureLayerTilingTest, TilingRasterTileIteratorMovingViewport) { |
959 FakePictureLayerTilingClient client; | 964 FakePictureLayerTilingClient client; |
960 scoped_ptr<TestablePictureLayerTiling> tiling; | 965 scoped_ptr<TestablePictureLayerTiling> tiling; |
961 | 966 |
962 gfx::Rect viewport(50, 0, 100, 100); | 967 gfx::Rect viewport(50, 0, 100, 100); |
963 gfx::Rect moved_viewport(50, 0, 100, 500); | 968 gfx::Rect moved_viewport(50, 0, 100, 500); |
964 gfx::Size layer_bounds(1000, 1000); | 969 gfx::Size layer_bounds(1000, 1000); |
965 | 970 |
966 client.SetTileSize(gfx::Size(30, 30)); | 971 client.SetTileSize(gfx::Size(30, 30)); |
| 972 client.set_tree(ACTIVE_TREE); |
967 | 973 |
968 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); | 974 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); |
969 tiling->UpdateTilePriorities( | 975 tiling->UpdateTilePriorities( |
970 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 976 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
971 tiling->UpdateTilePriorities( | 977 tiling->UpdateTilePriorities( |
972 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, NULL, NULL, gfx::Transform()); | 978 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, NULL, NULL, gfx::Transform()); |
973 | 979 |
974 gfx::Rect soon_rect = moved_viewport; | 980 gfx::Rect soon_rect = moved_viewport; |
975 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 981 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
976 | 982 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1032 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( | 1038 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( |
1033 output_surface.get(), &shared_bitmap_manager, 0, false, 1, false); | 1039 output_surface.get(), &shared_bitmap_manager, 0, false, 1, false); |
1034 | 1040 |
1035 FakePictureLayerTilingClient client(resource_provider.get()); | 1041 FakePictureLayerTilingClient client(resource_provider.get()); |
1036 scoped_ptr<TestablePictureLayerTiling> tiling; | 1042 scoped_ptr<TestablePictureLayerTiling> tiling; |
1037 | 1043 |
1038 gfx::Rect viewport(50, 50, 100, 100); | 1044 gfx::Rect viewport(50, 50, 100, 100); |
1039 gfx::Size layer_bounds(200, 200); | 1045 gfx::Size layer_bounds(200, 200); |
1040 | 1046 |
1041 client.SetTileSize(gfx::Size(30, 30)); | 1047 client.SetTileSize(gfx::Size(30, 30)); |
| 1048 client.set_tree(ACTIVE_TREE); |
1042 | 1049 |
1043 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1050 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1044 tiling->UpdateTilePriorities( | 1051 tiling->UpdateTilePriorities( |
1045 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 1052 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
1046 | 1053 |
1047 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1054 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1048 EXPECT_FALSE(empty_iterator); | 1055 EXPECT_FALSE(empty_iterator); |
1049 | 1056 |
1050 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1057 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1051 | 1058 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1085 EXPECT_GT(all_tiles_set.size(), 0u); | 1092 EXPECT_GT(all_tiles_set.size(), 0u); |
1086 EXPECT_EQ(all_tiles_set, eviction_tiles); | 1093 EXPECT_EQ(all_tiles_set, eviction_tiles); |
1087 } | 1094 } |
1088 | 1095 |
1089 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { | 1096 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { |
1090 gfx::Size layer_bounds(1099, 801); | 1097 gfx::Size layer_bounds(1099, 801); |
1091 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1098 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1092 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1099 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1093 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1100 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1094 | 1101 |
| 1102 client_.set_tree(ACTIVE_TREE); |
1095 tiling_->UpdateTilePriorities( | 1103 tiling_->UpdateTilePriorities( |
1096 ACTIVE_TREE, | 1104 ACTIVE_TREE, |
1097 gfx::Rect(layer_bounds), // visible content rect | 1105 gfx::Rect(layer_bounds), // visible content rect |
1098 1.f, // current contents scale | 1106 1.f, // current contents scale |
1099 1.0, // current frame time | 1107 1.0, // current frame time |
1100 NULL, // occlusion tracker | 1108 NULL, // occlusion tracker |
1101 NULL, // render target | 1109 NULL, // render target |
1102 gfx::Transform()); // draw transform | 1110 gfx::Transform()); // draw transform |
1103 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1111 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1104 | 1112 |
1105 // Make the viewport rect empty. All tiles are killed and become zombies. | 1113 // Make the viewport rect empty. All tiles are killed and become zombies. |
1106 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1114 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1107 gfx::Rect(), // visible content rect | 1115 gfx::Rect(), // visible content rect |
1108 1.f, // current contents scale | 1116 1.f, // current contents scale |
1109 2.0, // current frame time | 1117 2.0, // current frame time |
1110 NULL, // occlusion tracker | 1118 NULL, // occlusion tracker |
1111 NULL, // render target | 1119 NULL, // render target |
1112 gfx::Transform()); // draw transform | 1120 gfx::Transform()); // draw transform |
1113 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1121 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1114 } | 1122 } |
1115 | 1123 |
1116 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { | 1124 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { |
1117 gfx::Size layer_bounds(1099, 801); | 1125 gfx::Size layer_bounds(1099, 801); |
1118 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1126 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1119 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1127 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1120 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1128 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1121 | 1129 |
1122 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); | 1130 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); |
1123 | 1131 |
| 1132 client_.set_tree(ACTIVE_TREE); |
1124 tiling_->UpdateTilePriorities( | 1133 tiling_->UpdateTilePriorities( |
1125 ACTIVE_TREE, | 1134 ACTIVE_TREE, |
1126 gfx::Rect(layer_bounds), // visible content rect | 1135 gfx::Rect(layer_bounds), // visible content rect |
1127 1.f, // current contents scale | 1136 1.f, // current contents scale |
1128 1.0, // current frame time | 1137 1.0, // current frame time |
1129 NULL, // occlusion tracker | 1138 NULL, // occlusion tracker |
1130 NULL, // render target | 1139 NULL, // render target |
1131 gfx::Transform()); // draw transform | 1140 gfx::Transform()); // draw transform |
1132 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1141 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1133 | 1142 |
(...skipping 12 matching lines...) Expand all Loading... |
1146 gfx::Size layer_bounds(1099, 801); | 1155 gfx::Size layer_bounds(1099, 801); |
1147 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1156 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1148 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1157 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1149 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1158 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1150 | 1159 |
1151 // This rect does not intersect with the layer, as the layer is outside the | 1160 // This rect does not intersect with the layer, as the layer is outside the |
1152 // viewport. | 1161 // viewport. |
1153 gfx::Rect viewport_rect(1100, 0, 1000, 1000); | 1162 gfx::Rect viewport_rect(1100, 0, 1000, 1000); |
1154 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); | 1163 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); |
1155 | 1164 |
| 1165 client_.set_tree(ACTIVE_TREE); |
1156 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1166 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1157 viewport_rect, // visible content rect | 1167 viewport_rect, // visible content rect |
1158 1.f, // current contents scale | 1168 1.f, // current contents scale |
1159 1.0, // current frame time | 1169 1.0, // current frame time |
1160 NULL, // occlusion tracker | 1170 NULL, // occlusion tracker |
1161 NULL, // render target | 1171 NULL, // render target |
1162 gfx::Transform()); // draw transform | 1172 gfx::Transform()); // draw transform |
1163 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1173 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1164 } | 1174 } |
1165 | 1175 |
(...skipping 10 matching lines...) Expand all Loading... |
1176 | 1186 |
1177 TEST_F(PictureLayerTilingIteratorTest, | 1187 TEST_F(PictureLayerTilingIteratorTest, |
1178 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { | 1188 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { |
1179 gfx::Size layer_bounds(10000, 10000); | 1189 gfx::Size layer_bounds(10000, 10000); |
1180 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1190 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1181 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1191 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1182 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1192 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1183 | 1193 |
1184 gfx::Rect visible_rect(8000, 8000, 50, 50); | 1194 gfx::Rect visible_rect(8000, 8000, 50, 50); |
1185 | 1195 |
| 1196 client_.set_tree(ACTIVE_TREE); |
1186 set_max_tiles_for_interest_area(1); | 1197 set_max_tiles_for_interest_area(1); |
1187 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1198 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1188 visible_rect, // visible content rect | 1199 visible_rect, // visible content rect |
1189 1.f, // current contents scale | 1200 1.f, // current contents scale |
1190 1.0, // current frame time | 1201 1.0, // current frame time |
1191 NULL, // occlusion tracker | 1202 NULL, // occlusion tracker |
1192 NULL, // render target | 1203 NULL, // render target |
1193 gfx::Transform()); // draw transform | 1204 gfx::Transform()); // draw transform |
1194 VerifyTiles(1.f, | 1205 VerifyTiles(1.f, |
1195 gfx::Rect(layer_bounds), | 1206 gfx::Rect(layer_bounds), |
1196 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); | 1207 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); |
1197 } | 1208 } |
1198 | 1209 |
1199 static void CountExistingTiles(int *count, | 1210 static void CountExistingTiles(int *count, |
1200 Tile* tile, | 1211 Tile* tile, |
1201 const gfx::Rect& geometry_rect) { | 1212 const gfx::Rect& geometry_rect) { |
1202 if (tile != NULL) | 1213 if (tile != NULL) |
1203 ++(*count); | 1214 ++(*count); |
1204 } | 1215 } |
1205 | 1216 |
1206 TEST_F(PictureLayerTilingIteratorTest, | 1217 TEST_F(PictureLayerTilingIteratorTest, |
1207 TilesExistLargeViewportAndLayerWithLargeVisibleArea) { | 1218 TilesExistLargeViewportAndLayerWithLargeVisibleArea) { |
1208 gfx::Size layer_bounds(10000, 10000); | 1219 gfx::Size layer_bounds(10000, 10000); |
1209 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1220 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1210 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1221 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1211 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1222 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1212 | 1223 |
| 1224 client_.set_tree(ACTIVE_TREE); |
1213 set_max_tiles_for_interest_area(1); | 1225 set_max_tiles_for_interest_area(1); |
1214 tiling_->UpdateTilePriorities( | 1226 tiling_->UpdateTilePriorities( |
1215 ACTIVE_TREE, | 1227 ACTIVE_TREE, |
1216 gfx::Rect(layer_bounds), // visible content rect | 1228 gfx::Rect(layer_bounds), // visible content rect |
1217 1.f, // current contents scale | 1229 1.f, // current contents scale |
1218 1.0, // current frame time | 1230 1.0, // current frame time |
1219 NULL, // occlusion tracker | 1231 NULL, // occlusion tracker |
1220 NULL, // render target | 1232 NULL, // render target |
1221 gfx::Transform()); // draw transform | 1233 gfx::Transform()); // draw transform |
1222 | 1234 |
1223 int num_tiles = 0; | 1235 int num_tiles = 0; |
1224 VerifyTiles(1.f, | 1236 VerifyTiles(1.f, |
1225 gfx::Rect(layer_bounds), | 1237 gfx::Rect(layer_bounds), |
1226 base::Bind(&CountExistingTiles, &num_tiles)); | 1238 base::Bind(&CountExistingTiles, &num_tiles)); |
1227 // If we're making a rect the size of one tile, it can only overlap up to 4 | 1239 // If we're making a rect the size of one tile, it can only overlap up to 4 |
1228 // tiles depending on its position. | 1240 // tiles depending on its position. |
1229 EXPECT_LE(num_tiles, 4); | 1241 EXPECT_LE(num_tiles, 4); |
1230 VerifyTiles(1.f, gfx::Rect(), base::Bind(&TileExists, false)); | 1242 VerifyTiles(1.f, gfx::Rect(), base::Bind(&TileExists, false)); |
1231 } | 1243 } |
1232 | 1244 |
1233 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { | 1245 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { |
1234 gfx::Size layer_bounds(1099, 801); | 1246 gfx::Size layer_bounds(1099, 801); |
1235 gfx::Size tile_size(100, 100); | 1247 gfx::Size tile_size(100, 100); |
1236 | 1248 |
1237 client_.SetTileSize(tile_size); | 1249 client_.SetTileSize(tile_size); |
| 1250 client_.set_tree(PENDING_TREE); |
1238 | 1251 |
1239 PictureLayerTilingSet active_set(&client_, layer_bounds); | 1252 PictureLayerTilingSet active_set(&client_, layer_bounds); |
1240 | 1253 |
1241 active_set.AddTiling(1.f); | 1254 active_set.AddTiling(1.f); |
1242 | 1255 |
1243 VerifyTiles(active_set.tiling_at(0), | 1256 VerifyTiles(active_set.tiling_at(0), |
1244 1.f, | 1257 1.f, |
1245 gfx::Rect(layer_bounds), | 1258 gfx::Rect(layer_bounds), |
1246 base::Bind(&TileExists, false)); | 1259 base::Bind(&TileExists, false)); |
1247 | 1260 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1293 gfx::Size last_layer_bounds(200, 200); | 1306 gfx::Size last_layer_bounds(200, 200); |
1294 gfx::Size current_layer_bounds(200, 200); | 1307 gfx::Size current_layer_bounds(200, 200); |
1295 float current_layer_contents_scale = 1.f; | 1308 float current_layer_contents_scale = 1.f; |
1296 gfx::Transform current_screen_transform; | 1309 gfx::Transform current_screen_transform; |
1297 double current_frame_time_in_seconds = 1.0; | 1310 double current_frame_time_in_seconds = 1.0; |
1298 | 1311 |
1299 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1312 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1300 current_screen_transform, device_viewport); | 1313 current_screen_transform, device_viewport); |
1301 | 1314 |
1302 client.SetTileSize(gfx::Size(100, 100)); | 1315 client.SetTileSize(gfx::Size(100, 100)); |
| 1316 client.set_tree(ACTIVE_TREE); |
1303 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1317 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1304 current_layer_bounds, | 1318 current_layer_bounds, |
1305 &client); | 1319 &client); |
1306 | 1320 |
1307 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1321 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1308 viewport_in_layer_space, | 1322 viewport_in_layer_space, |
1309 current_layer_contents_scale, | 1323 current_layer_contents_scale, |
1310 current_frame_time_in_seconds, | 1324 current_frame_time_in_seconds, |
1311 NULL, // occlusion tracker | 1325 NULL, // occlusion tracker |
1312 NULL, // render target | 1326 NULL, // render target |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1349 gfx::Transform current_screen_transform; | 1363 gfx::Transform current_screen_transform; |
1350 double current_frame_time_in_seconds = 1.0; | 1364 double current_frame_time_in_seconds = 1.0; |
1351 | 1365 |
1352 current_screen_transform.Translate(850, 0); | 1366 current_screen_transform.Translate(850, 0); |
1353 last_screen_transform = current_screen_transform; | 1367 last_screen_transform = current_screen_transform; |
1354 | 1368 |
1355 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1369 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1356 current_screen_transform, device_viewport); | 1370 current_screen_transform, device_viewport); |
1357 | 1371 |
1358 client.SetTileSize(gfx::Size(100, 100)); | 1372 client.SetTileSize(gfx::Size(100, 100)); |
| 1373 client.set_tree(ACTIVE_TREE); |
1359 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1374 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1360 current_layer_bounds, | 1375 current_layer_bounds, |
1361 &client); | 1376 &client); |
1362 | 1377 |
1363 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1378 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1364 viewport_in_layer_space, | 1379 viewport_in_layer_space, |
1365 current_layer_contents_scale, | 1380 current_layer_contents_scale, |
1366 current_frame_time_in_seconds, | 1381 current_frame_time_in_seconds, |
1367 NULL, // occlusion tracker | 1382 NULL, // occlusion tracker |
1368 NULL, // render target | 1383 NULL, // render target |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1415 gfx::Transform current_screen_transform; | 1430 gfx::Transform current_screen_transform; |
1416 double current_frame_time_in_seconds = 1.0; | 1431 double current_frame_time_in_seconds = 1.0; |
1417 | 1432 |
1418 current_screen_transform.Translate(705, 505); | 1433 current_screen_transform.Translate(705, 505); |
1419 last_screen_transform = current_screen_transform; | 1434 last_screen_transform = current_screen_transform; |
1420 | 1435 |
1421 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1436 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1422 current_screen_transform, device_viewport); | 1437 current_screen_transform, device_viewport); |
1423 | 1438 |
1424 client.SetTileSize(gfx::Size(100, 100)); | 1439 client.SetTileSize(gfx::Size(100, 100)); |
| 1440 client.set_tree(ACTIVE_TREE); |
1425 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1441 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1426 current_layer_bounds, | 1442 current_layer_bounds, |
1427 &client); | 1443 &client); |
1428 | 1444 |
1429 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1445 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1430 viewport_in_layer_space, | 1446 viewport_in_layer_space, |
1431 current_layer_contents_scale, | 1447 current_layer_contents_scale, |
1432 current_frame_time_in_seconds, | 1448 current_frame_time_in_seconds, |
1433 NULL, // occlusion tracker | 1449 NULL, // occlusion tracker |
1434 NULL, // render target | 1450 NULL, // render target |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1475 // A diagonally rotated layer that is partially off the bottom of the screen. | 1491 // A diagonally rotated layer that is partially off the bottom of the screen. |
1476 // In this configuration, only the top-left tile would be visible. | 1492 // In this configuration, only the top-left tile would be visible. |
1477 current_screen_transform.Translate(600, 750); | 1493 current_screen_transform.Translate(600, 750); |
1478 current_screen_transform.RotateAboutZAxis(45); | 1494 current_screen_transform.RotateAboutZAxis(45); |
1479 last_screen_transform = current_screen_transform; | 1495 last_screen_transform = current_screen_transform; |
1480 | 1496 |
1481 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1497 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1482 current_screen_transform, device_viewport); | 1498 current_screen_transform, device_viewport); |
1483 | 1499 |
1484 client.SetTileSize(gfx::Size(100, 100)); | 1500 client.SetTileSize(gfx::Size(100, 100)); |
| 1501 client.set_tree(ACTIVE_TREE); |
1485 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1502 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1486 current_layer_bounds, | 1503 current_layer_bounds, |
1487 &client); | 1504 &client); |
1488 | 1505 |
1489 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1506 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1490 viewport_in_layer_space, | 1507 viewport_in_layer_space, |
1491 current_layer_contents_scale, | 1508 current_layer_contents_scale, |
1492 current_frame_time_in_seconds, | 1509 current_frame_time_in_seconds, |
1493 NULL, // occlusion tracker | 1510 NULL, // occlusion tracker |
1494 NULL, // render target | 1511 NULL, // render target |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1559 bool clipped; | 1576 bool clipped; |
1560 MathUtil::MapQuad(current_screen_transform, | 1577 MathUtil::MapQuad(current_screen_transform, |
1561 gfx::QuadF(gfx::RectF(0, 0, 200, 200)), | 1578 gfx::QuadF(gfx::RectF(0, 0, 200, 200)), |
1562 &clipped); | 1579 &clipped); |
1563 ASSERT_FALSE(clipped); | 1580 ASSERT_FALSE(clipped); |
1564 | 1581 |
1565 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1582 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1566 current_screen_transform, device_viewport); | 1583 current_screen_transform, device_viewport); |
1567 | 1584 |
1568 client.SetTileSize(gfx::Size(100, 100)); | 1585 client.SetTileSize(gfx::Size(100, 100)); |
| 1586 client.set_tree(ACTIVE_TREE); |
1569 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1587 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1570 current_layer_bounds, | 1588 current_layer_bounds, |
1571 &client); | 1589 &client); |
1572 | 1590 |
1573 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1591 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1574 viewport_in_layer_space, | 1592 viewport_in_layer_space, |
1575 current_layer_contents_scale, | 1593 current_layer_contents_scale, |
1576 current_frame_time_in_seconds, | 1594 current_frame_time_in_seconds, |
1577 NULL, // occlusion tracker | 1595 NULL, // occlusion tracker |
1578 NULL, // render target | 1596 NULL, // render target |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1653 | 1671 |
1654 MathUtil::MapQuad(current_screen_transform, | 1672 MathUtil::MapQuad(current_screen_transform, |
1655 gfx::QuadF(gfx::RectF(100, 0, 100, 200)), | 1673 gfx::QuadF(gfx::RectF(100, 0, 100, 200)), |
1656 &clipped); | 1674 &clipped); |
1657 ASSERT_FALSE(clipped); | 1675 ASSERT_FALSE(clipped); |
1658 | 1676 |
1659 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1677 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1660 current_screen_transform, device_viewport); | 1678 current_screen_transform, device_viewport); |
1661 | 1679 |
1662 client.SetTileSize(gfx::Size(100, 100)); | 1680 client.SetTileSize(gfx::Size(100, 100)); |
| 1681 client.set_tree(ACTIVE_TREE); |
1663 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1682 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1664 current_layer_bounds, | 1683 current_layer_bounds, |
1665 &client); | 1684 &client); |
1666 | 1685 |
1667 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1686 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1668 viewport_in_layer_space, | 1687 viewport_in_layer_space, |
1669 current_layer_contents_scale, | 1688 current_layer_contents_scale, |
1670 current_frame_time_in_seconds, | 1689 current_frame_time_in_seconds, |
1671 NULL, // occlusion tracker | 1690 NULL, // occlusion tracker |
1672 NULL, // render target | 1691 NULL, // render target |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1717 double current_frame_time_in_seconds = 2.0; | 1736 double current_frame_time_in_seconds = 2.0; |
1718 | 1737 |
1719 // Offscreen layer is coming closer to viewport at 1000 pixels per second. | 1738 // Offscreen layer is coming closer to viewport at 1000 pixels per second. |
1720 current_screen_transform.Translate(1800, 0); | 1739 current_screen_transform.Translate(1800, 0); |
1721 last_screen_transform.Translate(2800, 0); | 1740 last_screen_transform.Translate(2800, 0); |
1722 | 1741 |
1723 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1742 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1724 current_screen_transform, device_viewport); | 1743 current_screen_transform, device_viewport); |
1725 | 1744 |
1726 client.SetTileSize(gfx::Size(100, 100)); | 1745 client.SetTileSize(gfx::Size(100, 100)); |
| 1746 client.set_tree(ACTIVE_TREE); |
1727 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1747 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1728 current_layer_bounds, | 1748 current_layer_bounds, |
1729 &client); | 1749 &client); |
1730 | 1750 |
1731 // previous ("last") frame | 1751 // previous ("last") frame |
1732 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1752 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1733 viewport_in_layer_space, | 1753 viewport_in_layer_space, |
1734 last_layer_contents_scale, | 1754 last_layer_contents_scale, |
1735 last_frame_time_in_seconds, | 1755 last_frame_time_in_seconds, |
1736 NULL, // occlusion tracker | 1756 NULL, // occlusion tracker |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1798 // because it is rotating toward the viewport. | 1818 // because it is rotating toward the viewport. |
1799 current_screen_transform.Translate(400, 550); | 1819 current_screen_transform.Translate(400, 550); |
1800 current_screen_transform.RotateAboutZAxis(45); | 1820 current_screen_transform.RotateAboutZAxis(45); |
1801 | 1821 |
1802 last_screen_transform.Translate(400, 550); | 1822 last_screen_transform.Translate(400, 550); |
1803 | 1823 |
1804 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1824 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1805 current_screen_transform, device_viewport); | 1825 current_screen_transform, device_viewport); |
1806 | 1826 |
1807 client.SetTileSize(gfx::Size(100, 100)); | 1827 client.SetTileSize(gfx::Size(100, 100)); |
| 1828 client.set_tree(ACTIVE_TREE); |
1808 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1829 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1809 current_layer_bounds, | 1830 current_layer_bounds, |
1810 &client); | 1831 &client); |
1811 | 1832 |
1812 // previous ("last") frame | 1833 // previous ("last") frame |
1813 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1834 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1814 viewport_in_layer_space, | 1835 viewport_in_layer_space, |
1815 last_layer_contents_scale, | 1836 last_layer_contents_scale, |
1816 last_frame_time_in_seconds, | 1837 last_frame_time_in_seconds, |
1817 NULL, // occlusion tracker | 1838 NULL, // occlusion tracker |
(...skipping 22 matching lines...) Expand all Loading... |
1840 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1861 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1841 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1862 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1842 | 1863 |
1843 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); | 1864 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); |
1844 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1865 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1845 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1866 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1846 } | 1867 } |
1847 | 1868 |
1848 } // namespace | 1869 } // namespace |
1849 } // namespace cc | 1870 } // namespace cc |
OLD | NEW |