| Index: cc/trees/property_tree.cc
|
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
|
| index 1a4b0719fa93e33f6bd13fbd91249d41c6a2261c..562f7a5fe69ea1b15f5c11c9207f7700e348f4c9 100644
|
| --- a/cc/trees/property_tree.cc
|
| +++ b/cc/trees/property_tree.cc
|
| @@ -43,6 +43,7 @@ void TreeNode<T>::FromProtobuf(const proto::TreeNode& proto) {
|
| template struct TreeNode<TransformNodeData>;
|
| template struct TreeNode<ClipNodeData>;
|
| template struct TreeNode<EffectNodeData>;
|
| +template struct TreeNode<ScrollNodeData>;
|
|
|
| template <typename T>
|
| PropertyTree<T>::PropertyTree()
|
| @@ -118,6 +119,7 @@ void PropertyTree<T>::FromProtobuf(const proto::PropertyTree& proto) {
|
| template class PropertyTree<TransformNode>;
|
| template class PropertyTree<ClipNode>;
|
| template class PropertyTree<EffectNode>;
|
| +template class PropertyTree<ScrollNode>;
|
|
|
| TransformNodeData::TransformNodeData()
|
| : target_id(-1),
|
| @@ -448,6 +450,45 @@ void EffectNodeData::FromProtobuf(const proto::TreeNode& proto) {
|
| clip_id = data.clip_id();
|
| }
|
|
|
| +ScrollNodeData::ScrollNodeData()
|
| + : scrollable(false),
|
| + should_scroll_on_main_thread(false),
|
| + scroll_blocks_on(ScrollBlocksOn::SCROLL_BLOCKS_ON_NONE),
|
| + contains_non_fast_scrollable_region(false),
|
| + transform_id(0) {}
|
| +
|
| +bool ScrollNodeData::operator==(const ScrollNodeData& other) const {
|
| + return scrollable == other.scrollable &&
|
| + should_scroll_on_main_thread == other.should_scroll_on_main_thread &&
|
| + scroll_blocks_on == other.scroll_blocks_on &&
|
| + contains_non_fast_scrollable_region ==
|
| + other.contains_non_fast_scrollable_region &&
|
| + transform_id == other.transform_id;
|
| +}
|
| +
|
| +void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const {
|
| + DCHECK(!proto->has_scroll_node_data());
|
| + proto::ScrollNodeData* data = proto->mutable_scroll_node_data();
|
| + data->set_scrollable(scrollable);
|
| + data->set_should_scroll_on_main_thread(should_scroll_on_main_thread);
|
| + data->set_scroll_blocks_on(scroll_blocks_on);
|
| + data->set_contains_non_fast_scrollable_region(
|
| + contains_non_fast_scrollable_region);
|
| + data->set_transform_id(transform_id);
|
| +}
|
| +
|
| +void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) {
|
| + DCHECK(proto.has_scroll_node_data());
|
| + const proto::ScrollNodeData& data = proto.scroll_node_data();
|
| +
|
| + scrollable = data.scrollable();
|
| + should_scroll_on_main_thread = data.should_scroll_on_main_thread();
|
| + scroll_blocks_on = (ScrollBlocksOn)data.scroll_blocks_on();
|
| + contains_non_fast_scrollable_region =
|
| + data.contains_non_fast_scrollable_region();
|
| + transform_id = data.transform_id();
|
| +}
|
| +
|
| void TransformTree::clear() {
|
| PropertyTree<TransformNode>::clear();
|
|
|
| @@ -1108,14 +1149,35 @@ void EffectTree::FromProtobuf(const proto::PropertyTree& proto) {
|
| PropertyTree::FromProtobuf(proto);
|
| }
|
|
|
| +bool ScrollTree::operator==(const ScrollTree& other) const {
|
| + return PropertyTree::operator==(other);
|
| +}
|
| +
|
| +void ScrollTree::ToProtobuf(proto::PropertyTree* proto) const {
|
| + DCHECK(!proto->has_property_type());
|
| + proto->set_property_type(proto::PropertyTree::Scroll);
|
| +
|
| + PropertyTree::ToProtobuf(proto);
|
| +}
|
| +
|
| +void ScrollTree::FromProtobuf(const proto::PropertyTree& proto) {
|
| + DCHECK(proto.has_property_type());
|
| + DCHECK_EQ(proto.property_type(), proto::PropertyTree::Scroll);
|
| +
|
| + PropertyTree::FromProtobuf(proto);
|
| +}
|
| +
|
| PropertyTrees::PropertyTrees()
|
| : needs_rebuild(true),
|
| non_root_surfaces_enabled(true),
|
| sequence_number(0) {}
|
|
|
| +PropertyTrees::~PropertyTrees() {}
|
| +
|
| bool PropertyTrees::operator==(const PropertyTrees& other) const {
|
| return transform_tree == other.transform_tree &&
|
| effect_tree == other.effect_tree && clip_tree == other.clip_tree &&
|
| + scroll_tree == other.scroll_tree &&
|
| needs_rebuild == other.needs_rebuild &&
|
| non_root_surfaces_enabled == other.non_root_surfaces_enabled &&
|
| sequence_number == other.sequence_number;
|
| @@ -1127,6 +1189,7 @@ void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const {
|
| transform_tree.ToProtobuf(proto->mutable_transform_tree());
|
| effect_tree.ToProtobuf(proto->mutable_effect_tree());
|
| clip_tree.ToProtobuf(proto->mutable_clip_tree());
|
| + scroll_tree.ToProtobuf(proto->mutable_scroll_tree());
|
| proto->set_needs_rebuild(needs_rebuild);
|
| proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled);
|
|
|
| @@ -1140,6 +1203,7 @@ void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) {
|
| transform_tree.FromProtobuf(proto.transform_tree());
|
| effect_tree.FromProtobuf(proto.effect_tree());
|
| clip_tree.FromProtobuf(proto.clip_tree());
|
| + scroll_tree.FromProtobuf(proto.scroll_tree());
|
|
|
| needs_rebuild = proto.needs_rebuild();
|
| non_root_surfaces_enabled = proto.non_root_surfaces_enabled();
|
|
|