Index: cc/layers/layer.cc |
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc |
index 5ebe0d8c41a422e8a8e786c5ec7dde89c7cc4bbb..1b506dc02f2169fbef14b61462c485832685fe81 100644 |
--- a/cc/layers/layer.cc |
+++ b/cc/layers/layer.cc |
@@ -1418,6 +1418,56 @@ void Layer::FromLayerNodeProto(const proto::LayerNode& proto, |
} |
} |
+bool Layer::ToLayerPropertiesProto(proto::LayerUpdate* layer_update) { |
+ if (!needs_push_properties_ && num_dependents_need_push_properties_ == 0) |
+ return false; |
+ |
+ // Always set properties metadata for serialized layers. |
+ proto::LayerProperties* proto = layer_update->add_layers(); |
+ proto->set_id(layer_id_); |
+ proto->set_needs_push_properties(needs_push_properties_); |
+ proto->set_num_dependents_need_push_properties( |
+ num_dependents_need_push_properties_); |
+ |
+ if (needs_push_properties_) |
+ LayerSpecificPropertiesToProto(proto); |
+ |
+ needs_push_properties_ = false; |
+ |
+ bool descendant_needs_push_properties = |
+ num_dependents_need_push_properties_ > 0; |
+ num_dependents_need_push_properties_ = 0; |
+ |
+ return descendant_needs_push_properties; |
+} |
+ |
+void Layer::FromLayerPropertiesProto(const proto::LayerProperties& proto) { |
+ DCHECK(proto.has_id()); |
+ DCHECK_EQ(layer_id_, proto.id()); |
+ DCHECK(proto.has_needs_push_properties()); |
+ needs_push_properties_ = proto.needs_push_properties(); |
+ DCHECK(proto.has_num_dependents_need_push_properties()); |
+ num_dependents_need_push_properties_ = |
+ proto.num_dependents_need_push_properties(); |
+ |
+ if (!needs_push_properties_) |
+ return; |
+ |
+ FromLayerSpecificPropertiesProto(proto); |
+} |
+ |
+void Layer::LayerSpecificPropertiesToProto(proto::LayerProperties* proto) { |
+ // TODO(nyquist): Write all required properties to |proto|. |
+ // Create an empty proto::LayerProperties::base message. |
+ proto->mutable_base(); |
+} |
+ |
+void Layer::FromLayerSpecificPropertiesProto( |
+ const proto::LayerProperties& proto) { |
+ DCHECK(proto.has_base()); |
+ // TODO(nyquist): Read all required properties from |proto|. |
+} |
+ |
scoped_ptr<LayerImpl> Layer::CreateLayerImpl(LayerTreeImpl* tree_impl) { |
return LayerImpl::Create(tree_impl, layer_id_, |
new LayerImpl::SyncedScrollOffset); |