Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Unified Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 375923005: cc: Explicitly invalidate all dropped recordings on the main thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: invalid-resize: resizedeletestiles Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/resources/picture_layer_tiling.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
}
}
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/resources/picture_layer_tiling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698