| Index: cc/trees/property_tree_builder.cc
|
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
|
| index d54ae5c75844fca23cdd92127d4a94e1264d50c5..7f77a3cca932d0f05c35d18091a9cc9fa2c73cf9 100644
|
| --- a/cc/trees/property_tree_builder.cc
|
| +++ b/cc/trees/property_tree_builder.cc
|
| @@ -663,9 +663,7 @@ static inline float EffectiveOpacity(Layer* layer) {
|
| }
|
|
|
| static inline float EffectiveOpacity(LayerImpl* layer) {
|
| - return layer->test_properties()->hide_layer_and_subtree
|
| - ? 0.f
|
| - : layer->test_properties()->opacity;
|
| + return layer->test_properties()->opacity;
|
| }
|
|
|
| static inline float Opacity(Layer* layer) {
|
| @@ -705,7 +703,7 @@ static inline bool HideLayerAndSubtree(Layer* layer) {
|
| }
|
|
|
| static inline bool HideLayerAndSubtree(LayerImpl* layer) {
|
| - return layer->test_properties()->hide_layer_and_subtree;
|
| + return false;
|
| }
|
|
|
| static inline bool HasCopyRequest(Layer* layer) {
|
| @@ -845,16 +843,14 @@ static void SetSubtreeHasCopyRequest(Layer* layer,
|
| }
|
|
|
| static void SetSubtreeHasCopyRequest(LayerImpl* layer,
|
| - bool subtree_has_copy_request) {
|
| - layer->test_properties()->subtree_has_copy_request = subtree_has_copy_request;
|
| -}
|
| + bool subtree_has_copy_request) {}
|
|
|
| static bool SubtreeHasCopyRequest(Layer* layer) {
|
| return layer->SubtreeHasCopyRequest();
|
| }
|
|
|
| static bool SubtreeHasCopyRequest(LayerImpl* layer) {
|
| - return layer->test_properties()->subtree_has_copy_request;
|
| + return false;
|
| }
|
|
|
| template <typename LayerType>
|
| @@ -1136,30 +1132,62 @@ static void SetLayerPropertyChangedForChild(Layer* parent, Layer* child) {
|
| static void SetLayerPropertyChangedForChild(LayerImpl* parent,
|
| LayerImpl* child) {}
|
|
|
| +static bool SubtreeIsHidden(Layer* layer) {
|
| + return !SubtreeHasCopyRequest(layer) && layer->parent() &&
|
| + layer->hide_layer_and_subtree();
|
| +}
|
| +
|
| +static bool SubtreeIsHidden(LayerImpl* layer) {
|
| + return false;
|
| +}
|
| +
|
| +static void SetIsHidden(Layer* layer, bool is_hidden) {
|
| + layer->SetIsHidden(is_hidden);
|
| + if (MaskLayer(layer))
|
| + MaskLayer(layer)->SetIsHidden(is_hidden);
|
| +}
|
| +
|
| +static void SetIsHidden(LayerImpl* layer, bool is_hidden) {}
|
| +
|
| template <typename LayerType>
|
| -void BuildPropertyTreesInternal(
|
| +void AddPropertyTreeNodesIfNeeded(
|
| LayerType* layer,
|
| - const DataForRecursion<LayerType>& data_from_parent) {
|
| + const DataForRecursion<LayerType>& data_from_parent,
|
| + DataForRecursion<LayerType>* data_for_children) {
|
| + DCHECK(!data_for_children->is_hidden);
|
| layer->set_property_tree_sequence_number(
|
| data_from_parent.property_trees->sequence_number);
|
| -
|
| - DataForRecursion<LayerType> data_for_children(data_from_parent);
|
| -
|
| bool created_render_surface =
|
| - AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children);
|
| + AddEffectNodeIfNeeded(data_from_parent, layer, data_for_children);
|
|
|
| if (created_render_surface)
|
| - data_for_children.render_target = data_for_children.effect_tree_parent;
|
| + data_for_children->render_target = data_for_children->effect_tree_parent;
|
|
|
| bool created_transform_node = AddTransformNodeIfNeeded(
|
| - data_from_parent, layer, created_render_surface, &data_for_children);
|
| + data_from_parent, layer, created_render_surface, data_for_children);
|
| AddClipNodeIfNeeded(data_from_parent, layer, created_transform_node,
|
| - &data_for_children);
|
| + data_for_children);
|
|
|
| - AddScrollNodeIfNeeded(data_from_parent, layer, &data_for_children);
|
| + AddScrollNodeIfNeeded(data_from_parent, layer, data_for_children);
|
|
|
| SetBackfaceVisibilityTransform(layer, created_transform_node);
|
| - SetSafeOpaqueBackgroundColor(data_from_parent, layer, &data_for_children);
|
| + SetSafeOpaqueBackgroundColor(data_from_parent, layer, data_for_children);
|
| +}
|
| +
|
| +template <typename LayerType>
|
| +void BuildPropertyTreesInternal(
|
| + LayerType* layer,
|
| + const DataForRecursion<LayerType>& data_from_parent) {
|
| + DataForRecursion<LayerType> data_for_children(data_from_parent);
|
| +
|
| + data_for_children.is_hidden =
|
| + data_from_parent.is_hidden || SubtreeIsHidden(layer);
|
| +
|
| + SetIsHidden(layer, data_for_children.is_hidden);
|
| +
|
| + // We do not create property tree nodes for hidden layers.
|
| + if (!data_for_children.is_hidden)
|
| + AddPropertyTreeNodesIfNeeded(layer, data_from_parent, &data_for_children);
|
|
|
| for (size_t i = 0; i < Children(layer).size(); ++i) {
|
| LayerType* current_child = ChildAt(layer, i);
|
| @@ -1185,6 +1213,9 @@ void BuildPropertyTreesInternal(
|
| }
|
| }
|
|
|
| + if (data_for_children.is_hidden)
|
| + return;
|
| +
|
| if (MaskLayer(layer)) {
|
| MaskLayer(layer)->set_property_tree_sequence_number(
|
| data_from_parent.property_trees->sequence_number);
|
|
|