OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 void TreeNode<T>::FromProtobuf(const proto::TreeNode& proto) { | 36 void TreeNode<T>::FromProtobuf(const proto::TreeNode& proto) { |
37 id = proto.id(); | 37 id = proto.id(); |
38 parent_id = proto.parent_id(); | 38 parent_id = proto.parent_id(); |
39 owner_id = proto.owner_id(); | 39 owner_id = proto.owner_id(); |
40 data.FromProtobuf(proto); | 40 data.FromProtobuf(proto); |
41 } | 41 } |
42 | 42 |
43 template struct TreeNode<TransformNodeData>; | 43 template struct TreeNode<TransformNodeData>; |
44 template struct TreeNode<ClipNodeData>; | 44 template struct TreeNode<ClipNodeData>; |
45 template struct TreeNode<EffectNodeData>; | 45 template struct TreeNode<EffectNodeData>; |
| 46 template struct TreeNode<ScrollNodeData>; |
46 | 47 |
47 template <typename T> | 48 template <typename T> |
48 PropertyTree<T>::PropertyTree() | 49 PropertyTree<T>::PropertyTree() |
49 : needs_update_(false) { | 50 : needs_update_(false) { |
50 nodes_.push_back(T()); | 51 nodes_.push_back(T()); |
51 back()->id = 0; | 52 back()->id = 0; |
52 back()->parent_id = -1; | 53 back()->parent_id = -1; |
53 } | 54 } |
54 | 55 |
55 template <typename T> | 56 template <typename T> |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 nodes_.push_back(T()); | 112 nodes_.push_back(T()); |
112 nodes_.back().FromProtobuf(proto.nodes(i)); | 113 nodes_.back().FromProtobuf(proto.nodes(i)); |
113 } | 114 } |
114 | 115 |
115 needs_update_ = proto.needs_update(); | 116 needs_update_ = proto.needs_update(); |
116 } | 117 } |
117 | 118 |
118 template class PropertyTree<TransformNode>; | 119 template class PropertyTree<TransformNode>; |
119 template class PropertyTree<ClipNode>; | 120 template class PropertyTree<ClipNode>; |
120 template class PropertyTree<EffectNode>; | 121 template class PropertyTree<EffectNode>; |
| 122 template class PropertyTree<ScrollNode>; |
121 | 123 |
122 TransformNodeData::TransformNodeData() | 124 TransformNodeData::TransformNodeData() |
123 : target_id(-1), | 125 : target_id(-1), |
124 content_target_id(-1), | 126 content_target_id(-1), |
125 source_node_id(-1), | 127 source_node_id(-1), |
126 needs_local_transform_update(true), | 128 needs_local_transform_update(true), |
127 is_invertible(true), | 129 is_invertible(true), |
128 ancestors_are_invertible(true), | 130 ancestors_are_invertible(true), |
129 is_animated(false), | 131 is_animated(false), |
130 to_screen_is_animated(false), | 132 to_screen_is_animated(false), |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 const proto::EffectNodeData& data = proto.effect_node_data(); | 443 const proto::EffectNodeData& data = proto.effect_node_data(); |
442 | 444 |
443 opacity = data.opacity(); | 445 opacity = data.opacity(); |
444 screen_space_opacity = data.screen_space_opacity(); | 446 screen_space_opacity = data.screen_space_opacity(); |
445 has_render_surface = data.has_render_surface(); | 447 has_render_surface = data.has_render_surface(); |
446 num_copy_requests_in_subtree = data.num_copy_requests_in_subtree(); | 448 num_copy_requests_in_subtree = data.num_copy_requests_in_subtree(); |
447 transform_id = data.transform_id(); | 449 transform_id = data.transform_id(); |
448 clip_id = data.clip_id(); | 450 clip_id = data.clip_id(); |
449 } | 451 } |
450 | 452 |
| 453 ScrollNodeData::ScrollNodeData() |
| 454 : scrollable(false), |
| 455 should_scroll_on_main_thread(false), |
| 456 scroll_blocks_on(ScrollBlocksOn::SCROLL_BLOCKS_ON_NONE), |
| 457 contains_non_fast_scrollable_region(false), |
| 458 transform_id(0) {} |
| 459 |
| 460 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { |
| 461 return scrollable == other.scrollable && |
| 462 should_scroll_on_main_thread == other.should_scroll_on_main_thread && |
| 463 scroll_blocks_on == other.scroll_blocks_on && |
| 464 contains_non_fast_scrollable_region == |
| 465 other.contains_non_fast_scrollable_region && |
| 466 transform_id == other.transform_id; |
| 467 } |
| 468 |
| 469 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { |
| 470 DCHECK(!proto->has_scroll_node_data()); |
| 471 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); |
| 472 data->set_scrollable(scrollable); |
| 473 data->set_should_scroll_on_main_thread(should_scroll_on_main_thread); |
| 474 data->set_scroll_blocks_on(scroll_blocks_on); |
| 475 data->set_contains_non_fast_scrollable_region( |
| 476 contains_non_fast_scrollable_region); |
| 477 data->set_transform_id(transform_id); |
| 478 } |
| 479 |
| 480 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { |
| 481 DCHECK(proto.has_scroll_node_data()); |
| 482 const proto::ScrollNodeData& data = proto.scroll_node_data(); |
| 483 |
| 484 scrollable = data.scrollable(); |
| 485 should_scroll_on_main_thread = data.should_scroll_on_main_thread(); |
| 486 scroll_blocks_on = (ScrollBlocksOn)data.scroll_blocks_on(); |
| 487 contains_non_fast_scrollable_region = |
| 488 data.contains_non_fast_scrollable_region(); |
| 489 transform_id = data.transform_id(); |
| 490 } |
| 491 |
451 void TransformTree::clear() { | 492 void TransformTree::clear() { |
452 PropertyTree<TransformNode>::clear(); | 493 PropertyTree<TransformNode>::clear(); |
453 | 494 |
454 nodes_affected_by_inner_viewport_bounds_delta_.clear(); | 495 nodes_affected_by_inner_viewport_bounds_delta_.clear(); |
455 nodes_affected_by_outer_viewport_bounds_delta_.clear(); | 496 nodes_affected_by_outer_viewport_bounds_delta_.clear(); |
456 } | 497 } |
457 | 498 |
458 bool TransformTree::ComputeTransform(int source_id, | 499 bool TransformTree::ComputeTransform(int source_id, |
459 int dest_id, | 500 int dest_id, |
460 gfx::Transform* transform) const { | 501 gfx::Transform* transform) const { |
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1101 PropertyTree::ToProtobuf(proto); | 1142 PropertyTree::ToProtobuf(proto); |
1102 } | 1143 } |
1103 | 1144 |
1104 void EffectTree::FromProtobuf(const proto::PropertyTree& proto) { | 1145 void EffectTree::FromProtobuf(const proto::PropertyTree& proto) { |
1105 DCHECK(proto.has_property_type()); | 1146 DCHECK(proto.has_property_type()); |
1106 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Effect); | 1147 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Effect); |
1107 | 1148 |
1108 PropertyTree::FromProtobuf(proto); | 1149 PropertyTree::FromProtobuf(proto); |
1109 } | 1150 } |
1110 | 1151 |
| 1152 bool ScrollTree::operator==(const ScrollTree& other) const { |
| 1153 return PropertyTree::operator==(other); |
| 1154 } |
| 1155 |
| 1156 void ScrollTree::ToProtobuf(proto::PropertyTree* proto) const { |
| 1157 DCHECK(!proto->has_property_type()); |
| 1158 proto->set_property_type(proto::PropertyTree::Scroll); |
| 1159 |
| 1160 PropertyTree::ToProtobuf(proto); |
| 1161 } |
| 1162 |
| 1163 void ScrollTree::FromProtobuf(const proto::PropertyTree& proto) { |
| 1164 DCHECK(proto.has_property_type()); |
| 1165 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Scroll); |
| 1166 |
| 1167 PropertyTree::FromProtobuf(proto); |
| 1168 } |
| 1169 |
1111 PropertyTrees::PropertyTrees() | 1170 PropertyTrees::PropertyTrees() |
1112 : needs_rebuild(true), | 1171 : needs_rebuild(true), |
1113 non_root_surfaces_enabled(true), | 1172 non_root_surfaces_enabled(true), |
1114 sequence_number(0) {} | 1173 sequence_number(0) {} |
1115 | 1174 |
| 1175 PropertyTrees::~PropertyTrees() {} |
| 1176 |
1116 bool PropertyTrees::operator==(const PropertyTrees& other) const { | 1177 bool PropertyTrees::operator==(const PropertyTrees& other) const { |
1117 return transform_tree == other.transform_tree && | 1178 return transform_tree == other.transform_tree && |
1118 effect_tree == other.effect_tree && clip_tree == other.clip_tree && | 1179 effect_tree == other.effect_tree && clip_tree == other.clip_tree && |
| 1180 scroll_tree == other.scroll_tree && |
1119 needs_rebuild == other.needs_rebuild && | 1181 needs_rebuild == other.needs_rebuild && |
1120 non_root_surfaces_enabled == other.non_root_surfaces_enabled && | 1182 non_root_surfaces_enabled == other.non_root_surfaces_enabled && |
1121 sequence_number == other.sequence_number; | 1183 sequence_number == other.sequence_number; |
1122 } | 1184 } |
1123 | 1185 |
1124 void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const { | 1186 void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const { |
1125 // TODO(khushalsagar): Add support for sending diffs when serializaing | 1187 // TODO(khushalsagar): Add support for sending diffs when serializaing |
1126 // property trees. See crbug/555370. | 1188 // property trees. See crbug/555370. |
1127 transform_tree.ToProtobuf(proto->mutable_transform_tree()); | 1189 transform_tree.ToProtobuf(proto->mutable_transform_tree()); |
1128 effect_tree.ToProtobuf(proto->mutable_effect_tree()); | 1190 effect_tree.ToProtobuf(proto->mutable_effect_tree()); |
1129 clip_tree.ToProtobuf(proto->mutable_clip_tree()); | 1191 clip_tree.ToProtobuf(proto->mutable_clip_tree()); |
| 1192 scroll_tree.ToProtobuf(proto->mutable_scroll_tree()); |
1130 proto->set_needs_rebuild(needs_rebuild); | 1193 proto->set_needs_rebuild(needs_rebuild); |
1131 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); | 1194 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); |
1132 | 1195 |
1133 // TODO(khushalsagar): Consider using the sequence number to decide if | 1196 // TODO(khushalsagar): Consider using the sequence number to decide if |
1134 // property trees need to be serialized again for a commit. See crbug/555370. | 1197 // property trees need to be serialized again for a commit. See crbug/555370. |
1135 proto->set_sequence_number(sequence_number); | 1198 proto->set_sequence_number(sequence_number); |
1136 } | 1199 } |
1137 | 1200 |
1138 // static | 1201 // static |
1139 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { | 1202 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { |
1140 transform_tree.FromProtobuf(proto.transform_tree()); | 1203 transform_tree.FromProtobuf(proto.transform_tree()); |
1141 effect_tree.FromProtobuf(proto.effect_tree()); | 1204 effect_tree.FromProtobuf(proto.effect_tree()); |
1142 clip_tree.FromProtobuf(proto.clip_tree()); | 1205 clip_tree.FromProtobuf(proto.clip_tree()); |
| 1206 scroll_tree.FromProtobuf(proto.scroll_tree()); |
1143 | 1207 |
1144 needs_rebuild = proto.needs_rebuild(); | 1208 needs_rebuild = proto.needs_rebuild(); |
1145 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); | 1209 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); |
1146 sequence_number = proto.sequence_number(); | 1210 sequence_number = proto.sequence_number(); |
1147 } | 1211 } |
1148 | 1212 |
1149 } // namespace cc | 1213 } // namespace cc |
OLD | NEW |