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

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 12865017: Makes tile-creation lazy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressing last round of feedback Created 7 years, 8 months 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/layers/picture_layer_impl.cc ('k') | cc/resources/picture_layer_tiling.h » ('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 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/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "cc/layers/picture_layer.h" 9 #include "cc/layers/picture_layer.h"
10 #include "cc/test/fake_content_layer_client.h" 10 #include "cc/test/fake_content_layer_client.h"
(...skipping 14 matching lines...) Expand all
25 static scoped_ptr<TestablePictureLayerImpl> Create( 25 static scoped_ptr<TestablePictureLayerImpl> Create(
26 LayerTreeImpl* tree_impl, 26 LayerTreeImpl* tree_impl,
27 int id, 27 int id,
28 scoped_refptr<PicturePileImpl> pile) { 28 scoped_refptr<PicturePileImpl> pile) {
29 return make_scoped_ptr(new TestablePictureLayerImpl(tree_impl, id, pile)); 29 return make_scoped_ptr(new TestablePictureLayerImpl(tree_impl, id, pile));
30 } 30 }
31 31
32 PictureLayerTilingSet& tilings() { return *tilings_; } 32 PictureLayerTilingSet& tilings() { return *tilings_; }
33 Region& invalidation() { return invalidation_; } 33 Region& invalidation() { return invalidation_; }
34 34
35 virtual gfx::Size CalculateTileSize(
36 gfx::Size current_tile_size,
37 gfx::Size content_bounds) OVERRIDE {
38 if (current_tile_size.IsEmpty())
39 return gfx::Size(100, 100);
40 return current_tile_size;
41 }
42
43 using PictureLayerImpl::AddTiling; 35 using PictureLayerImpl::AddTiling;
44 using PictureLayerImpl::CleanUpTilingsOnActiveLayer; 36 using PictureLayerImpl::CleanUpTilingsOnActiveLayer;
45 37
46 private: 38 private:
47 TestablePictureLayerImpl( 39 TestablePictureLayerImpl(
48 LayerTreeImpl* tree_impl, 40 LayerTreeImpl* tree_impl,
49 int id, 41 int id,
50 scoped_refptr<PicturePileImpl> pile) 42 scoped_refptr<PicturePileImpl> pile)
51 : PictureLayerImpl(tree_impl, id) { 43 : PictureLayerImpl(tree_impl, id) {
52 pile_ = pile; 44 pile_ = pile;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 154
163 SetupPendingTree(pending_pile); 155 SetupPendingTree(pending_pile);
164 pending_layer_ = static_cast<TestablePictureLayerImpl*>( 156 pending_layer_ = static_cast<TestablePictureLayerImpl*>(
165 host_impl_.pending_tree()->LayerById(id_)); 157 host_impl_.pending_tree()->LayerById(id_));
166 } 158 }
167 159
168 void AddDefaultTilingsWithInvalidation(const Region& invalidation) { 160 void AddDefaultTilingsWithInvalidation(const Region& invalidation) {
169 active_layer_->AddTiling(2.3f); 161 active_layer_->AddTiling(2.3f);
170 active_layer_->AddTiling(1.0f); 162 active_layer_->AddTiling(1.0f);
171 active_layer_->AddTiling(0.5f); 163 active_layer_->AddTiling(0.5f);
164 for (size_t i = 0; i < active_layer_->tilings().num_tilings(); ++i)
165 active_layer_->tilings().tiling_at(i)->CreateAllTilesForTesting();
172 pending_layer_->invalidation() = invalidation; 166 pending_layer_->invalidation() = invalidation;
173 pending_layer_->SyncFromActiveLayer(); 167 pending_layer_->SyncFromActiveLayer();
168 for (size_t i = 0; i < pending_layer_->tilings().num_tilings(); ++i)
169 pending_layer_->tilings().tiling_at(i)->CreateAllTilesForTesting();
174 } 170 }
175 171
176 void SetupPendingTree( 172 void SetupPendingTree(
177 scoped_refptr<PicturePileImpl> pile) { 173 scoped_refptr<PicturePileImpl> pile) {
178 host_impl_.CreatePendingTree(); 174 host_impl_.CreatePendingTree();
179 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); 175 LayerTreeImpl* pending_tree = host_impl_.pending_tree();
180 // Clear recycled tree. 176 // Clear recycled tree.
181 pending_tree->DetachLayerTree(); 177 pending_tree->DetachLayerTree();
182 178
183 scoped_ptr<TestablePictureLayerImpl> pending_layer = 179 scoped_ptr<TestablePictureLayerImpl> pending_layer =
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 220
225 SetupTrees(pending_pile, active_pile); 221 SetupTrees(pending_pile, active_pile);
226 222
227 host_impl_.active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, 1.f); 223 host_impl_.active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, 1.f);
228 float result_scale_x, result_scale_y; 224 float result_scale_x, result_scale_y;
229 gfx::Size result_bounds; 225 gfx::Size result_bounds;
230 active_layer_->CalculateContentsScale( 226 active_layer_->CalculateContentsScale(
231 1.f, false, &result_scale_x, &result_scale_y, &result_bounds); 227 1.f, false, &result_scale_x, &result_scale_y, &result_bounds);
232 228
233 // Add 1x1 rects at the centers of each tile, then re-record pile contents 229 // Add 1x1 rects at the centers of each tile, then re-record pile contents
230 active_layer_->tilings().tiling_at(0)->CreateAllTilesForTesting();
234 std::vector<Tile*> tiles = 231 std::vector<Tile*> tiles =
235 active_layer_->tilings().tiling_at(0)->AllTilesForTesting(); 232 active_layer_->tilings().tiling_at(0)->AllTilesForTesting();
236 EXPECT_EQ(16u, tiles.size()); 233 EXPECT_EQ(16u, tiles.size());
237 std::vector<SkRect> rects; 234 std::vector<SkRect> rects;
238 std::vector<Tile*>::const_iterator tile_iter; 235 std::vector<Tile*>::const_iterator tile_iter;
239 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { 236 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) {
240 gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint(); 237 gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint();
241 gfx::Rect rect(tile_center.x(), tile_center.y(), 1, 1); 238 gfx::Rect rect(tile_center.x(), tile_center.y(), 1, 1);
242 active_pile->add_draw_rect(rect); 239 active_pile->add_draw_rect(rect);
243 rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1)); 240 rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1));
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 gfx::Rect(active_layer_bounds), 391 gfx::Rect(active_layer_bounds),
395 tiling->contents_scale())); 392 tiling->contents_scale()));
396 for (PictureLayerTiling::CoverageIterator 393 for (PictureLayerTiling::CoverageIterator
397 iter(tiling, 394 iter(tiling,
398 tiling->contents_scale(), 395 tiling->contents_scale(),
399 tiling->ContentRect()); 396 tiling->ContentRect());
400 iter; 397 iter;
401 ++iter) { 398 ++iter) {
402 EXPECT_TRUE(*iter); 399 EXPECT_TRUE(*iter);
403 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); 400 EXPECT_FALSE(iter.geometry_rect().IsEmpty());
401 std::vector<Tile*> active_tiles =
402 active_layer_->tilings().tiling_at(i)->AllTilesForTesting();
403 std::vector<Tile*> pending_tiles = tiling->AllTilesForTesting();
404 if (iter.geometry_rect().right() >= active_content_bounds.width() || 404 if (iter.geometry_rect().right() >= active_content_bounds.width() ||
405 iter.geometry_rect().bottom() >= active_content_bounds.height()) { 405 iter.geometry_rect().bottom() >= active_content_bounds.height() ||
406 active_tiles[0]->content_rect().size() !=
407 pending_tiles[0]->content_rect().size()) {
406 EXPECT_EQ(pending_pile, iter->picture_pile()); 408 EXPECT_EQ(pending_pile, iter->picture_pile());
407 } else { 409 } else {
408 EXPECT_EQ(active_pile, iter->picture_pile()); 410 EXPECT_EQ(active_pile, iter->picture_pile());
409 } 411 }
410 } 412 }
411 } 413 }
412 } 414 }
413 415
414 TEST_F(PictureLayerImplTest, AddTilesFromNewRecording) { 416 TEST_F(PictureLayerImplTest, AddTilesFromNewRecording) {
415 gfx::Size tile_size(400, 400); 417 gfx::Size tile_size(400, 400);
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 EXPECT_EQ(0u, pending_layer_->tilings().num_tilings()); 724 EXPECT_EQ(0u, pending_layer_->tilings().num_tilings());
723 725
724 // This should create new tilings. 726 // This should create new tilings.
725 pending_layer_->CalculateContentsScale( 727 pending_layer_->CalculateContentsScale(
726 1.3f, false, &result_scale_x, &result_scale_y, &result_bounds); 728 1.3f, false, &result_scale_x, &result_scale_y, &result_bounds);
727 EXPECT_EQ(2u, pending_layer_->tilings().num_tilings()); 729 EXPECT_EQ(2u, pending_layer_->tilings().num_tilings());
728 } 730 }
729 731
730 } // namespace 732 } // namespace
731 } // namespace cc 733 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/resources/picture_layer_tiling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698