Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: cc/resources/picture_layer_tiling_set_unittest.cc

Issue 98113005: Revert "cc: Added tile bundles" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/resources/picture_layer_tiling_set.cc ('k') | cc/resources/picture_layer_tiling_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_set.h" 5 #include "cc/resources/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_pool.h" 10 #include "cc/resources/resource_pool.h"
11 #include "cc/resources/resource_provider.h" 11 #include "cc/resources/resource_provider.h"
12 #include "cc/test/fake_output_surface.h" 12 #include "cc/test/fake_output_surface.h"
13 #include "cc/test/fake_output_surface_client.h" 13 #include "cc/test/fake_output_surface_client.h"
14 #include "cc/test/fake_picture_layer_tiling_client.h" 14 #include "cc/test/fake_picture_layer_tiling_client.h"
15 #include "cc/test/fake_tile_manager.h"
16 #include "cc/test/fake_tile_manager_client.h" 15 #include "cc/test/fake_tile_manager_client.h"
17 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
18 #include "ui/gfx/size_conversions.h" 17 #include "ui/gfx/size_conversions.h"
19 18
20 namespace cc { 19 namespace cc {
21 namespace { 20 namespace {
22 21
23 TEST(PictureLayerTilingSetTest, NoResources) { 22 TEST(PictureLayerTilingSetTest, NoResources) {
24 FakeTileManagerClient tile_manager_client; 23 FakePictureLayerTilingClient client;
25 FakeTileManager tile_manager(&tile_manager_client);
26 FakePictureLayerTilingClient client(&tile_manager);
27 gfx::Size layer_bounds(1000, 800); 24 gfx::Size layer_bounds(1000, 800);
28 PictureLayerTilingSet set(&client, layer_bounds); 25 PictureLayerTilingSet set(&client, layer_bounds);
29 client.SetTileSize(gfx::Size(256, 256)); 26 client.SetTileSize(gfx::Size(256, 256));
30 27
31 set.AddTiling(1.0); 28 set.AddTiling(1.0);
32 set.AddTiling(1.5); 29 set.AddTiling(1.5);
33 set.AddTiling(2.0); 30 set.AddTiling(2.0);
34 31
35 float contents_scale = 2.0; 32 float contents_scale = 2.0;
36 gfx::Size content_bounds( 33 gfx::Size content_bounds(
(...skipping 27 matching lines...) Expand all
64 float ideal_contents_scale, 61 float ideal_contents_scale,
65 float expected_scale) { 62 float expected_scale) {
66 FakeOutputSurfaceClient output_surface_client; 63 FakeOutputSurfaceClient output_surface_client;
67 scoped_ptr<FakeOutputSurface> output_surface = 64 scoped_ptr<FakeOutputSurface> output_surface =
68 FakeOutputSurface::Create3d(); 65 FakeOutputSurface::Create3d();
69 CHECK(output_surface->BindToClient(&output_surface_client)); 66 CHECK(output_surface->BindToClient(&output_surface_client));
70 67
71 scoped_ptr<ResourceProvider> resource_provider = 68 scoped_ptr<ResourceProvider> resource_provider =
72 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1); 69 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1);
73 70
74 FakeTileManagerClient tile_manager_client; 71 FakePictureLayerTilingClient client(resource_provider.get());
75 FakeTileManager tile_manager(&tile_manager_client, resource_provider.get());
76
77 FakePictureLayerTilingClient client(&tile_manager);
78 client.SetTileSize(gfx::Size(256, 256)); 72 client.SetTileSize(gfx::Size(256, 256));
79 gfx::Size layer_bounds(1000, 800); 73 gfx::Size layer_bounds(1000, 800);
80 PictureLayerTilingSet set(&client, layer_bounds); 74 PictureLayerTilingSet set(&client, layer_bounds);
81 75
82 float scale = min_scale; 76 float scale = min_scale;
83 for (int i = 0; i < num_tilings; ++i, scale += scale_increment) { 77 for (int i = 0; i < num_tilings; ++i, scale += scale_increment) {
84 PictureLayerTiling* tiling = set.AddTiling(scale); 78 PictureLayerTiling* tiling = set.AddTiling(scale);
85 tiling->CreateAllTilesForTesting(); 79 tiling->CreateAllTilesForTesting();
86 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); 80 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
87 client.tile_manager()->InitializeTilesWithResourcesForTesting( 81 client.tile_manager()->InitializeTilesWithResourcesForTesting(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 TEST_F(PictureLayerTilingSetTestWithResources, ManyTilings_NotEqual) { 143 TEST_F(PictureLayerTilingSetTestWithResources, ManyTilings_NotEqual) {
150 runTest(10, 1.f, 1.f, 4.5f, 5.f); 144 runTest(10, 1.f, 1.f, 4.5f, 5.f);
151 } 145 }
152 146
153 class PictureLayerTilingSetSyncTest : public testing::Test { 147 class PictureLayerTilingSetSyncTest : public testing::Test {
154 public: 148 public:
155 PictureLayerTilingSetSyncTest() 149 PictureLayerTilingSetSyncTest()
156 : tile_size_(gfx::Size(10, 10)), 150 : tile_size_(gfx::Size(10, 10)),
157 source_bounds_(gfx::Size(30, 20)), 151 source_bounds_(gfx::Size(30, 20)),
158 target_bounds_(gfx::Size(30, 30)) { 152 target_bounds_(gfx::Size(30, 30)) {
159 output_surface_ = FakeOutputSurface::Create3d(); 153 source_client_.SetTileSize(tile_size_);
160 CHECK(output_surface_->BindToClient(&output_surface_client_)); 154 target_client_.SetTileSize(tile_size_);
161 resource_provider_ = 155 source_.reset(new PictureLayerTilingSet(&source_client_, source_bounds_));
162 ResourceProvider::Create(output_surface_.get(), NULL, 0, false, 1); 156 target_.reset(new PictureLayerTilingSet(&target_client_, target_bounds_));
163 tile_manager_ = make_scoped_ptr(
164 new FakeTileManager(&tile_manager_client_, resource_provider_.get()));
165 source_client_ =
166 make_scoped_ptr(new FakePictureLayerTilingClient(tile_manager_.get()));
167 target_client_ =
168 make_scoped_ptr(new FakePictureLayerTilingClient(tile_manager_.get()));
169
170 source_client_->SetTileSize(tile_size_);
171 target_client_->SetTileSize(tile_size_);
172
173 source_.reset(
174 new PictureLayerTilingSet(source_client_.get(), source_bounds_));
175 target_.reset(
176 new PictureLayerTilingSet(target_client_.get(), target_bounds_));
177 } 157 }
178 158
179 // Sync from source to target. 159 // Sync from source to target.
180 void SyncTilings(gfx::Size new_bounds, 160 void SyncTilings(gfx::Size new_bounds,
181 const Region& invalidation, 161 const Region& invalidation,
182 float minimum_scale) { 162 float minimum_scale) {
183 for (size_t i = 0; i < source_->num_tilings(); ++i) 163 for (size_t i = 0; i < source_->num_tilings(); ++i)
184 source_->tiling_at(i)->CreateTilesForTesting(ACTIVE_TREE); 164 source_->tiling_at(i)->CreateAllTilesForTesting();
185 for (size_t i = 0; i < target_->num_tilings(); ++i) 165 for (size_t i = 0; i < target_->num_tilings(); ++i)
186 target_->tiling_at(i)->CreateTilesForTesting(PENDING_TREE); 166 target_->tiling_at(i)->CreateAllTilesForTesting();
187 167
188 target_->SyncTilings( 168 target_->SyncTilings(
189 *source_.get(), new_bounds, invalidation, minimum_scale); 169 *source_.get(), new_bounds, invalidation, minimum_scale);
190 } 170 }
191 void SyncTilings(gfx::Size new_bounds) { 171 void SyncTilings(gfx::Size new_bounds) {
192 Region invalidation; 172 Region invalidation;
193 SyncTilings(new_bounds, invalidation, 0.f); 173 SyncTilings(new_bounds, invalidation, 0.f);
194 } 174 }
195 void SyncTilings(gfx::Size new_bounds, const Region& invalidation) { 175 void SyncTilings(gfx::Size new_bounds, const Region& invalidation) {
196 SyncTilings(new_bounds, invalidation, 0.f); 176 SyncTilings(new_bounds, invalidation, 0.f);
(...skipping 11 matching lines...) Expand all
208 for (size_t i = 0; i < target_->num_tilings(); ++i) { 188 for (size_t i = 0; i < target_->num_tilings(); ++i) {
209 ASSERT_GT(source_->num_tilings(), i); 189 ASSERT_GT(source_->num_tilings(), i);
210 const PictureLayerTiling* source_tiling = source_->tiling_at(i); 190 const PictureLayerTiling* source_tiling = source_->tiling_at(i);
211 const PictureLayerTiling* target_tiling = target_->tiling_at(i); 191 const PictureLayerTiling* target_tiling = target_->tiling_at(i);
212 EXPECT_EQ(target_tiling->layer_bounds().ToString(), 192 EXPECT_EQ(target_tiling->layer_bounds().ToString(),
213 new_bounds.ToString()); 193 new_bounds.ToString());
214 EXPECT_EQ(source_tiling->contents_scale(), 194 EXPECT_EQ(source_tiling->contents_scale(),
215 target_tiling->contents_scale()); 195 target_tiling->contents_scale());
216 } 196 }
217 197
218 EXPECT_EQ(source_->client(), source_client_.get()); 198 EXPECT_EQ(source_->client(), &source_client_);
219 EXPECT_EQ(target_->client(), target_client_.get()); 199 EXPECT_EQ(target_->client(), &target_client_);
220 ValidateTargetTilingSet(); 200 ValidateTargetTilingSet();
221 } 201 }
222 202
223 void ValidateTargetTilingSet() const { 203 void ValidateTargetTilingSet() const {
224 // Tilings should be sorted largest to smallest. 204 // Tilings should be sorted largest to smallest.
225 if (target_->num_tilings() > 0) { 205 if (target_->num_tilings() > 0) {
226 float last_scale = target_->tiling_at(0)->contents_scale(); 206 float last_scale = target_->tiling_at(0)->contents_scale();
227 for (size_t i = 1; i < target_->num_tilings(); ++i) { 207 for (size_t i = 1; i < target_->num_tilings(); ++i) {
228 const PictureLayerTiling* target_tiling = target_->tiling_at(i); 208 const PictureLayerTiling* target_tiling = target_->tiling_at(i);
229 EXPECT_LT(target_tiling->contents_scale(), last_scale); 209 EXPECT_LT(target_tiling->contents_scale(), last_scale);
230 last_scale = target_tiling->contents_scale(); 210 last_scale = target_tiling->contents_scale();
231 } 211 }
232 } 212 }
233 213
234 for (size_t i = 0; i < target_->num_tilings(); ++i) 214 for (size_t i = 0; i < target_->num_tilings(); ++i)
235 ValidateTiling(target_->tiling_at(i), target_client_->pile()); 215 ValidateTiling(target_->tiling_at(i), target_client_.pile());
236 } 216 }
237 217
238 void ValidateTiling(const PictureLayerTiling* tiling, 218 void ValidateTiling(const PictureLayerTiling* tiling,
239 const PicturePileImpl* pile) const { 219 const PicturePileImpl* pile) const {
240 if (tiling->ContentRect().IsEmpty()) 220 if (tiling->ContentRect().IsEmpty())
241 EXPECT_TRUE(tiling->live_tiles_rect().IsEmpty()); 221 EXPECT_TRUE(tiling->live_tiles_rect().IsEmpty());
242 else if (!tiling->live_tiles_rect().IsEmpty()) 222 else if (!tiling->live_tiles_rect().IsEmpty())
243 EXPECT_TRUE(tiling->ContentRect().Contains(tiling->live_tiles_rect())); 223 EXPECT_TRUE(tiling->ContentRect().Contains(tiling->live_tiles_rect()));
244 224
245 std::vector<Tile*> tiles = tiling->TilesForTesting(PENDING_TREE); 225 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
246 for (size_t i = 0; i < tiles.size(); ++i) { 226 for (size_t i = 0; i < tiles.size(); ++i) {
247 const Tile* tile = tiles[i]; 227 const Tile* tile = tiles[i];
248 ASSERT_TRUE(!!tile); 228 ASSERT_TRUE(!!tile);
249 EXPECT_EQ(tile->picture_pile(), pile); 229 EXPECT_EQ(tile->picture_pile(), pile);
250 EXPECT_TRUE(tile->content_rect().Intersects(tiling->live_tiles_rect())) 230 EXPECT_TRUE(tile->content_rect().Intersects(tiling->live_tiles_rect()))
251 << "All tiles must be inside the live tiles rect."; 231 << "All tiles must be inside the live tiles rect.";
252 } 232 }
253 233
254 for (PictureLayerTiling::CoverageIterator iter( 234 for (PictureLayerTiling::CoverageIterator iter(
255 tiling, tiling->contents_scale(), tiling->live_tiles_rect()); 235 tiling, tiling->contents_scale(), tiling->live_tiles_rect());
256 iter; 236 iter;
257 ++iter) { 237 ++iter) {
258 EXPECT_TRUE(*iter) << "The live tiles rect must be full."; 238 EXPECT_TRUE(*iter) << "The live tiles rect must be full.";
259 } 239 }
260 } 240 }
261 241
262 scoped_ptr<FakeOutputSurface> output_surface_; 242 gfx::Size tile_size_;
263 FakeOutputSurfaceClient output_surface_client_;
264 243
265 gfx::Size tile_size_; 244 FakePictureLayerTilingClient source_client_;
266 scoped_ptr<ResourceProvider> resource_provider_;
267 scoped_ptr<FakeTileManager> tile_manager_;
268 FakeTileManagerClient tile_manager_client_;
269
270 scoped_ptr<FakePictureLayerTilingClient> source_client_;
271 gfx::Size source_bounds_; 245 gfx::Size source_bounds_;
272 scoped_ptr<PictureLayerTilingSet> source_; 246 scoped_ptr<PictureLayerTilingSet> source_;
273 247
274 scoped_ptr<FakePictureLayerTilingClient> target_client_; 248 FakePictureLayerTilingClient target_client_;
275 gfx::Size target_bounds_; 249 gfx::Size target_bounds_;
276 scoped_ptr<PictureLayerTilingSet> target_; 250 scoped_ptr<PictureLayerTilingSet> target_;
277 }; 251 };
278 252
279 TEST_F(PictureLayerTilingSetSyncTest, EmptyBounds) { 253 TEST_F(PictureLayerTilingSetSyncTest, EmptyBounds) {
280 float source_scales[] = {1.f, 1.2f}; 254 float source_scales[] = {1.f, 1.2f};
281 for (size_t i = 0; i < arraysize(source_scales); ++i) 255 for (size_t i = 0; i < arraysize(source_scales); ++i)
282 source_->AddTiling(source_scales[i]); 256 source_->AddTiling(source_scales[i]);
283 257
284 gfx::Size new_bounds; 258 gfx::Size new_bounds;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 SyncTilings(new_bounds, minimum_scale); 341 SyncTilings(new_bounds, minimum_scale);
368 342
369 EXPECT_EQ(target_->num_tilings(), 1u); 343 EXPECT_EQ(target_->num_tilings(), 1u);
370 EXPECT_EQ(target_->tiling_at(0)->contents_scale(), 2.f); 344 EXPECT_EQ(target_->tiling_at(0)->contents_scale(), 2.f);
371 ValidateTargetTilingSet(); 345 ValidateTargetTilingSet();
372 } 346 }
373 347
374 TEST_F(PictureLayerTilingSetSyncTest, Invalidation) { 348 TEST_F(PictureLayerTilingSetSyncTest, Invalidation) {
375 source_->AddTiling(2.f); 349 source_->AddTiling(2.f);
376 target_->AddTiling(2.f); 350 target_->AddTiling(2.f);
377 target_->tiling_at(0)->CreateTilesForTesting(PENDING_TREE); 351 target_->tiling_at(0)->CreateAllTilesForTesting();
378 352
379 Region layer_invalidation; 353 Region layer_invalidation;
380 layer_invalidation.Union(gfx::Rect(0, 0, 1, 1)); 354 layer_invalidation.Union(gfx::Rect(0, 0, 1, 1));
381 layer_invalidation.Union(gfx::Rect(0, 15, 1, 1)); 355 layer_invalidation.Union(gfx::Rect(0, 15, 1, 1));
382 // Out of bounds layer_invalidation. 356 // Out of bounds layer_invalidation.
383 layer_invalidation.Union(gfx::Rect(100, 100, 1, 1)); 357 layer_invalidation.Union(gfx::Rect(100, 100, 1, 1));
384 358
385 Region content_invalidation; 359 Region content_invalidation;
386 for (Region::Iterator iter(layer_invalidation); iter.has_rect(); 360 for (Region::Iterator iter(layer_invalidation); iter.has_rect();
387 iter.next()) { 361 iter.next()) {
(...skipping 23 matching lines...) Expand all
411 385
412 TEST_F(PictureLayerTilingSetSyncTest, TileSizeChange) { 386 TEST_F(PictureLayerTilingSetSyncTest, TileSizeChange) {
413 source_->AddTiling(1.f); 387 source_->AddTiling(1.f);
414 target_->AddTiling(1.f); 388 target_->AddTiling(1.f);
415 389
416 target_->tiling_at(0)->CreateAllTilesForTesting(); 390 target_->tiling_at(0)->CreateAllTilesForTesting();
417 std::vector<Tile*> original_tiles = 391 std::vector<Tile*> original_tiles =
418 target_->tiling_at(0)->AllTilesForTesting(); 392 target_->tiling_at(0)->AllTilesForTesting();
419 EXPECT_GT(original_tiles.size(), 0u); 393 EXPECT_GT(original_tiles.size(), 0u);
420 gfx::Size new_tile_size(100, 100); 394 gfx::Size new_tile_size(100, 100);
421 target_client_->SetTileSize(new_tile_size); 395 target_client_.SetTileSize(new_tile_size);
422 EXPECT_NE(target_->tiling_at(0)->tile_size().ToString(), 396 EXPECT_NE(target_->tiling_at(0)->tile_size().ToString(),
423 new_tile_size.ToString()); 397 new_tile_size.ToString());
424 398
425 gfx::Size new_bounds(15, 40); 399 gfx::Size new_bounds(15, 40);
426 SyncTilings(new_bounds); 400 SyncTilings(new_bounds);
427 VerifyTargetEqualsSource(new_bounds); 401 VerifyTargetEqualsSource(new_bounds);
428 402
429 EXPECT_EQ(target_->tiling_at(0)->tile_size().ToString(), 403 EXPECT_EQ(target_->tiling_at(0)->tile_size().ToString(),
430 new_tile_size.ToString()); 404 new_tile_size.ToString());
431 405
432 // All old tiles should not be present in new tiles. 406 // All old tiles should not be present in new tiles.
433 std::vector<Tile*> new_tiles = target_->tiling_at(0)->AllTilesForTesting(); 407 std::vector<Tile*> new_tiles = target_->tiling_at(0)->AllTilesForTesting();
434 for (size_t i = 0; i < original_tiles.size(); ++i) { 408 for (size_t i = 0; i < original_tiles.size(); ++i) {
435 std::vector<Tile*>::iterator find = 409 std::vector<Tile*>::iterator find =
436 std::find(new_tiles.begin(), new_tiles.end(), original_tiles[i]); 410 std::find(new_tiles.begin(), new_tiles.end(), original_tiles[i]);
437 EXPECT_TRUE(find == new_tiles.end()); 411 EXPECT_TRUE(find == new_tiles.end());
438 } 412 }
439 } 413 }
440 414
441 } // namespace 415 } // namespace
442 } // namespace cc 416 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_layer_tiling_set.cc ('k') | cc/resources/picture_layer_tiling_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698