| Index: cc/layers/layer.cc
|
| diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc
|
| index ffdfef30be72afac0e43bcfc22975b11193be2b2..c477da3aadbc4ee2bb24a63f0ff1b93dfdf9b9c4 100644
|
| --- a/cc/layers/layer.cc
|
| +++ b/cc/layers/layer.cc
|
| @@ -43,9 +43,8 @@ namespace cc {
|
|
|
| base::StaticAtomicSequenceNumber g_next_layer_id;
|
|
|
| -Layer::Inputs::Inputs()
|
| - : // Layer IDs start from 1.
|
| - layer_id(g_next_layer_id.GetNext() + 1),
|
| +Layer::Inputs::Inputs(int layer_id)
|
| + : layer_id(layer_id),
|
| masks_to_bounds(false),
|
| mask_layer(nullptr),
|
| opacity(1.f),
|
| @@ -78,10 +77,15 @@ scoped_refptr<Layer> Layer::Create() {
|
| }
|
|
|
| Layer::Layer()
|
| + // Layer IDs start from 1.
|
| + : Layer(g_next_layer_id.GetNext() + 1) {}
|
| +
|
| +Layer::Layer(int layer_id)
|
| : ignore_set_needs_commit_(false),
|
| parent_(nullptr),
|
| layer_tree_host_(nullptr),
|
| layer_tree_(nullptr),
|
| + inputs_(layer_id),
|
| num_descendants_that_draw_content_(0),
|
| transform_tree_index_(TransformTree::kInvalidNodeId),
|
| effect_tree_index_(EffectTree::kInvalidNodeId),
|
| @@ -1295,11 +1299,12 @@ void Layer::FromLayerNodeProto(const proto::LayerNode& proto,
|
| }
|
| }
|
|
|
| -void Layer::ToLayerPropertiesProto(proto::LayerUpdate* layer_update) {
|
| +void Layer::ToLayerPropertiesProto(proto::LayerUpdate* layer_update,
|
| + bool inputs_only) {
|
| // Always set properties metadata for serialized layers.
|
| proto::LayerProperties* proto = layer_update->add_layers();
|
| proto->set_id(inputs_.layer_id);
|
| - LayerSpecificPropertiesToProto(proto);
|
| + LayerSpecificPropertiesToProto(proto, inputs_only);
|
| }
|
|
|
| void Layer::FromLayerPropertiesProto(const proto::LayerProperties& proto) {
|
| @@ -1308,28 +1313,80 @@ void Layer::FromLayerPropertiesProto(const proto::LayerProperties& proto) {
|
| FromLayerSpecificPropertiesProto(proto);
|
| }
|
|
|
| -void Layer::LayerSpecificPropertiesToProto(proto::LayerProperties* proto) {
|
| +void Layer::LayerSpecificPropertiesToProto(proto::LayerProperties* proto,
|
| + bool inputs_only) {
|
| proto::BaseLayerProperties* base = proto->mutable_base();
|
|
|
| + // Layer::Inputs Serialization ---------------------------------
|
| + RectToProto(inputs_.update_rect, base->mutable_update_rect());
|
| + inputs_.update_rect = gfx::Rect();
|
| +
|
| bool use_paint_properties = layer_tree_host_ &&
|
| paint_properties_.source_frame_number ==
|
| layer_tree_host_->SourceFrameNumber();
|
| + SizeToProto(use_paint_properties ? paint_properties_.bounds : inputs_.bounds,
|
| + base->mutable_bounds());
|
|
|
| + base->set_masks_to_bounds(inputs_.masks_to_bounds);
|
| + base->set_opacity(inputs_.opacity);
|
| + base->set_blend_mode(SkXfermodeModeToProto(inputs_.blend_mode));
|
| + base->set_is_root_for_isolated_group(inputs_.is_root_for_isolated_group);
|
| + base->set_contents_opaque(inputs_.contents_opaque);
|
| + PointFToProto(inputs_.position, base->mutable_position());
|
| + TransformToProto(inputs_.transform, base->mutable_transform());
|
| Point3FToProto(inputs_.transform_origin, base->mutable_transform_origin());
|
| + base->set_is_drawable(inputs_.is_drawable);
|
| + base->set_double_sided(inputs_.double_sided);
|
| + base->set_should_flatten_transform(inputs_.should_flatten_transform);
|
| + base->set_sorting_context_id(inputs_.sorting_context_id);
|
| + base->set_use_parent_backface_visibility(
|
| + inputs_.use_parent_backface_visibility);
|
| base->set_background_color(inputs_.background_color);
|
| - base->set_safe_opaque_background_color(safe_opaque_background_color_);
|
| - SizeToProto(use_paint_properties ? paint_properties_.bounds : inputs_.bounds,
|
| - base->mutable_bounds());
|
| + ScrollOffsetToProto(inputs_.scroll_offset, base->mutable_scroll_offset());
|
| + base->set_scroll_clip_layer_id(inputs_.scroll_clip_layer_id);
|
| + base->set_user_scrollable_horizontal(inputs_.user_scrollable_horizontal);
|
| + base->set_user_scrollable_vertical(inputs_.user_scrollable_vertical);
|
| + base->set_main_thread_scrolling_reasons(
|
| + inputs_.main_thread_scrolling_reasons);
|
| + RegionToProto(inputs_.non_fast_scrollable_region,
|
| + base->mutable_non_fast_scrollable_region());
|
| + RegionToProto(inputs_.touch_event_handler_region,
|
| + base->mutable_touch_event_handler_region());
|
| + base->set_is_container_for_fixed_position_layers(
|
| + inputs_.is_container_for_fixed_position_layers);
|
| + inputs_.position_constraint.ToProtobuf(base->mutable_position_constraint());
|
| + inputs_.sticky_position_constraint.ToProtobuf(
|
| + base->mutable_sticky_position_constraint());
|
|
|
| - // TODO(nyquist): Figure out what to do with debug info. See crbug.com/570372.
|
| + int scroll_parent_id =
|
| + inputs_.scroll_parent ? inputs_.scroll_parent->id() : INVALID_ID;
|
| + base->set_scroll_parent_id(scroll_parent_id);
|
| +
|
| + int clip_parent_id =
|
| + inputs_.clip_parent ? inputs_.clip_parent->id() : INVALID_ID;
|
| + base->set_clip_parent_id(clip_parent_id);
|
| +
|
| + base->set_has_will_change_transform_hint(
|
| + inputs_.has_will_change_transform_hint);
|
| + base->set_hide_layer_and_subtree(inputs_.hide_layer_and_subtree);
|
| +
|
| + // TODO(nyquist): Add support for serializing FilterOperations for
|
| + // |filters_| and |background_filters_|. See crbug.com/541321.
|
| +
|
| + if (inputs_only)
|
| + return;
|
| + // -----------------------------------------------------------
|
| +
|
| + // TODO(khushalsagar): Stop serializing the data below when crbug.com/648442.
|
|
|
| + base->set_safe_opaque_background_color(safe_opaque_background_color_);
|
| + // TODO(nyquist): Figure out what to do with debug info. See crbug.com/570372.
|
| base->set_transform_free_index(transform_tree_index_);
|
| base->set_effect_tree_index(effect_tree_index_);
|
| base->set_clip_tree_index(clip_tree_index_);
|
| base->set_scroll_tree_index(scroll_tree_index_);
|
| Vector2dFToProto(offset_to_transform_parent_,
|
| base->mutable_offset_to_transform_parent());
|
| - base->set_double_sided(inputs_.double_sided);
|
| base->set_draws_content(draws_content_);
|
| base->set_may_contain_video(may_contain_video_);
|
| base->set_hide_layer_and_subtree(inputs_.hide_layer_and_subtree);
|
| @@ -1357,49 +1414,22 @@ void Layer::LayerSpecificPropertiesToProto(proto::LayerProperties* proto) {
|
| base->set_should_flatten_transform_from_property_tree(
|
| should_flatten_transform_from_property_tree_);
|
| base->set_draw_blend_mode(SkXfermodeModeToProto(draw_blend_mode_));
|
| - base->set_use_parent_backface_visibility(
|
| - inputs_.use_parent_backface_visibility);
|
| - TransformToProto(inputs_.transform, base->mutable_transform());
|
| - base->set_sorting_context_id(inputs_.sorting_context_id);
|
| base->set_num_descendants_that_draw_content(
|
| num_descendants_that_draw_content_);
|
| -
|
| - base->set_scroll_clip_layer_id(inputs_.scroll_clip_layer_id);
|
| - base->set_user_scrollable_horizontal(inputs_.user_scrollable_horizontal);
|
| - base->set_user_scrollable_vertical(inputs_.user_scrollable_vertical);
|
| -
|
| - int scroll_parent_id =
|
| - inputs_.scroll_parent ? inputs_.scroll_parent->id() : INVALID_ID;
|
| - base->set_scroll_parent_id(scroll_parent_id);
|
| -
|
| if (scroll_children_) {
|
| for (auto* child : *scroll_children_)
|
| base->add_scroll_children_ids(child->id());
|
| }
|
| -
|
| - int clip_parent_id =
|
| - inputs_.clip_parent ? inputs_.clip_parent->id() : INVALID_ID;
|
| - base->set_clip_parent_id(clip_parent_id);
|
| -
|
| if (clip_children_) {
|
| for (auto* child : *clip_children_)
|
| base->add_clip_children_ids(child->id());
|
| }
|
|
|
| - ScrollOffsetToProto(inputs_.scroll_offset, base->mutable_scroll_offset());
|
| -
|
| // TODO(nyquist): Figure out what to do with CopyRequests.
|
| // See crbug.com/570374.
|
|
|
| - RectToProto(inputs_.update_rect, base->mutable_update_rect());
|
| -
|
| // TODO(nyquist): Figure out what to do with ElementAnimations.
|
| // See crbug.com/570376.
|
| -
|
| - inputs_.update_rect = gfx::Rect();
|
| -
|
| - base->set_has_will_change_transform_hint(
|
| - inputs_.has_will_change_transform_hint);
|
| }
|
|
|
| void Layer::FromLayerSpecificPropertiesProto(
|
|
|