Chromium Code Reviews| Index: cc/layers/picture_layer_impl_unittest.cc |
| diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc |
| index 401df7e2710c3c5a76c202a9331ac12463fe8245..f0495d705ed7a63e2cf17c8cb32140b392946042 100644 |
| --- a/cc/layers/picture_layer_impl_unittest.cc |
| +++ b/cc/layers/picture_layer_impl_unittest.cc |
| @@ -80,6 +80,16 @@ class PictureLayerImplTest : public testing::Test { |
| SetupTrees(pending_pile, active_pile); |
| } |
| + void SetupDefaultPendingTree(const gfx::Size& layer_bounds) { |
|
enne (OOO)
2014/07/11 00:12:04
Unused?
|
| + gfx::Size tile_size(100, 100); |
| + |
| + scoped_refptr<FakePicturePileImpl> pending_pile = |
| + FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| + |
| + SetupPendingTree(pending_pile); |
| + host_impl_.pending_tree()->SetPageScaleFactorAndLimits(1.f, 0.25f, 100.f); |
| + } |
| + |
| void ActivateTree() { |
| host_impl_.ActivateSyncTree(); |
| CHECK(!host_impl_.pending_tree()); |
| @@ -1490,40 +1500,128 @@ TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { |
| EXPECT_FALSE(active_layer_->needs_post_commit_initialization()); |
| } |
| -TEST_F(PictureLayerImplTest, RemoveInvalidTilesOnActivation) { |
| +TEST_F(PictureLayerImplTest, ShareTilesOnSync) { |
| + SetupDefaultTrees(gfx::Size(1500, 1500)); |
| + AddDefaultTilingsWithInvalidation(gfx::Rect()); |
| + |
| + host_impl_.ActivateSyncTree(); |
| + host_impl_.CreatePendingTree(); |
| + active_layer_ = static_cast<FakePictureLayerImpl*>( |
| + host_impl_.active_tree()->LayerById(id_)); |
| + |
| + // Force the active tree to sync to the pending tree "post-commit". |
| + pending_layer_->DoPostCommitInitializationIfNeeded(); |
| + |
| + // Both invalidations should drop tiles from the pending tree. |
| + EXPECT_EQ(3u, active_layer_->num_tilings()); |
| + EXPECT_EQ(3u, pending_layer_->num_tilings()); |
| + for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
| + PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(i); |
| + PictureLayerTiling* pending_tiling = |
| + pending_layer_->tilings()->tiling_at(i); |
| + |
| + ASSERT_TRUE(active_tiling); |
| + ASSERT_TRUE(pending_tiling); |
| + |
| + EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
| + EXPECT_TRUE(active_tiling->TileAt(1, 0)); |
| + EXPECT_TRUE(active_tiling->TileAt(0, 1)); |
| + EXPECT_TRUE(active_tiling->TileAt(1, 1)); |
| + |
| + EXPECT_TRUE(pending_tiling->TileAt(0, 0)); |
| + EXPECT_TRUE(pending_tiling->TileAt(1, 0)); |
| + EXPECT_TRUE(pending_tiling->TileAt(0, 1)); |
| + EXPECT_TRUE(pending_tiling->TileAt(1, 1)); |
| + |
| + EXPECT_EQ(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); |
| + EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0)); |
| + EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1)); |
| + EXPECT_EQ(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1)); |
| + } |
| +} |
| + |
| +TEST_F(PictureLayerImplTest, RemoveInvalidActiveTreeTilesOnSync) { |
| SetupDefaultTrees(gfx::Size(1500, 1500)); |
| AddDefaultTilingsWithInvalidation(gfx::Rect(0, 0, 1, 1)); |
| - FakePictureLayerImpl* recycled_layer = pending_layer_; |
| + // This activates the 0,0,1,1 invalidation. |
| host_impl_.ActivateSyncTree(); |
| + host_impl_.CreatePendingTree(); |
| + active_layer_ = static_cast<FakePictureLayerImpl*>( |
| + host_impl_.active_tree()->LayerById(id_)); |
| + |
| + // Force the active tree to sync to the pending tree "post-commit". |
|
enne (OOO)
2014/07/11 00:12:04
This is a little bit weird. Can you test the acti
danakj
2014/07/11 17:06:16
Then I have to instantiate main thread layers and
enne (OOO)
2014/07/11 18:21:54
It's just a little weird. You're right that it wo
|
| + pending_layer_->DoPostCommitInitializationIfNeeded(); |
| + |
| + // Both invalidations should drop tiles from the pending tree. |
| + EXPECT_EQ(3u, active_layer_->num_tilings()); |
| + EXPECT_EQ(3u, pending_layer_->num_tilings()); |
| + for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
| + PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(i); |
| + PictureLayerTiling* pending_tiling = |
| + pending_layer_->tilings()->tiling_at(i); |
| + |
| + ASSERT_TRUE(active_tiling); |
| + ASSERT_TRUE(pending_tiling); |
| + |
| + EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
| + EXPECT_TRUE(active_tiling->TileAt(1, 0)); |
| + EXPECT_TRUE(active_tiling->TileAt(0, 1)); |
| + EXPECT_TRUE(active_tiling->TileAt(1, 1)); |
| + |
| + EXPECT_TRUE(pending_tiling->TileAt(0, 0)); |
| + EXPECT_TRUE(pending_tiling->TileAt(1, 0)); |
| + EXPECT_TRUE(pending_tiling->TileAt(0, 1)); |
| + EXPECT_TRUE(pending_tiling->TileAt(1, 1)); |
| + |
| + EXPECT_NE(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); |
| + EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0)); |
| + EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1)); |
| + EXPECT_EQ(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1)); |
| + } |
| +} |
| + |
| +TEST_F(PictureLayerImplTest, RemoveInvalidPendingTreeTilesOnSync) { |
| + SetupDefaultTrees(gfx::Size(1500, 1500)); |
| + AddDefaultTilingsWithInvalidation(gfx::Rect()); |
| + host_impl_.ActivateSyncTree(); |
| + host_impl_.CreatePendingTree(); |
| active_layer_ = static_cast<FakePictureLayerImpl*>( |
| host_impl_.active_tree()->LayerById(id_)); |
| + // Set some invalidation on the pending tree "during commit". We should |
| + // replace raster tiles that touch this. |
| + pending_layer_->set_invalidation(gfx::Rect(1, 1)); |
| + |
| + // Force the active tree to sync to the pending tree "post-commit". |
| + pending_layer_->DoPostCommitInitializationIfNeeded(); |
| + |
| + // Both invalidations should drop tiles from the pending tree. |
| EXPECT_EQ(3u, active_layer_->num_tilings()); |
| - EXPECT_EQ(3u, recycled_layer->num_tilings()); |
| - EXPECT_FALSE(host_impl_.pending_tree()); |
| + EXPECT_EQ(3u, pending_layer_->num_tilings()); |
| for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
| PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(i); |
| - PictureLayerTiling* recycled_tiling = |
| - recycled_layer->tilings()->tiling_at(i); |
| + PictureLayerTiling* pending_tiling = |
| + pending_layer_->tilings()->tiling_at(i); |
| ASSERT_TRUE(active_tiling); |
| - ASSERT_TRUE(recycled_tiling); |
| + ASSERT_TRUE(pending_tiling); |
| EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
| EXPECT_TRUE(active_tiling->TileAt(1, 0)); |
| EXPECT_TRUE(active_tiling->TileAt(0, 1)); |
| EXPECT_TRUE(active_tiling->TileAt(1, 1)); |
| - EXPECT_FALSE(recycled_tiling->TileAt(0, 0)); |
| - EXPECT_TRUE(recycled_tiling->TileAt(1, 0)); |
| - EXPECT_TRUE(recycled_tiling->TileAt(0, 1)); |
| - EXPECT_TRUE(recycled_tiling->TileAt(1, 1)); |
| + EXPECT_TRUE(pending_tiling->TileAt(0, 0)); |
| + EXPECT_TRUE(pending_tiling->TileAt(1, 0)); |
| + EXPECT_TRUE(pending_tiling->TileAt(0, 1)); |
| + EXPECT_TRUE(pending_tiling->TileAt(1, 1)); |
| - EXPECT_EQ(active_tiling->TileAt(1, 0), recycled_tiling->TileAt(1, 0)); |
| - EXPECT_EQ(active_tiling->TileAt(0, 1), recycled_tiling->TileAt(0, 1)); |
| - EXPECT_EQ(active_tiling->TileAt(1, 1), recycled_tiling->TileAt(1, 1)); |
| + EXPECT_NE(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); |
| + EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0)); |
| + EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1)); |
| + EXPECT_EQ(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1)); |
| } |
| } |