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 1ff6cd867218f2677f78baa12c27933a3af172cf..505d6f5d7267060436cf98f188c72c09f09400f4 100644 |
--- a/cc/layers/picture_layer_impl_unittest.cc |
+++ b/cc/layers/picture_layer_impl_unittest.cc |
@@ -1492,40 +1492,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". |
+ 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)); |
} |
} |