| 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/resources/tile.h" | 5 #include "cc/resources/tile.h" |
| 6 #include "cc/resources/tile_priority.h" | 6 #include "cc/resources/tile_priority.h" |
| 7 #include "cc/test/fake_impl_proxy.h" | 7 #include "cc/test/fake_impl_proxy.h" |
| 8 #include "cc/test/fake_layer_tree_host_impl.h" | 8 #include "cc/test/fake_layer_tree_host_impl.h" |
| 9 #include "cc/test/fake_output_surface.h" | 9 #include "cc/test/fake_output_surface.h" |
| 10 #include "cc/test/fake_output_surface_client.h" | 10 #include "cc/test/fake_output_surface_client.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 } | 76 } |
| 77 | 77 |
| 78 virtual void TearDown() OVERRIDE { | 78 virtual void TearDown() OVERRIDE { |
| 79 tile_manager_.reset(NULL); | 79 tile_manager_.reset(NULL); |
| 80 picture_pile_ = NULL; | 80 picture_pile_ = NULL; |
| 81 | 81 |
| 82 testing::Test::TearDown(); | 82 testing::Test::TearDown(); |
| 83 } | 83 } |
| 84 | 84 |
| 85 // TileManagerClient implementation. | 85 // TileManagerClient implementation. |
| 86 virtual const std::vector<PictureLayerImpl*>& GetPictureLayers() OVERRIDE { |
| 87 return picture_layers_; |
| 88 } |
| 86 virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; } | 89 virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; } |
| 87 virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {} | 90 virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {} |
| 88 | 91 |
| 89 TileVector CreateTilesWithSize(int count, | 92 TileVector CreateTilesWithSize(int count, |
| 90 TilePriority active_priority, | 93 TilePriority active_priority, |
| 91 TilePriority pending_priority, | 94 TilePriority pending_priority, |
| 92 const gfx::Size& tile_size) { | 95 const gfx::Size& tile_size) { |
| 93 TileVector tiles; | 96 TileVector tiles; |
| 94 for (int i = 0; i < count; ++i) { | 97 for (int i = 0; i < count; ++i) { |
| 95 scoped_refptr<Tile> tile = tile_manager_->CreateTile(picture_pile_.get(), | 98 scoped_refptr<Tile> tile = tile_manager_->CreateTile(picture_pile_.get(), |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 scoped_ptr<FakeTileManager> tile_manager_; | 154 scoped_ptr<FakeTileManager> tile_manager_; |
| 152 scoped_refptr<FakePicturePileImpl> picture_pile_; | 155 scoped_refptr<FakePicturePileImpl> picture_pile_; |
| 153 FakeOutputSurfaceClient output_surface_client_; | 156 FakeOutputSurfaceClient output_surface_client_; |
| 154 scoped_ptr<FakeOutputSurface> output_surface_; | 157 scoped_ptr<FakeOutputSurface> output_surface_; |
| 155 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 158 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 156 scoped_ptr<ResourceProvider> resource_provider_; | 159 scoped_ptr<ResourceProvider> resource_provider_; |
| 157 scoped_ptr<ResourcePool> resource_pool_; | 160 scoped_ptr<ResourcePool> resource_pool_; |
| 158 TileMemoryLimitPolicy memory_limit_policy_; | 161 TileMemoryLimitPolicy memory_limit_policy_; |
| 159 int max_tiles_; | 162 int max_tiles_; |
| 160 bool ready_to_activate_; | 163 bool ready_to_activate_; |
| 164 std::vector<PictureLayerImpl*> picture_layers_; |
| 161 }; | 165 }; |
| 162 | 166 |
| 163 TEST_P(TileManagerTest, EnoughMemoryAllowAnything) { | 167 TEST_P(TileManagerTest, EnoughMemoryAllowAnything) { |
| 164 // A few tiles of each type of priority, with enough memory for all tiles. | 168 // A few tiles of each type of priority, with enough memory for all tiles. |
| 165 | 169 |
| 166 Initialize(10, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); | 170 Initialize(10, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); |
| 167 TileVector active_now = | 171 TileVector active_now = |
| 168 CreateTiles(3, TilePriorityForNowBin(), TilePriority()); | 172 CreateTiles(3, TilePriorityForNowBin(), TilePriority()); |
| 169 TileVector pending_now = | 173 TileVector pending_now = |
| 170 CreateTiles(3, TilePriority(), TilePriorityForNowBin()); | 174 CreateTiles(3, TilePriority(), TilePriorityForNowBin()); |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 612 // Allocated bytes should never be more than the memory limit. | 616 // Allocated bytes should never be more than the memory limit. |
| 613 EXPECT_LE(memory_allocated_bytes, global_state_.hard_memory_limit_in_bytes); | 617 EXPECT_LE(memory_allocated_bytes, global_state_.hard_memory_limit_in_bytes); |
| 614 } | 618 } |
| 615 | 619 |
| 616 // If true, the max tile limit should be applied as bytes; if false, | 620 // If true, the max tile limit should be applied as bytes; if false, |
| 617 // as num_resources_limit. | 621 // as num_resources_limit. |
| 618 INSTANTIATE_TEST_CASE_P(TileManagerTests, | 622 INSTANTIATE_TEST_CASE_P(TileManagerTests, |
| 619 TileManagerTest, | 623 TileManagerTest, |
| 620 ::testing::Values(true, false)); | 624 ::testing::Values(true, false)); |
| 621 | 625 |
| 622 class TileManagerTileIteratorTest : public testing::Test, | 626 class TileManagerTileIteratorTest : public testing::Test { |
| 623 public TileManagerClient { | |
| 624 public: | 627 public: |
| 625 TileManagerTileIteratorTest() | 628 TileManagerTileIteratorTest() |
| 626 : memory_limit_policy_(ALLOW_ANYTHING), | 629 : memory_limit_policy_(ALLOW_ANYTHING), |
| 627 max_tiles_(10000), | 630 max_tiles_(10000), |
| 628 ready_to_activate_(false), | 631 ready_to_activate_(false), |
| 629 id_(7), | 632 id_(7), |
| 630 proxy_(base::MessageLoopProxy::current()), | 633 proxy_(base::MessageLoopProxy::current()), |
| 631 host_impl_(ImplSidePaintingSettings(), | 634 host_impl_(ImplSidePaintingSettings(), |
| 632 &proxy_, | 635 &proxy_, |
| 633 &shared_bitmap_manager_) {} | 636 &shared_bitmap_manager_) {} |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 710 } | 713 } |
| 711 | 714 |
| 712 void CreateHighLowResAndSetAllTilesVisible() { | 715 void CreateHighLowResAndSetAllTilesVisible() { |
| 713 // Active layer must get updated first so pending layer can share from it. | 716 // Active layer must get updated first so pending layer can share from it. |
| 714 active_layer_->CreateDefaultTilingsAndTiles(); | 717 active_layer_->CreateDefaultTilingsAndTiles(); |
| 715 active_layer_->SetAllTilesVisible(); | 718 active_layer_->SetAllTilesVisible(); |
| 716 pending_layer_->CreateDefaultTilingsAndTiles(); | 719 pending_layer_->CreateDefaultTilingsAndTiles(); |
| 717 pending_layer_->SetAllTilesVisible(); | 720 pending_layer_->SetAllTilesVisible(); |
| 718 } | 721 } |
| 719 | 722 |
| 720 // TileManagerClient implementation. | |
| 721 virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; } | |
| 722 virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {} | |
| 723 | |
| 724 TileManager* tile_manager() { return host_impl_.tile_manager(); } | 723 TileManager* tile_manager() { return host_impl_.tile_manager(); } |
| 725 | 724 |
| 726 protected: | 725 protected: |
| 727 GlobalStateThatImpactsTilePriority global_state_; | 726 GlobalStateThatImpactsTilePriority global_state_; |
| 728 | 727 |
| 729 TestSharedBitmapManager shared_bitmap_manager_; | 728 TestSharedBitmapManager shared_bitmap_manager_; |
| 730 TileMemoryLimitPolicy memory_limit_policy_; | 729 TileMemoryLimitPolicy memory_limit_policy_; |
| 731 int max_tiles_; | 730 int max_tiles_; |
| 732 bool ready_to_activate_; | 731 bool ready_to_activate_; |
| 733 int id_; | 732 int id_; |
| 734 FakeImplProxy proxy_; | 733 FakeImplProxy proxy_; |
| 735 FakeLayerTreeHostImpl host_impl_; | 734 FakeLayerTreeHostImpl host_impl_; |
| 736 FakePictureLayerImpl* pending_layer_; | 735 FakePictureLayerImpl* pending_layer_; |
| 737 FakePictureLayerImpl* active_layer_; | 736 FakePictureLayerImpl* active_layer_; |
| 738 }; | 737 }; |
| 739 | 738 |
| 740 TEST_F(TileManagerTileIteratorTest, PairedPictureLayers) { | 739 TEST_F(TileManagerTileIteratorTest, PairedPictureLayers) { |
| 741 FakeImplProxy proxy; | 740 host_impl_.CreatePendingTree(); |
| 742 TestSharedBitmapManager shared_bitmap_manager; | 741 host_impl_.ActivatePendingTree(); |
| 743 FakeLayerTreeHostImpl host_impl(&proxy, &shared_bitmap_manager); | 742 host_impl_.CreatePendingTree(); |
| 744 host_impl.CreatePendingTree(); | |
| 745 host_impl.ActivatePendingTree(); | |
| 746 host_impl.CreatePendingTree(); | |
| 747 | 743 |
| 748 LayerTreeImpl* active_tree = host_impl.active_tree(); | 744 LayerTreeImpl* active_tree = host_impl_.active_tree(); |
| 749 LayerTreeImpl* pending_tree = host_impl.pending_tree(); | 745 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); |
| 750 EXPECT_NE(active_tree, pending_tree); | 746 EXPECT_NE(active_tree, pending_tree); |
| 751 | 747 |
| 752 scoped_ptr<FakePictureLayerImpl> active_layer = | 748 scoped_ptr<FakePictureLayerImpl> active_layer = |
| 753 FakePictureLayerImpl::Create(active_tree, 10); | 749 FakePictureLayerImpl::Create(active_tree, 10); |
| 754 scoped_ptr<FakePictureLayerImpl> pending_layer = | 750 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 755 FakePictureLayerImpl::Create(pending_tree, 10); | 751 FakePictureLayerImpl::Create(pending_tree, 10); |
| 756 | 752 |
| 757 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager(); | 753 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager(); |
| 758 EXPECT_TRUE(tile_manager); | 754 EXPECT_TRUE(tile_manager); |
| 759 | 755 |
| 760 tile_manager->RegisterPictureLayerImpl(active_layer.get()); | |
| 761 tile_manager->RegisterPictureLayerImpl(pending_layer.get()); | |
| 762 | |
| 763 std::vector<TileManager::PairedPictureLayer> paired_layers; | 756 std::vector<TileManager::PairedPictureLayer> paired_layers; |
| 764 tile_manager->GetPairedPictureLayers(&paired_layers); | 757 tile_manager->GetPairedPictureLayers(&paired_layers); |
| 765 | 758 |
| 766 EXPECT_EQ(2u, paired_layers.size()); | 759 EXPECT_EQ(2u, paired_layers.size()); |
| 767 if (paired_layers[0].active_layer) { | 760 if (paired_layers[0].active_layer) { |
| 768 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer); | 761 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer); |
| 769 EXPECT_EQ(NULL, paired_layers[0].pending_layer); | 762 EXPECT_EQ(NULL, paired_layers[0].pending_layer); |
| 770 } else { | 763 } else { |
| 771 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer); | 764 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer); |
| 772 EXPECT_EQ(NULL, paired_layers[0].active_layer); | 765 EXPECT_EQ(NULL, paired_layers[0].active_layer); |
| 773 } | 766 } |
| 774 | 767 |
| 775 if (paired_layers[1].active_layer) { | 768 if (paired_layers[1].active_layer) { |
| 776 EXPECT_EQ(active_layer.get(), paired_layers[1].active_layer); | 769 EXPECT_EQ(active_layer.get(), paired_layers[1].active_layer); |
| 777 EXPECT_EQ(NULL, paired_layers[1].pending_layer); | 770 EXPECT_EQ(NULL, paired_layers[1].pending_layer); |
| 778 } else { | 771 } else { |
| 779 EXPECT_EQ(pending_layer.get(), paired_layers[1].pending_layer); | 772 EXPECT_EQ(pending_layer.get(), paired_layers[1].pending_layer); |
| 780 EXPECT_EQ(NULL, paired_layers[1].active_layer); | 773 EXPECT_EQ(NULL, paired_layers[1].active_layer); |
| 781 } | 774 } |
| 782 | 775 |
| 783 active_layer->set_twin_layer(pending_layer.get()); | 776 active_layer->set_twin_layer(pending_layer.get()); |
| 784 pending_layer->set_twin_layer(active_layer.get()); | 777 pending_layer->set_twin_layer(active_layer.get()); |
| 785 | 778 |
| 786 tile_manager->GetPairedPictureLayers(&paired_layers); | 779 tile_manager->GetPairedPictureLayers(&paired_layers); |
| 787 EXPECT_EQ(1u, paired_layers.size()); | 780 EXPECT_EQ(1u, paired_layers.size()); |
| 788 | 781 |
| 789 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer); | 782 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer); |
| 790 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer); | 783 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer); |
| 791 | |
| 792 tile_manager->UnregisterPictureLayerImpl(active_layer.get()); | |
| 793 tile_manager->UnregisterPictureLayerImpl(pending_layer.get()); | |
| 794 } | 784 } |
| 795 | 785 |
| 796 TEST_F(TileManagerTileIteratorTest, RasterTileIterator) { | 786 TEST_F(TileManagerTileIteratorTest, RasterTileIterator) { |
| 797 SetupDefaultTrees(gfx::Size(1000, 1000)); | 787 SetupDefaultTrees(gfx::Size(1000, 1000)); |
| 798 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager(); | 788 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager(); |
| 799 EXPECT_TRUE(tile_manager); | 789 EXPECT_TRUE(tile_manager); |
| 800 | 790 |
| 801 active_layer_->CreateDefaultTilingsAndTiles(); | 791 active_layer_->CreateDefaultTilingsAndTiles(); |
| 802 pending_layer_->CreateDefaultTilingsAndTiles(); | 792 pending_layer_->CreateDefaultTilingsAndTiles(); |
| 803 | 793 |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1111 | 1101 |
| 1112 last_tile = tile; | 1102 last_tile = tile; |
| 1113 new_content_tiles.insert(tile); | 1103 new_content_tiles.insert(tile); |
| 1114 } | 1104 } |
| 1115 | 1105 |
| 1116 EXPECT_EQ(tile_count, new_content_tiles.size()); | 1106 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 1117 EXPECT_EQ(all_tiles, new_content_tiles); | 1107 EXPECT_EQ(all_tiles, new_content_tiles); |
| 1118 } | 1108 } |
| 1119 } // namespace | 1109 } // namespace |
| 1120 } // namespace cc | 1110 } // namespace cc |
| OLD | NEW |