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 <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 #include <utility> | 10 #include <utility> |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 active_layer_->AddTiling(2.3f); | 113 active_layer_->AddTiling(2.3f); |
114 active_layer_->AddTiling(1.0f); | 114 active_layer_->AddTiling(1.0f); |
115 active_layer_->AddTiling(0.5f); | 115 active_layer_->AddTiling(0.5f); |
116 for (size_t i = 0; i < active_layer_->tilings()->num_tilings(); ++i) | 116 for (size_t i = 0; i < active_layer_->tilings()->num_tilings(); ++i) |
117 active_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); | 117 active_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); |
118 pending_layer_->set_invalidation(invalidation); | 118 pending_layer_->set_invalidation(invalidation); |
119 for (size_t i = 0; i < pending_layer_->tilings()->num_tilings(); ++i) | 119 for (size_t i = 0; i < pending_layer_->tilings()->num_tilings(); ++i) |
120 pending_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); | 120 pending_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); |
121 } | 121 } |
122 | 122 |
123 void SetupPendingTree( | 123 void SetupPendingTree(scoped_refptr<PicturePileImpl> pile) { |
124 scoped_refptr<PicturePileImpl> pile) { | |
125 host_impl_.CreatePendingTree(); | 124 host_impl_.CreatePendingTree(); |
126 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); | 125 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); |
127 // Clear recycled tree. | 126 // Clear recycled tree. |
128 pending_tree->DetachLayerTree(); | 127 pending_tree->DetachLayerTree(); |
129 | 128 |
130 scoped_ptr<FakePictureLayerImpl> pending_layer = | 129 scoped_ptr<FakePictureLayerImpl> pending_layer = |
131 FakePictureLayerImpl::CreateWithPile(pending_tree, id_, pile); | 130 FakePictureLayerImpl::CreateWithPile(pending_tree, id_, pile); |
132 pending_layer->SetDrawsContent(true); | 131 pending_layer->SetDrawsContent(true); |
133 pending_tree->SetRootLayer(pending_layer.PassAs<LayerImpl>()); | 132 pending_tree->SetRootLayer(pending_layer.PassAs<LayerImpl>()); |
134 | 133 |
135 pending_layer_ = static_cast<FakePictureLayerImpl*>( | 134 pending_layer_ = static_cast<FakePictureLayerImpl*>( |
136 host_impl_.pending_tree()->LayerById(id_)); | 135 host_impl_.pending_tree()->LayerById(id_)); |
137 pending_layer_->DoPostCommitInitializationIfNeeded(); | 136 pending_layer_->DoPostCommitInitializationIfNeeded(); |
138 } | 137 } |
139 | 138 |
140 static void VerifyAllTilesExistAndHavePile( | 139 static void VerifyAllTilesExistAndHavePile( |
141 const PictureLayerTiling* tiling, | 140 const PictureLayerTiling* tiling, |
142 PicturePileImpl* pile) { | 141 PicturePileImpl* pile) { |
143 for (PictureLayerTiling::CoverageIterator | 142 for (PictureLayerTiling::CoverageIterator iter( |
144 iter(tiling, tiling->contents_scale(), tiling->ContentRect()); | 143 tiling, tiling->contents_scale(), tiling->TilingRect()); |
145 iter; | 144 iter; |
146 ++iter) { | 145 ++iter) { |
147 EXPECT_TRUE(*iter); | 146 EXPECT_TRUE(*iter); |
148 EXPECT_EQ(pile, iter->picture_pile()); | 147 EXPECT_EQ(pile, iter->picture_pile()); |
149 } | 148 } |
150 } | 149 } |
151 | 150 |
152 void SetContentsScaleOnBothLayers(float contents_scale, | 151 void SetContentsScaleOnBothLayers(float contents_scale, |
153 float device_scale_factor, | 152 float device_scale_factor, |
154 float page_scale_factor, | 153 float page_scale_factor, |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 Region invalidation(layer_invalidation); | 447 Region invalidation(layer_invalidation); |
449 AddDefaultTilingsWithInvalidation(invalidation); | 448 AddDefaultTilingsWithInvalidation(invalidation); |
450 | 449 |
451 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); | 450 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); |
452 EXPECT_GT(tilings->num_tilings(), 0u); | 451 EXPECT_GT(tilings->num_tilings(), 0u); |
453 for (size_t i = 0; i < tilings->num_tilings(); ++i) { | 452 for (size_t i = 0; i < tilings->num_tilings(); ++i) { |
454 const PictureLayerTiling* tiling = tilings->tiling_at(i); | 453 const PictureLayerTiling* tiling = tilings->tiling_at(i); |
455 gfx::Rect content_invalidation = gfx::ScaleToEnclosingRect( | 454 gfx::Rect content_invalidation = gfx::ScaleToEnclosingRect( |
456 layer_invalidation, | 455 layer_invalidation, |
457 tiling->contents_scale()); | 456 tiling->contents_scale()); |
458 for (PictureLayerTiling::CoverageIterator | 457 for (PictureLayerTiling::CoverageIterator iter( |
459 iter(tiling, | 458 tiling, tiling->contents_scale(), tiling->TilingRect()); |
460 tiling->contents_scale(), | |
461 tiling->ContentRect()); | |
462 iter; | 459 iter; |
463 ++iter) { | 460 ++iter) { |
464 EXPECT_TRUE(*iter); | 461 EXPECT_TRUE(*iter); |
465 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); | 462 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); |
466 if (iter.geometry_rect().Intersects(content_invalidation)) | 463 if (iter.geometry_rect().Intersects(content_invalidation)) |
467 EXPECT_EQ(pending_pile, iter->picture_pile()); | 464 EXPECT_EQ(pending_pile, iter->picture_pile()); |
468 else | 465 else |
469 EXPECT_EQ(active_pile, iter->picture_pile()); | 466 EXPECT_EQ(active_pile, iter->picture_pile()); |
470 } | 467 } |
471 } | 468 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 Region invalidation; | 508 Region invalidation; |
512 AddDefaultTilingsWithInvalidation(invalidation); | 509 AddDefaultTilingsWithInvalidation(invalidation); |
513 | 510 |
514 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); | 511 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); |
515 EXPECT_GT(tilings->num_tilings(), 0u); | 512 EXPECT_GT(tilings->num_tilings(), 0u); |
516 for (size_t i = 0; i < tilings->num_tilings(); ++i) { | 513 for (size_t i = 0; i < tilings->num_tilings(); ++i) { |
517 const PictureLayerTiling* tiling = tilings->tiling_at(i); | 514 const PictureLayerTiling* tiling = tilings->tiling_at(i); |
518 gfx::Rect active_content_bounds = gfx::ScaleToEnclosingRect( | 515 gfx::Rect active_content_bounds = gfx::ScaleToEnclosingRect( |
519 gfx::Rect(active_layer_bounds), | 516 gfx::Rect(active_layer_bounds), |
520 tiling->contents_scale()); | 517 tiling->contents_scale()); |
521 for (PictureLayerTiling::CoverageIterator | 518 for (PictureLayerTiling::CoverageIterator iter( |
522 iter(tiling, | 519 tiling, tiling->contents_scale(), tiling->TilingRect()); |
523 tiling->contents_scale(), | |
524 tiling->ContentRect()); | |
525 iter; | 520 iter; |
526 ++iter) { | 521 ++iter) { |
527 EXPECT_TRUE(*iter); | 522 EXPECT_TRUE(*iter); |
528 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); | 523 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); |
529 std::vector<Tile*> active_tiles = | 524 std::vector<Tile*> active_tiles = |
530 active_layer_->tilings()->tiling_at(i)->AllTilesForTesting(); | 525 active_layer_->tilings()->tiling_at(i)->AllTilesForTesting(); |
531 std::vector<Tile*> pending_tiles = tiling->AllTilesForTesting(); | 526 std::vector<Tile*> pending_tiles = tiling->AllTilesForTesting(); |
532 if (iter.geometry_rect().right() >= active_content_bounds.width() || | 527 if (iter.geometry_rect().right() >= active_content_bounds.width() || |
533 iter.geometry_rect().bottom() >= active_content_bounds.height() || | 528 iter.geometry_rect().bottom() >= active_content_bounds.height() || |
534 active_tiles[0]->content_rect().size() != | 529 active_tiles[0]->content_rect().size() != |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 | 562 |
568 SetupTrees(pending_pile, active_pile); | 563 SetupTrees(pending_pile, active_pile); |
569 Region invalidation; | 564 Region invalidation; |
570 AddDefaultTilingsWithInvalidation(invalidation); | 565 AddDefaultTilingsWithInvalidation(invalidation); |
571 | 566 |
572 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); | 567 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); |
573 EXPECT_GT(tilings->num_tilings(), 0u); | 568 EXPECT_GT(tilings->num_tilings(), 0u); |
574 for (size_t i = 0; i < tilings->num_tilings(); ++i) { | 569 for (size_t i = 0; i < tilings->num_tilings(); ++i) { |
575 const PictureLayerTiling* tiling = tilings->tiling_at(i); | 570 const PictureLayerTiling* tiling = tilings->tiling_at(i); |
576 | 571 |
577 for (PictureLayerTiling::CoverageIterator | 572 for (PictureLayerTiling::CoverageIterator iter( |
578 iter(tiling, | 573 tiling, tiling->contents_scale(), tiling->TilingRect()); |
579 tiling->contents_scale(), | |
580 tiling->ContentRect()); | |
581 iter; | 574 iter; |
582 ++iter) { | 575 ++iter) { |
583 EXPECT_FALSE(iter.full_tile_geometry_rect().IsEmpty()); | 576 EXPECT_FALSE(iter.full_tile_geometry_rect().IsEmpty()); |
584 // Ensure there is a recording for this tile. | 577 // Ensure there is a recording for this tile. |
585 bool in_pending = pending_pile->CanRaster(tiling->contents_scale(), | 578 bool in_pending = pending_pile->CanRaster(tiling->contents_scale(), |
586 iter.full_tile_geometry_rect()); | 579 iter.full_tile_geometry_rect()); |
587 bool in_active = active_pile->CanRaster(tiling->contents_scale(), | 580 bool in_active = active_pile->CanRaster(tiling->contents_scale(), |
588 iter.full_tile_geometry_rect()); | 581 iter.full_tile_geometry_rect()); |
589 | 582 |
590 if (in_pending && !in_active) | 583 if (in_pending && !in_active) |
(...skipping 1572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2163 EXPECT_FLOAT_EQ(tile->contents_scale(), expected_scales[scale_index]); | 2156 EXPECT_FLOAT_EQ(tile->contents_scale(), expected_scales[scale_index]); |
2164 unique_tiles.insert(tile); | 2157 unique_tiles.insert(tile); |
2165 } | 2158 } |
2166 | 2159 |
2167 EXPECT_TRUE(reached_required); | 2160 EXPECT_TRUE(reached_required); |
2168 EXPECT_EQ(all_tiles_set.size(), unique_tiles.size()); | 2161 EXPECT_EQ(all_tiles_set.size(), unique_tiles.size()); |
2169 } | 2162 } |
2170 | 2163 |
2171 } // namespace | 2164 } // namespace |
2172 } // namespace cc | 2165 } // namespace cc |
OLD | NEW |