Chromium Code Reviews| Index: cc/trees/property_tree.h |
| diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h |
| index a9f160ed7f59b99702b325f22a8a5994f8968285..7cfa12ba9f5c52909e73f42509393ac3ba0fc91a 100644 |
| --- a/cc/trees/property_tree.h |
| +++ b/cc/trees/property_tree.h |
| @@ -7,9 +7,11 @@ |
| #include <stddef.h> |
| +#include <unordered_map> |
| #include <vector> |
| #include "cc/base/cc_export.h" |
| +#include "cc/base/synced_property.h" |
| #include "ui/gfx/geometry/rect_f.h" |
| #include "ui/gfx/geometry/scroll_offset.h" |
| #include "ui/gfx/transform.h" |
| @@ -27,6 +29,9 @@ class TransformTreeData; |
| class TreeNode; |
| } |
| +class LayerTreeImpl; |
| +struct ScrollAndScaleSet; |
| + |
| // ------------------------------*IMPORTANT*--------------------------------- |
| // Each class declared here has a corresponding proto defined in |
| // cc/proto/property_tree.proto. When making any changes to a class structure |
| @@ -34,6 +39,8 @@ class TreeNode; |
| // change to its proto and the ToProtobuf and FromProtobuf methods for that |
| // class. |
| +typedef SyncedProperty<AdditionGroup<gfx::ScrollOffset>> SyncedScrollOffset; |
| + |
| template <typename T> |
| struct CC_EXPORT TreeNode { |
| TreeNode() : id(-1), parent_id(-1), owner_id(-1), data() {} |
| @@ -549,11 +556,17 @@ class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { |
| ScrollTree(); |
| ~ScrollTree() override; |
| + ScrollTree& operator=(const ScrollTree& from); |
| bool operator==(const ScrollTree& other) const; |
| void ToProtobuf(proto::PropertyTree* proto) const; |
| void FromProtobuf(const proto::PropertyTree& proto); |
| + void clear() override; |
| + |
| + typedef std::unordered_map<int, scoped_refptr<SyncedScrollOffset>> |
| + ScrollOffsetMap; |
| + |
| gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; |
| gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; |
| ScrollNode* CurrentlyScrollingNode(); |
| @@ -561,8 +574,24 @@ class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { |
| void set_currently_scrolling_node(int scroll_node_id); |
| gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; |
| + // synced_scroll_offset is supposed to be called by Layer/LayerImpl only |
| + SyncedScrollOffset* synced_scroll_offset(int layer_id); |
| + void CollectScrollDeltas(ScrollAndScaleSet* scroll_info); |
| + void UpdateScrollOffsetMapEntry(int key, |
|
ajuma
2016/03/02 18:43:10
Can this be private?
sunxd
2016/03/02 20:52:55
Done.
|
| + ScrollOffsetMap* new_scroll_offset_map, |
| + LayerTreeImpl* layer_tree_impl); |
| + void UpdateScrollOffsetMap(ScrollOffsetMap* new_scroll_offset_map, |
| + LayerTreeImpl* layer_tree_impl); |
| + ScrollOffsetMap& scroll_offset_map(); |
| + const ScrollOffsetMap& scroll_offset_map() const; |
| + void ApplySentScrollDeltasFromAbortedCommit(); |
| + bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset); |
| + |
| private: |
| int currently_scrolling_node_id_; |
| + ScrollOffsetMap layer_id_to_scroll_offset_map_; |
| + |
| + gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); |
| }; |
| class CC_EXPORT PropertyTrees final { |
| @@ -588,6 +617,8 @@ class CC_EXPORT PropertyTrees final { |
| // between property trees when this bool is false. |
| bool changed; |
| int sequence_number; |
| + bool is_main_thread; |
| + bool is_active; |
| void SetInnerViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta); |
| void SetOuterViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta); |