| Index: cc/trees/property_tree_builder.cc | 
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc | 
| index 96b1bdd748511a5e4da89e36cc267bf1f8dfe4f1..1207b40de7d996b7d2c360373bd5b60f0562532e 100644 | 
| --- a/cc/trees/property_tree_builder.cc | 
| +++ b/cc/trees/property_tree_builder.cc | 
| @@ -139,6 +139,12 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, | 
| if (layer_clips_subtree) | 
| layers_are_clipped = true; | 
|  | 
| +  // Without surfaces, all non-viewport clips have to be applied using layer | 
| +  // clipping. | 
| +  bool layers_are_clipped_when_surfaces_disabled = | 
| +      layer_clips_subtree || | 
| +      parent->data.layers_are_clipped_when_surfaces_disabled; | 
| + | 
| bool applies_clip = | 
| AppliesClip(layer, data_from_ancestor, ancestor_clips_subtree); | 
| bool parent_applies_clip = !parent->data.resets_clip; | 
| @@ -153,6 +159,8 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, | 
| if (!requires_node) { | 
| data_for_children->clip_tree_parent = parent_id; | 
| DCHECK_EQ(layers_are_clipped, parent->data.layers_are_clipped); | 
| +    DCHECK_EQ(layers_are_clipped_when_surfaces_disabled, | 
| +              parent->data.layers_are_clipped_when_surfaces_disabled); | 
| } else { | 
| LayerType* transform_parent = data_for_children->transform_tree_parent; | 
| if (layer->position_constraint().is_fixed_position() && | 
| @@ -190,6 +198,8 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, | 
| node.data.resets_clip = has_unclipped_surface; | 
| node.data.target_is_clipped = data_for_children->target_is_clipped; | 
| node.data.layers_are_clipped = layers_are_clipped; | 
| +    node.data.layers_are_clipped_when_surfaces_disabled = | 
| +        layers_are_clipped_when_surfaces_disabled; | 
|  | 
| data_for_children->clip_tree_parent = | 
| data_for_children->clip_tree->Insert(node, parent_id); | 
|  |