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

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

Issue 62283012: cc: Added tile bundles (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: perftest fix 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
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"
15 #include "cc/test/fake_tile_manager_client.h" 16 #include "cc/test/fake_tile_manager_client.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #include "ui/gfx/size_conversions.h" 18 #include "ui/gfx/size_conversions.h"
18 19
19 namespace cc { 20 namespace cc {
20 namespace { 21 namespace {
21 22
22 TEST(PictureLayerTilingSetTest, NoResources) { 23 TEST(PictureLayerTilingSetTest, NoResources) {
23 FakePictureLayerTilingClient client; 24 FakePictureLayerTilingClient client;
24 gfx::Size layer_bounds(1000, 800); 25 gfx::Size layer_bounds(1000, 800);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 } 146 }
146 147
147 class PictureLayerTilingSetSyncTest : public testing::Test { 148 class PictureLayerTilingSetSyncTest : public testing::Test {
148 public: 149 public:
149 PictureLayerTilingSetSyncTest() 150 PictureLayerTilingSetSyncTest()
150 : tile_size_(gfx::Size(10, 10)), 151 : tile_size_(gfx::Size(10, 10)),
151 source_bounds_(gfx::Size(30, 20)), 152 source_bounds_(gfx::Size(30, 20)),
152 target_bounds_(gfx::Size(30, 30)) { 153 target_bounds_(gfx::Size(30, 30)) {
153 source_client_.SetTileSize(tile_size_); 154 source_client_.SetTileSize(tile_size_);
154 target_client_.SetTileSize(tile_size_); 155 target_client_.SetTileSize(tile_size_);
156
157 output_surface_ = FakeOutputSurface::Create3d();
158 CHECK(output_surface_->BindToClient(&output_surface_client_));
159 resource_provider_ =
160 ResourceProvider::Create(output_surface_.get(), NULL, 0, false, 1);
161 tile_manager_ = make_scoped_ptr(
162 new FakeTileManager(&tile_manager_client_, resource_provider_.get()));
163 source_client_.set_tile_manager(tile_manager_.get());
164 target_client_.set_tile_manager(tile_manager_.get());
165
155 source_.reset(new PictureLayerTilingSet(&source_client_, source_bounds_)); 166 source_.reset(new PictureLayerTilingSet(&source_client_, source_bounds_));
156 target_.reset(new PictureLayerTilingSet(&target_client_, target_bounds_)); 167 target_.reset(new PictureLayerTilingSet(&target_client_, target_bounds_));
157 } 168 }
158 169
170 ~PictureLayerTilingSetSyncTest() {
171 source_.reset(NULL);
172 target_.reset(NULL);
173 tile_manager_.reset(NULL);
174 resource_provider_.reset(NULL);
175 }
176
159 // Sync from source to target. 177 // Sync from source to target.
160 void SyncTilings(gfx::Size new_bounds, 178 void SyncTilings(gfx::Size new_bounds,
161 const Region& invalidation, 179 const Region& invalidation,
162 float minimum_scale) { 180 float minimum_scale) {
181 target_client_.MarkPending();
182 source_client_.MarkActive();
163 for (size_t i = 0; i < source_->num_tilings(); ++i) 183 for (size_t i = 0; i < source_->num_tilings(); ++i)
164 source_->tiling_at(i)->CreateAllTilesForTesting(); 184 source_->tiling_at(i)->CreateAllActiveTilesForTesting();
165 for (size_t i = 0; i < target_->num_tilings(); ++i) 185 for (size_t i = 0; i < target_->num_tilings(); ++i)
166 target_->tiling_at(i)->CreateAllTilesForTesting(); 186 target_->tiling_at(i)->CreateAllPendingTilesForTesting();
167 187
168 target_->SyncTilings( 188 target_->SyncTilings(
169 *source_.get(), new_bounds, invalidation, minimum_scale); 189 *source_.get(), new_bounds, invalidation, minimum_scale);
170 } 190 }
171 void SyncTilings(gfx::Size new_bounds) { 191 void SyncTilings(gfx::Size new_bounds) {
172 Region invalidation; 192 Region invalidation;
173 SyncTilings(new_bounds, invalidation, 0.f); 193 SyncTilings(new_bounds, invalidation, 0.f);
174 } 194 }
175 void SyncTilings(gfx::Size new_bounds, const Region& invalidation) { 195 void SyncTilings(gfx::Size new_bounds, const Region& invalidation) {
176 SyncTilings(new_bounds, invalidation, 0.f); 196 SyncTilings(new_bounds, invalidation, 0.f);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 ValidateTiling(target_->tiling_at(i), target_client_.pile()); 235 ValidateTiling(target_->tiling_at(i), target_client_.pile());
216 } 236 }
217 237
218 void ValidateTiling(const PictureLayerTiling* tiling, 238 void ValidateTiling(const PictureLayerTiling* tiling,
219 const PicturePileImpl* pile) const { 239 const PicturePileImpl* pile) const {
220 if (tiling->ContentRect().IsEmpty()) 240 if (tiling->ContentRect().IsEmpty())
221 EXPECT_TRUE(tiling->live_tiles_rect().IsEmpty()); 241 EXPECT_TRUE(tiling->live_tiles_rect().IsEmpty());
222 else if (!tiling->live_tiles_rect().IsEmpty()) 242 else if (!tiling->live_tiles_rect().IsEmpty())
223 EXPECT_TRUE(tiling->ContentRect().Contains(tiling->live_tiles_rect())); 243 EXPECT_TRUE(tiling->ContentRect().Contains(tiling->live_tiles_rect()));
224 244
225 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); 245 std::vector<Tile*> tiles = tiling->AllPendingTilesForTesting();
226 for (size_t i = 0; i < tiles.size(); ++i) { 246 for (size_t i = 0; i < tiles.size(); ++i) {
227 const Tile* tile = tiles[i]; 247 const Tile* tile = tiles[i];
228 ASSERT_TRUE(!!tile); 248 ASSERT_TRUE(!!tile);
229 EXPECT_EQ(tile->picture_pile(), pile); 249 EXPECT_EQ(tile->picture_pile(), pile);
230 EXPECT_TRUE(tile->content_rect().Intersects(tiling->live_tiles_rect())) 250 EXPECT_TRUE(tile->content_rect().Intersects(tiling->live_tiles_rect()))
231 << "All tiles must be inside the live tiles rect."; 251 << "All tiles must be inside the live tiles rect.";
232 } 252 }
233 253
234 for (PictureLayerTiling::CoverageIterator iter( 254 for (PictureLayerTiling::CoverageIterator iter(
235 tiling, tiling->contents_scale(), tiling->live_tiles_rect()); 255 tiling, tiling->contents_scale(), tiling->live_tiles_rect());
236 iter; 256 iter;
237 ++iter) { 257 ++iter) {
238 EXPECT_TRUE(*iter) << "The live tiles rect must be full."; 258 EXPECT_TRUE(*iter) << "The live tiles rect must be full.";
239 } 259 }
240 } 260 }
241 261
242 gfx::Size tile_size_; 262 gfx::Size tile_size_;
243 263
244 FakePictureLayerTilingClient source_client_; 264 FakePictureLayerTilingClient source_client_;
245 gfx::Size source_bounds_; 265 gfx::Size source_bounds_;
246 scoped_ptr<PictureLayerTilingSet> source_; 266 scoped_ptr<PictureLayerTilingSet> source_;
247 267
248 FakePictureLayerTilingClient target_client_; 268 FakePictureLayerTilingClient target_client_;
249 gfx::Size target_bounds_; 269 gfx::Size target_bounds_;
250 scoped_ptr<PictureLayerTilingSet> target_; 270 scoped_ptr<PictureLayerTilingSet> target_;
271
272 FakeTileManagerClient tile_manager_client_;
273 scoped_ptr<FakeTileManager> tile_manager_;
274 scoped_ptr<ResourceProvider> resource_provider_;
275 scoped_ptr<FakeOutputSurface> output_surface_;
276 FakeOutputSurfaceClient output_surface_client_;
251 }; 277 };
252 278
253 TEST_F(PictureLayerTilingSetSyncTest, EmptyBounds) { 279 TEST_F(PictureLayerTilingSetSyncTest, EmptyBounds) {
254 float source_scales[] = {1.f, 1.2f}; 280 float source_scales[] = {1.f, 1.2f};
255 for (size_t i = 0; i < arraysize(source_scales); ++i) 281 for (size_t i = 0; i < arraysize(source_scales); ++i)
256 source_->AddTiling(source_scales[i]); 282 source_->AddTiling(source_scales[i]);
257 283
258 gfx::Size new_bounds; 284 gfx::Size new_bounds;
259 SyncTilings(new_bounds); 285 SyncTilings(new_bounds);
260 EXPECT_EQ(target_->num_tilings(), 0u); 286 EXPECT_EQ(target_->num_tilings(), 0u);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 SyncTilings(new_bounds, minimum_scale); 367 SyncTilings(new_bounds, minimum_scale);
342 368
343 EXPECT_EQ(target_->num_tilings(), 1u); 369 EXPECT_EQ(target_->num_tilings(), 1u);
344 EXPECT_EQ(target_->tiling_at(0)->contents_scale(), 2.f); 370 EXPECT_EQ(target_->tiling_at(0)->contents_scale(), 2.f);
345 ValidateTargetTilingSet(); 371 ValidateTargetTilingSet();
346 } 372 }
347 373
348 TEST_F(PictureLayerTilingSetSyncTest, Invalidation) { 374 TEST_F(PictureLayerTilingSetSyncTest, Invalidation) {
349 source_->AddTiling(2.f); 375 source_->AddTiling(2.f);
350 target_->AddTiling(2.f); 376 target_->AddTiling(2.f);
351 target_->tiling_at(0)->CreateAllTilesForTesting(); 377 target_->tiling_at(0)->CreateAllPendingTilesForTesting();
352 378
353 Region layer_invalidation; 379 Region layer_invalidation;
354 layer_invalidation.Union(gfx::Rect(0, 0, 1, 1)); 380 layer_invalidation.Union(gfx::Rect(0, 0, 1, 1));
355 layer_invalidation.Union(gfx::Rect(0, 15, 1, 1)); 381 layer_invalidation.Union(gfx::Rect(0, 15, 1, 1));
356 // Out of bounds layer_invalidation. 382 // Out of bounds layer_invalidation.
357 layer_invalidation.Union(gfx::Rect(100, 100, 1, 1)); 383 layer_invalidation.Union(gfx::Rect(100, 100, 1, 1));
358 384
359 Region content_invalidation; 385 Region content_invalidation;
360 for (Region::Iterator iter(layer_invalidation); iter.has_rect(); 386 for (Region::Iterator iter(layer_invalidation); iter.has_rect();
361 iter.next()) { 387 iter.next()) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 std::vector<Tile*> new_tiles = target_->tiling_at(0)->AllTilesForTesting(); 433 std::vector<Tile*> new_tiles = target_->tiling_at(0)->AllTilesForTesting();
408 for (size_t i = 0; i < original_tiles.size(); ++i) { 434 for (size_t i = 0; i < original_tiles.size(); ++i) {
409 std::vector<Tile*>::iterator find = 435 std::vector<Tile*>::iterator find =
410 std::find(new_tiles.begin(), new_tiles.end(), original_tiles[i]); 436 std::find(new_tiles.begin(), new_tiles.end(), original_tiles[i]);
411 EXPECT_TRUE(find == new_tiles.end()); 437 EXPECT_TRUE(find == new_tiles.end());
412 } 438 }
413 } 439 }
414 440
415 } // namespace 441 } // namespace
416 } // namespace cc 442 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698