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

Unified Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 676953003: cc: Always keep the PictureLayerImpl::twin_layer_ pointer valid. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: twins: anothercheck Created 6 years, 2 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/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_unittest_picture.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_impl_unittest.cc
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 64758be799b5d6319c6d597a32076180bd23ee42..fb23ba64c651e32c1b4279ee512be0c305915eb3 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -4,6 +4,7 @@
#include "cc/trees/layer_tree_host_impl.h"
+#include <algorithm>
#include <cmath>
#include "base/bind.h"
@@ -7443,47 +7444,64 @@ TEST_F(LayerTreeHostImplTest, ScrollAnimated) {
TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairs) {
host_impl_->CreatePendingTree();
+ host_impl_->pending_tree()->SetRootLayer(
+ PictureLayerImpl::Create(host_impl_->pending_tree(), 10));
+
+ LayerTreeImpl* pending_tree = host_impl_->pending_tree();
+ LayerImpl* pending_layer = pending_tree->root_layer();
+
+ std::vector<PictureLayerImpl::Pair> layer_pairs;
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs);
+ EXPECT_EQ(1u, layer_pairs.size());
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(nullptr, layer_pairs[0].active);
+
host_impl_->ActivateSyncTree();
- host_impl_->CreatePendingTree();
LayerTreeImpl* active_tree = host_impl_->active_tree();
- LayerTreeImpl* pending_tree = host_impl_->pending_tree();
+ LayerImpl* active_layer = active_tree->root_layer();
EXPECT_NE(active_tree, pending_tree);
+ EXPECT_NE(active_layer, pending_layer);
+ EXPECT_NE(nullptr, active_tree);
+ EXPECT_NE(nullptr, active_layer);
- scoped_ptr<FakePictureLayerImpl> active_layer =
- FakePictureLayerImpl::Create(active_tree, 10);
- scoped_ptr<FakePictureLayerImpl> pending_layer =
- FakePictureLayerImpl::Create(pending_tree, 10);
+ host_impl_->CreatePendingTree();
- std::vector<PictureLayerImpl::Pair> layer_pairs;
+ layer_pairs.clear();
host_impl_->GetPictureLayerImplPairs(&layer_pairs);
+ EXPECT_EQ(1u, layer_pairs.size());
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
- EXPECT_EQ(2u, layer_pairs.size());
- if (layer_pairs[0].active) {
- EXPECT_EQ(active_layer.get(), layer_pairs[0].active);
- EXPECT_EQ(NULL, layer_pairs[0].pending);
- } else {
- EXPECT_EQ(pending_layer.get(), layer_pairs[0].pending);
- EXPECT_EQ(NULL, layer_pairs[0].active);
- }
+ // Activate, the active layer has no twin now.
+ host_impl_->ActivateSyncTree();
- if (layer_pairs[1].active) {
- EXPECT_EQ(active_layer.get(), layer_pairs[1].active);
- EXPECT_EQ(NULL, layer_pairs[1].pending);
- } else {
- EXPECT_EQ(pending_layer.get(), layer_pairs[1].pending);
- EXPECT_EQ(NULL, layer_pairs[1].active);
- }
+ layer_pairs.clear();
+ host_impl_->GetPictureLayerImplPairs(&layer_pairs);
+ EXPECT_EQ(1u, layer_pairs.size());
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(nullptr, layer_pairs[0].pending);
+
+ // Create another layer in the pending tree that's not in the active tree. We
+ // should get two pairs.
+ host_impl_->CreatePendingTree();
+ host_impl_->pending_tree()->root_layer()->AddChild(
+ PictureLayerImpl::Create(host_impl_->pending_tree(), 11));
- active_layer->set_twin_layer(pending_layer.get());
- pending_layer->set_twin_layer(active_layer.get());
+ LayerImpl* new_pending_layer = pending_tree->root_layer()->children()[0];
layer_pairs.clear();
host_impl_->GetPictureLayerImplPairs(&layer_pairs);
- EXPECT_EQ(1u, layer_pairs.size());
+ EXPECT_EQ(2u, layer_pairs.size());
+
+ // The pair ordering is flaky, so make it consistent.
+ if (layer_pairs[0].active != active_layer)
+ std::swap(layer_pairs[0], layer_pairs[1]);
- EXPECT_EQ(active_layer.get(), layer_pairs[0].active);
- EXPECT_EQ(pending_layer.get(), layer_pairs[0].pending);
+ EXPECT_EQ(active_layer, layer_pairs[0].active);
+ EXPECT_EQ(pending_layer, layer_pairs[0].pending);
+ EXPECT_EQ(new_pending_layer, layer_pairs[1].pending);
+ EXPECT_EQ(nullptr, layer_pairs[1].active);
}
TEST_F(LayerTreeHostImplTest, DidBecomeActive) {
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_unittest_picture.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698