| Index: cc/trees/property_tree.h
|
| diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h
|
| index 625bbc4ddcd6db6a605b9ce5b3ecdce9612923fa..688f4f9d47aa97a3da6f475957e505ba577ce356 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 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);
|
| + void UpdateScrollOffsetMapEntry(int key,
|
| + ScrollOffsetMap* new_scroll_offset_map,
|
| + LayerTreeImpl* layer_tree_impl);
|
| };
|
|
|
| class CC_EXPORT PropertyTrees final {
|
| @@ -594,6 +623,8 @@ class CC_EXPORT PropertyTrees final {
|
| // individual nodes.
|
| bool full_tree_damaged;
|
| int sequence_number;
|
| + bool is_main_thread;
|
| + bool is_active;
|
| enum ResetFlags { EFFECT_TREE, TRANSFORM_TREE, ALL_TREES };
|
|
|
| void SetInnerViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta);
|
|
|