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) { |