OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |