Index: cc/trees/property_tree_builder.cc |
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc |
index 7f35dd96ef481d61b0bf8f8ddcb38da5e3e2bdc9..f9ebb6f922df3d573ce8e674e3252e65c066c2e1 100644 |
--- a/cc/trees/property_tree_builder.cc |
+++ b/cc/trees/property_tree_builder.cc |
@@ -13,9 +13,13 @@ |
#include "cc/layers/layer.h" |
#include "cc/layers/layer_impl.h" |
#include "cc/output/copy_output_request.h" |
+#include "cc/trees/clip_node.h" |
#include "cc/trees/draw_property_utils.h" |
+#include "cc/trees/effect_node.h" |
#include "cc/trees/layer_tree_host.h" |
#include "cc/trees/layer_tree_impl.h" |
+#include "cc/trees/scroll_node.h" |
+#include "cc/trees/transform_node.h" |
#include "ui/gfx/geometry/point_f.h" |
#include "ui/gfx/geometry/vector2d_conversions.h" |
@@ -280,7 +284,7 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, |
bool is_root = !Parent(layer); |
// Whether we have an ancestor clip that we might need to apply. |
- bool ancestor_clips_subtree = is_root || parent->data.layers_are_clipped; |
+ bool ancestor_clips_subtree = is_root || parent->layers_are_clipped; |
bool layers_are_clipped = false; |
bool has_unclipped_surface = false; |
@@ -299,7 +303,7 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, |
// of its own, but clips from ancestor nodes don't need to be considered |
// when computing clip rects or visibility. |
has_unclipped_surface = true; |
- DCHECK(!parent->data.applies_local_clip); |
+ DCHECK(!parent->applies_local_clip); |
} |
// A surface with unclipped descendants cannot be clipped by its ancestor |
// clip at draw time since the unclipped descendants aren't affected by the |
@@ -320,8 +324,7 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, |
// 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; |
+ layer_clips_subtree || parent->layers_are_clipped_when_surfaces_disabled; |
// Render surface's clip is needed during hit testing. So, we need to create |
// a clip node for every render surface. |
@@ -329,9 +332,9 @@ 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, parent->layers_are_clipped); |
DCHECK_EQ(layers_are_clipped_when_surfaces_disabled, |
- parent->data.layers_are_clipped_when_surfaces_disabled); |
+ parent->layers_are_clipped_when_surfaces_disabled); |
} else { |
LayerType* transform_parent = data_for_children->transform_tree_parent; |
if (PositionConstraint(layer).is_fixed_position() && |
@@ -339,32 +342,31 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, |
transform_parent = data_for_children->transform_fixed_parent; |
} |
ClipNode node; |
- node.data.clip = |
- gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(), |
- gfx::SizeF(layer->bounds())); |
- node.data.transform_id = transform_parent->transform_tree_index(); |
- node.data.target_id = data_for_children->property_trees->effect_tree |
- .Node(data_for_children->render_target) |
- ->data.transform_id; |
+ node.clip = gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(), |
+ gfx::SizeF(layer->bounds())); |
+ node.transform_id = transform_parent->transform_tree_index(); |
+ node.target_id = data_for_children->property_trees->effect_tree |
+ .Node(data_for_children->render_target) |
+ ->transform_id; |
node.owner_id = layer->id(); |
if (ancestor_clips_subtree || layer_clips_subtree) { |
// Surfaces reset the rect used for layer clipping. At other nodes, layer |
// clipping state from ancestors must continue to get propagated. |
- node.data.layer_clipping_uses_only_local_clip = |
+ node.layer_clipping_uses_only_local_clip = |
(created_render_surface && NumUnclippedDescendants(layer) == 0) || |
!ancestor_clips_subtree; |
} else { |
// Otherwise, we're either unclipped, or exist only in order to apply our |
// parent's clips in our space. |
- node.data.layer_clipping_uses_only_local_clip = false; |
+ node.layer_clipping_uses_only_local_clip = false; |
} |
- node.data.applies_local_clip = layer_clips_subtree; |
- 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 = |
+ node.applies_local_clip = layer_clips_subtree; |
+ node.resets_clip = has_unclipped_surface; |
+ node.target_is_clipped = data_for_children->target_is_clipped; |
+ node.layers_are_clipped = layers_are_clipped; |
+ node.layers_are_clipped_when_surfaces_disabled = |
layers_are_clipped_when_surfaces_disabled; |
data_for_children->clip_tree_parent = |
@@ -528,14 +530,14 @@ bool AddTransformNodeIfNeeded( |
data_for_children->property_trees->transform_id_to_index_map[layer->id()] = |
node->id; |
- node->data.scrolls = is_scrollable; |
- node->data.flattens_inherited_transform = data_for_children->should_flatten; |
+ node->scrolls = is_scrollable; |
+ node->flattens_inherited_transform = data_for_children->should_flatten; |
- node->data.sorting_context_id = layer->sorting_context_id(); |
+ node->sorting_context_id = layer->sorting_context_id(); |
if (layer == data_from_ancestor.page_scale_layer) |
data_for_children->in_subtree_of_page_scale_layer = true; |
- node->data.in_subtree_of_page_scale_layer = |
+ node->in_subtree_of_page_scale_layer = |
data_for_children->in_subtree_of_page_scale_layer; |
// Surfaces inherently flatten transforms. |
@@ -546,19 +548,19 @@ bool AddTransformNodeIfNeeded( |
data_for_children->property_trees->transform_tree.SetTargetId( |
node->id, data_for_children->property_trees->effect_tree |
.Node(data_from_ancestor.render_target) |
- ->data.transform_id); |
+ ->transform_id); |
data_for_children->property_trees->transform_tree.SetContentTargetId( |
node->id, data_for_children->property_trees->effect_tree |
.Node(data_for_children->render_target) |
- ->data.transform_id); |
+ ->transform_id); |
DCHECK_NE( |
data_for_children->property_trees->transform_tree.TargetId(node->id), |
kInvalidPropertyTreeNodeId); |
- node->data.has_potential_animation = has_potentially_animated_transform; |
- node->data.is_currently_animating = layer->TransformIsAnimating(); |
+ node->has_potential_animation = has_potentially_animated_transform; |
+ node->is_currently_animating = layer->TransformIsAnimating(); |
if (has_potentially_animated_transform) { |
- node->data.has_only_translation_animations = |
+ node->has_only_translation_animations = |
layer->HasOnlyTranslationTransforms(); |
} |
@@ -574,57 +576,57 @@ bool AddTransformNodeIfNeeded( |
} |
if (has_surface && !is_root) |
- node->data.needs_sublayer_scale = true; |
+ node->needs_sublayer_scale = true; |
- node->data.source_node_id = source_index; |
- node->data.post_local_scale_factor = post_local_scale_factor; |
+ node->source_node_id = source_index; |
+ node->post_local_scale_factor = post_local_scale_factor; |
if (is_root) { |
data_for_children->property_trees->transform_tree.SetDeviceTransform( |
*data_from_ancestor.device_transform, layer->position()); |
data_for_children->property_trees->transform_tree |
.SetDeviceTransformScaleFactor(*data_from_ancestor.device_transform); |
} else { |
- node->data.source_offset = source_offset; |
- node->data.update_post_local_transform(layer->position(), |
- TransformOrigin(layer)); |
+ node->source_offset = source_offset; |
+ node->update_post_local_transform(layer->position(), |
+ TransformOrigin(layer)); |
} |
if (is_overscroll_elasticity_layer) { |
DCHECK(!is_scrollable); |
- node->data.scroll_offset = |
+ node->scroll_offset = |
gfx::ScrollOffset(data_from_ancestor.elastic_overscroll); |
} else if (!ScrollParent(layer)) { |
- node->data.scroll_offset = layer->CurrentScrollOffset(); |
+ node->scroll_offset = layer->CurrentScrollOffset(); |
} |
if (is_fixed) { |
if (data_from_ancestor.affected_by_inner_viewport_bounds_delta) { |
- node->data.affected_by_inner_viewport_bounds_delta_x = |
+ node->affected_by_inner_viewport_bounds_delta_x = |
PositionConstraint(layer).is_fixed_to_right_edge(); |
- node->data.affected_by_inner_viewport_bounds_delta_y = |
+ node->affected_by_inner_viewport_bounds_delta_y = |
PositionConstraint(layer).is_fixed_to_bottom_edge(); |
- if (node->data.affected_by_inner_viewport_bounds_delta_x || |
- node->data.affected_by_inner_viewport_bounds_delta_y) { |
+ if (node->affected_by_inner_viewport_bounds_delta_x || |
+ node->affected_by_inner_viewport_bounds_delta_y) { |
data_for_children->property_trees->transform_tree |
.AddNodeAffectedByInnerViewportBoundsDelta(node->id); |
} |
} else if (data_from_ancestor.affected_by_outer_viewport_bounds_delta) { |
- node->data.affected_by_outer_viewport_bounds_delta_x = |
+ node->affected_by_outer_viewport_bounds_delta_x = |
PositionConstraint(layer).is_fixed_to_right_edge(); |
- node->data.affected_by_outer_viewport_bounds_delta_y = |
+ node->affected_by_outer_viewport_bounds_delta_y = |
PositionConstraint(layer).is_fixed_to_bottom_edge(); |
- if (node->data.affected_by_outer_viewport_bounds_delta_x || |
- node->data.affected_by_outer_viewport_bounds_delta_y) { |
+ if (node->affected_by_outer_viewport_bounds_delta_x || |
+ node->affected_by_outer_viewport_bounds_delta_y) { |
data_for_children->property_trees->transform_tree |
.AddNodeAffectedByOuterViewportBoundsDelta(node->id); |
} |
} |
} |
- node->data.local = layer->transform(); |
- node->data.update_pre_local_transform(TransformOrigin(layer)); |
+ node->local = layer->transform(); |
+ node->update_pre_local_transform(TransformOrigin(layer)); |
- node->data.needs_local_transform_update = true; |
+ node->needs_local_transform_update = true; |
data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); |
layer->set_offset_to_transform_parent(gfx::Vector2dF()); |
@@ -632,7 +634,7 @@ bool AddTransformNodeIfNeeded( |
// Flattening (if needed) will be handled by |node|. |
layer->set_should_flatten_transform_from_property_tree(false); |
- data_for_children->scroll_snap += node->data.scroll_snap; |
+ data_for_children->scroll_snap += node->scroll_snap; |
node->owner_id = layer->id(); |
@@ -893,26 +895,26 @@ bool AddEffectNodeIfNeeded( |
.push_back(node.owner_id); |
} |
- node.data.opacity = Opacity(layer); |
- node.data.has_render_surface = should_create_render_surface; |
- node.data.has_copy_request = HasCopyRequest(layer); |
- node.data.background_filters = BackgroundFilters(layer); |
- node.data.has_potential_opacity_animation = has_potential_opacity_animation; |
- node.data.double_sided = DoubleSided(layer); |
- node.data.subtree_hidden = HideLayerAndSubtree(layer); |
- node.data.is_currently_animating_opacity = layer->OpacityIsAnimating(); |
+ node.opacity = Opacity(layer); |
+ node.has_render_surface = should_create_render_surface; |
+ node.has_copy_request = HasCopyRequest(layer); |
+ node.background_filters = BackgroundFilters(layer); |
+ node.has_potential_opacity_animation = has_potential_opacity_animation; |
+ node.double_sided = DoubleSided(layer); |
+ node.subtree_hidden = HideLayerAndSubtree(layer); |
+ node.is_currently_animating_opacity = layer->OpacityIsAnimating(); |
EffectTree& effect_tree = data_for_children->property_trees->effect_tree; |
if (MaskLayer(layer)) { |
- node.data.mask_layer_id = MaskLayer(layer)->id(); |
- effect_tree.AddMaskOrReplicaLayerId(node.data.mask_layer_id); |
+ node.mask_layer_id = MaskLayer(layer)->id(); |
+ effect_tree.AddMaskOrReplicaLayerId(node.mask_layer_id); |
} |
if (ReplicaLayer(layer)) { |
- node.data.replica_layer_id = ReplicaLayer(layer)->id(); |
- effect_tree.AddMaskOrReplicaLayerId(node.data.replica_layer_id); |
+ node.replica_layer_id = ReplicaLayer(layer)->id(); |
+ effect_tree.AddMaskOrReplicaLayerId(node.replica_layer_id); |
if (MaskLayer(ReplicaLayer(layer))) { |
- node.data.replica_mask_layer_id = MaskLayer(ReplicaLayer(layer))->id(); |
- effect_tree.AddMaskOrReplicaLayerId(node.data.replica_mask_layer_id); |
+ node.replica_mask_layer_id = MaskLayer(ReplicaLayer(layer))->id(); |
+ effect_tree.AddMaskOrReplicaLayerId(node.replica_mask_layer_id); |
} |
} |
@@ -924,19 +926,18 @@ bool AddEffectNodeIfNeeded( |
// In this case, we will create a transform node, so it's safe to use the |
// next available id from the transform tree as this effect node's |
// transform id. |
- node.data.transform_id = |
+ node.transform_id = |
data_from_ancestor.property_trees->transform_tree.next_available_id(); |
- node.data.has_unclipped_descendants = |
- (NumUnclippedDescendants(layer) != 0); |
+ node.has_unclipped_descendants = (NumUnclippedDescendants(layer) != 0); |
} |
- node.data.clip_id = data_from_ancestor.clip_tree_parent; |
+ node.clip_id = data_from_ancestor.clip_tree_parent; |
} else { |
// Root render surface acts the unbounded and untransformed to draw content |
// into. Transform node created from root layer (includes device scale |
// factor) and clip node created from root layer (include viewports) applies |
// to root render surface's content, but not root render surface itself. |
- node.data.transform_id = kRootPropertyTreeNodeId; |
- node.data.clip_id = kViewportClipTreeNodeId; |
+ node.transform_id = kRootPropertyTreeNodeId; |
+ node.clip_id = kViewportClipTreeNodeId; |
} |
data_for_children->effect_tree_parent = effect_tree.Insert(node, parent_id); |
int node_id = data_for_children->effect_tree_parent; |
@@ -991,48 +992,47 @@ void AddScrollNodeIfNeeded( |
} else { |
ScrollNode node; |
node.owner_id = layer->id(); |
- node.data.scrollable = scrollable; |
- node.data.main_thread_scrolling_reasons = main_thread_scrolling_reasons; |
- node.data.contains_non_fast_scrollable_region = |
+ node.scrollable = scrollable; |
+ node.main_thread_scrolling_reasons = main_thread_scrolling_reasons; |
+ node.contains_non_fast_scrollable_region = |
contains_non_fast_scrollable_region; |
gfx::Size clip_bounds; |
if (layer->scroll_clip_layer()) { |
clip_bounds = layer->scroll_clip_layer()->bounds(); |
DCHECK(layer->scroll_clip_layer()->transform_tree_index() != |
kInvalidPropertyTreeNodeId); |
- node.data.max_scroll_offset_affected_by_page_scale = |
+ node.max_scroll_offset_affected_by_page_scale = |
!data_from_ancestor.property_trees->transform_tree |
.Node(layer->scroll_clip_layer()->transform_tree_index()) |
- ->data.in_subtree_of_page_scale_layer && |
+ ->in_subtree_of_page_scale_layer && |
data_from_ancestor.in_subtree_of_page_scale_layer; |
} |
- node.data.scroll_clip_layer_bounds = clip_bounds; |
- node.data.is_inner_viewport_scroll_layer = |
+ node.scroll_clip_layer_bounds = clip_bounds; |
+ node.is_inner_viewport_scroll_layer = |
layer == data_from_ancestor.inner_viewport_scroll_layer; |
- node.data.is_outer_viewport_scroll_layer = |
+ node.is_outer_viewport_scroll_layer = |
layer == data_from_ancestor.outer_viewport_scroll_layer; |
- node.data.bounds = layer->bounds(); |
- node.data.offset_to_transform_parent = layer->offset_to_transform_parent(); |
- node.data.should_flatten = |
- layer->should_flatten_transform_from_property_tree(); |
- node.data.user_scrollable_horizontal = layer->user_scrollable_horizontal(); |
- node.data.user_scrollable_vertical = layer->user_scrollable_vertical(); |
- node.data.element_id = layer->element_id(); |
- node.data.transform_id = |
+ node.bounds = layer->bounds(); |
+ node.offset_to_transform_parent = layer->offset_to_transform_parent(); |
+ node.should_flatten = layer->should_flatten_transform_from_property_tree(); |
+ node.user_scrollable_horizontal = layer->user_scrollable_horizontal(); |
+ node.user_scrollable_vertical = layer->user_scrollable_vertical(); |
+ node.element_id = layer->element_id(); |
+ node.transform_id = |
data_for_children->transform_tree_parent->transform_tree_index(); |
data_for_children->scroll_tree_parent = |
data_for_children->property_trees->scroll_tree.Insert(node, parent_id); |
data_for_children->main_thread_scrolling_reasons = |
- node.data.main_thread_scrolling_reasons; |
+ node.main_thread_scrolling_reasons; |
data_for_children->scroll_tree_parent_created_by_uninheritable_criteria = |
scroll_node_uninheritable_criteria; |
data_for_children->property_trees->scroll_id_to_index_map[layer->id()] = |
data_for_children->scroll_tree_parent; |
- if (node.data.scrollable) { |
+ if (node.scrollable) { |
data_for_children->property_trees->scroll_tree.SetBaseScrollOffset( |
layer->id(), layer->CurrentScrollOffset()); |
} |
@@ -1182,9 +1182,9 @@ void BuildPropertyTreesInternal( |
data_for_children.effect_tree_parent); |
if (effect_node->owner_id == layer->id()) { |
- if (effect_node->data.has_copy_request) |
+ if (effect_node->has_copy_request) |
data_to_parent->num_copy_requests_in_subtree++; |
- effect_node->data.num_copy_requests_in_subtree = |
+ effect_node->num_copy_requests_in_subtree = |
data_to_parent->num_copy_requests_in_subtree; |
} |
} |
@@ -1290,10 +1290,10 @@ void BuildPropertyTreesTopLevelInternal( |
.clear(); |
ClipNode root_clip; |
- root_clip.data.resets_clip = true; |
- root_clip.data.applies_local_clip = true; |
- root_clip.data.clip = gfx::RectF(viewport); |
- root_clip.data.transform_id = kRootPropertyTreeNodeId; |
+ root_clip.resets_clip = true; |
+ root_clip.applies_local_clip = true; |
+ root_clip.clip = gfx::RectF(viewport); |
+ root_clip.transform_id = kRootPropertyTreeNodeId; |
data_for_recursion.clip_tree_parent = |
data_for_recursion.property_trees->clip_tree.Insert( |
root_clip, kRootPropertyTreeNodeId); |