Index: cc/trees/layer_tree_host_unittest.cc |
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc |
index 46f45d591f636bd2b6e60df26e23b4485c0cfe70..a08d6584c20d7a384b83f0613efcfe1ec032470c 100644 |
--- a/cc/trees/layer_tree_host_unittest.cc |
+++ b/cc/trees/layer_tree_host_unittest.cc |
@@ -1180,6 +1180,95 @@ class LayerTreeHostTestPropertyTreesChangedSync : public LayerTreeHostTest { |
SINGLE_THREAD_TEST_F(LayerTreeHostTestPropertyTreesChangedSync); |
+class LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists |
+ : public LayerTreeHostTest { |
+ public: |
+ void InitializeSettings(LayerTreeSettings* settings) override { |
+ settings->use_layer_lists = false; |
+ } |
+ |
+ protected: |
+ void SetupTree() override { |
+ root_ = Layer::Create(); |
+ layer_tree_host()->SetRootLayer(root_); |
+ LayerTreeHostTest::SetupTree(); |
+ } |
+ |
+ void BeginTest() override { |
+ FilterOperations filters; |
+ EXPECT_EQ(FilterOperations(), root_->filters()); |
+ filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
+ layer_tree_host()->SetElementFilterMutated( |
+ root_->element_id(), ElementListType::ACTIVE, filters); |
+ // When not using layer lists, filters are just stored directly on the |
+ // layer. |
+ EXPECT_EQ(filters, root_->filters()); |
+ EndTest(); |
+ } |
+ |
+ void AfterTest() override {} |
+ |
+ private: |
+ scoped_refptr<Layer> root_; |
+}; |
+ |
+SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists); |
+ |
+class LayerTreeHostTestAnimationFilterMutatedUsingLayerLists |
+ : public LayerTreeHostTest { |
+ public: |
+ void InitializeSettings(LayerTreeSettings* settings) override { |
+ settings->use_layer_lists = true; |
+ } |
+ |
+ protected: |
+ void SetupTree() override { |
+ root_ = Layer::Create(); |
+ layer_tree_host()->SetRootLayer(root_); |
+ LayerTreeHostTest::SetupTree(); |
+ } |
+ |
+ void BeginTest() override { |
+ // Insert a dummy effect node to observe its mutation. This would |
+ // normally have been created by PaintArtifactCompositor. |
+ int effect_node_id = |
+ layer_tree_host()->property_trees()->effect_tree.Insert( |
+ EffectNode(), EffectTree::kInvalidNodeId); |
+ layer_tree_host() |
+ ->property_trees() |
+ ->element_id_to_effect_node_index[root_->element_id()] = effect_node_id; |
+ |
+ EXPECT_EQ(FilterOperations(), root_->filters()); |
+ EXPECT_EQ(FilterOperations(), |
+ layer_tree_host() |
+ ->property_trees() |
+ ->effect_tree.FindNodeFromElementId(root_->element_id()) |
+ ->filters); |
+ |
+ FilterOperations filters; |
+ filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
+ layer_tree_host()->SetElementFilterMutated( |
+ root_->element_id(), ElementListType::ACTIVE, filters); |
+ |
+ // When using layer lists, we don't have to store the filters on the layer. |
+ EXPECT_EQ(FilterOperations(), root_->filters()); |
+ // The filter should have been set directly on the effect node instead. |
+ EXPECT_EQ(filters, |
+ layer_tree_host() |
+ ->property_trees() |
+ ->effect_tree.FindNodeFromElementId(root_->element_id()) |
+ ->filters); |
+ EndTest(); |
+ } |
+ |
+ void AfterTest() override {} |
+ |
+ private: |
+ scoped_refptr<Layer> root_; |
+}; |
+ |
+SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationFilterMutatedUsingLayerLists); |
+ |
class LayerTreeHostTestEffectTreeSync : public LayerTreeHostTest { |
protected: |
void SetupTree() override { |
@@ -1377,7 +1466,7 @@ class LayerTreeHostTestTransformTreeDamageIsUpdated : public LayerTreeHostTest { |
root_->SetBounds(gfx::Size(50, 50)); |
- // Make sure child is registerd for animation. |
+ // Make sure child is registered for animation. |
child_->SetElementId(ElementId(2)); |
// Make sure child and grand_child have transform nodes. |