Index: cc/layers/layer_unittest.cc |
diff --git a/cc/layers/layer_unittest.cc b/cc/layers/layer_unittest.cc |
index afc6c359397f36004d90ecb1cd7390ba5b6116e6..c2a0d99fd1f03a7b5633737a4fbc86a983d8105a 100644 |
--- a/cc/layers/layer_unittest.cc |
+++ b/cc/layers/layer_unittest.cc |
@@ -53,6 +53,13 @@ using ::testing::_; |
Mock::VerifyAndClearExpectations(layer_tree_host_.get()); \ |
} while (false) |
+#define EXECUTE_AND_VERIFY_SUBTREE_CHANGED(code_to_test) \ |
+ code_to_test; \ |
+ root->layer_tree_host()->BuildPropertyTreesForTesting(); \ |
+ EXPECT_TRUE(root->subtree_property_changed()); \ |
+ EXPECT_TRUE(child->subtree_property_changed()); \ |
+ EXPECT_TRUE(grand_child->subtree_property_changed()); |
ajuma
2016/02/10 15:31:32
Also verify that needs_push_properties is true for
jaydasika
2016/02/10 16:33:40
Do we need to push properties if layer_property_ch
ajuma
2016/02/10 16:40:18
If we don't push properties, would the layer_prope
jaydasika
2016/02/10 19:18:25
Added SetNeedsPushProperties to SetSubtreeProeprty
|
+ |
namespace cc { |
// This class is a friend of Layer, and is used as a wrapper for all the tests |
@@ -501,6 +508,47 @@ TEST_F(LayerTest, BasicCreateAndDestroy) { |
test_layer->SetLayerTreeHost(nullptr); |
} |
+TEST_F(LayerTest, LayerPropertyChangedForSubtree) { |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsFullTreeSync()).Times(AtLeast(1)); |
+ scoped_refptr<Layer> root = Layer::Create(layer_settings_); |
+ scoped_refptr<Layer> child = Layer::Create(layer_settings_); |
+ scoped_refptr<Layer> grand_child = Layer::Create(layer_settings_); |
+ scoped_refptr<Layer> dummy_layer1 = Layer::Create(layer_settings_); |
+ scoped_refptr<Layer> dummy_layer2 = Layer::Create(layer_settings_); |
+ |
+ layer_tree_host_->SetRootLayer(root); |
+ root->AddChild(child); |
+ child->AddChild(grand_child); |
+ SkXfermode::Mode arbitrary_blend_mode = SkXfermode::kMultiply_Mode; |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsFullTreeSync()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMaskLayer(dummy_layer1.get())); |
ajuma
2016/02/10 15:31:32
Does the subtree_property_changed() bit get cleare
jaydasika
2016/02/10 19:18:25
Added code to reset it.
|
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetMasksToBounds(true)); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetContentsOpaque(true)); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsFullTreeSync()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetReplicaLayer(dummy_layer2.get())); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetShouldFlattenTransform(false)); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->Set3dSortingContextId(1)); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetDoubleSided(false)); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetHideLayerAndSubtree(true)); |
+ |
+ EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); |
+ EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetBlendMode(arbitrary_blend_mode)); |
+} |
+ |
TEST_F(LayerTest, AddAndRemoveChild) { |
scoped_refptr<Layer> parent = Layer::Create(layer_settings_); |
scoped_refptr<Layer> child = Layer::Create(layer_settings_); |