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 |