Index: cc/trees/layer_tree_host_common_unittest.cc |
diff --git a/cc/trees/layer_tree_host_common_unittest.cc b/cc/trees/layer_tree_host_common_unittest.cc |
index c03d85566f2b142c7f69f91b3f009d2921255a75..17ffe917d699b37341a0b27fba3a2afe6bab90e4 100644 |
--- a/cc/trees/layer_tree_host_common_unittest.cc |
+++ b/cc/trees/layer_tree_host_common_unittest.cc |
@@ -4426,13 +4426,13 @@ TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) { |
inputs.can_adjust_raster_scales = true; |
LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
- // We should have one render surface and one layer. The child |
- // layer should not be included as its transparent. |
+ // We should have one render surface and two layers. The child |
+ // layer should be included even though it is transparent. |
ASSERT_EQ(1u, render_surface_list.size()); |
- ASSERT_EQ(1, GetRenderSurface(root_layer)->num_contributors()); |
+ ASSERT_EQ(2, GetRenderSurface(root_layer)->num_contributors()); |
- // If the root itself is hidden, the child should not be drawn and should not |
- // raster even if it has an animating opacity. |
+ // If the root itself is hidden, the child should not be drawn even if it has |
+ // an animating opacity. |
root_layer->test_properties()->opacity = 0.0f; |
root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
RenderSurfaceList render_surface_list2; |
@@ -4442,11 +4442,13 @@ TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) { |
LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs2); |
LayerImpl* child_ptr = root_layer->layer_tree_impl()->LayerById(2); |
- EXPECT_FALSE(child_ptr->contributes_to_drawn_render_surface()); |
- EXPECT_FALSE(child_ptr->raster_even_if_not_in_rsll()); |
+ EffectTree& tree = |
+ root_layer->layer_tree_impl()->property_trees()->effect_tree; |
+ EffectNode* node = tree.Node(child_ptr->effect_tree_index()); |
+ EXPECT_FALSE(node->is_drawn); |
- // The child layer should not be drawn as its transparent but should raster |
- // as its opacity is animating. |
+ // A layer should be drawn and it should contribute to drawn surface when |
+ // it has animating opacity even if it has opacity 0. |
root_layer->test_properties()->opacity = 1.0f; |
child_ptr->test_properties()->opacity = 0.0f; |
root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true; |
@@ -4457,19 +4459,27 @@ TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) { |
LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs3); |
child_ptr = root_layer->layer_tree_impl()->LayerById(2); |
- EXPECT_FALSE(child_ptr->contributes_to_drawn_render_surface()); |
- EXPECT_TRUE(child_ptr->raster_even_if_not_in_rsll()); |
+ tree = root_layer->layer_tree_impl()->property_trees()->effect_tree; |
+ node = tree.Node(child_ptr->effect_tree_index()); |
+ EXPECT_TRUE(node->is_drawn); |
+ EXPECT_TRUE(tree.ContributesToDrawnSurface(child_ptr->effect_tree_index())); |
- // The child layer should not be drawn as its transparent but should raster |
- // as its opacity is animating even after activation. |
+ // But if the opacity of the layer remains 0 after activation, it should not |
+ // be drawn. |
host_impl.ActivateSyncTree(); |
LayerImpl* active_root = host_impl.active_tree()->LayerById(root_layer->id()); |
LayerImpl* active_child = host_impl.active_tree()->LayerById(child_ptr->id()); |
+ EffectTree& active_effect_tree = |
+ host_impl.active_tree()->property_trees()->effect_tree; |
+ EXPECT_TRUE(active_effect_tree.needs_update()); |
+ |
ExecuteCalculateDrawProperties(active_root); |
- EXPECT_FALSE(active_child->contributes_to_drawn_render_surface()); |
- EXPECT_TRUE(active_child->raster_even_if_not_in_rsll()); |
+ node = active_effect_tree.Node(active_child->effect_tree_index()); |
+ EXPECT_FALSE(node->is_drawn); |
+ EXPECT_FALSE(active_effect_tree.ContributesToDrawnSurface( |
+ active_child->effect_tree_index())); |
} |
using LCDTextTestParam = std::tr1::tuple<bool, bool, bool>; |