| Index: cc/trees/property_tree.h
|
| diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h
|
| index e863295a359f980d6797d236d55ca50bdd0ef3be..abd0a9f1d2c83587bf126a4ab26eb7ae397db64f 100644
|
| --- a/cc/trees/property_tree.h
|
| +++ b/cc/trees/property_tree.h
|
| @@ -270,8 +270,13 @@ struct CC_EXPORT ScrollNodeData {
|
| bool scrollable;
|
| uint32_t main_thread_scrolling_reasons;
|
| bool contains_non_fast_scrollable_region;
|
| -
|
| - int transform_id;
|
| + gfx::Size scroll_clip_layer_bounds;
|
| + gfx::Size bounds;
|
| + bool envelope_page_scale_layer_with_clip_layer;
|
| + bool is_inner_viewport_scroll_layer;
|
| + bool is_outer_viewport_scroll_layer;
|
| + bool is_inner_viewport_container_layer;
|
| + bool is_outer_viewport_container_layer;
|
|
|
| bool operator==(const ScrollNodeData& other) const;
|
|
|
| @@ -281,6 +286,8 @@ struct CC_EXPORT ScrollNodeData {
|
|
|
| typedef TreeNode<ScrollNodeData> ScrollNode;
|
|
|
| +class PropertyTrees;
|
| +
|
| template <typename T>
|
| class CC_EXPORT PropertyTree {
|
| public:
|
| @@ -324,11 +331,17 @@ class CC_EXPORT PropertyTree {
|
| void ToProtobuf(proto::PropertyTree* proto) const;
|
| void FromProtobuf(const proto::PropertyTree& proto);
|
|
|
| + void SetPropertyTrees(PropertyTrees* property_trees) {
|
| + property_trees_ = property_trees;
|
| + }
|
| + PropertyTrees* property_trees() const { return property_trees_; }
|
| +
|
| private:
|
| // Copy and assign are permitted. This is how we do tree sync.
|
| std::vector<T> nodes_;
|
|
|
| bool needs_update_;
|
| + PropertyTrees* property_trees_;
|
| };
|
|
|
| class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> {
|
| @@ -411,15 +424,9 @@ class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> {
|
| return device_transform_scale_factor_;
|
| }
|
|
|
| - void SetInnerViewportBoundsDelta(gfx::Vector2dF bounds_delta);
|
| - gfx::Vector2dF inner_viewport_bounds_delta() const {
|
| - return inner_viewport_bounds_delta_;
|
| - }
|
| + void UpdateInnerViewportContainerBoundsDelta();
|
|
|
| - void SetOuterViewportBoundsDelta(gfx::Vector2dF bounds_delta);
|
| - gfx::Vector2dF outer_viewport_bounds_delta() const {
|
| - return outer_viewport_bounds_delta_;
|
| - }
|
| + void UpdateOuterViewportContainerBoundsDelta();
|
|
|
| void AddNodeAffectedByInnerViewportBoundsDelta(int node_id);
|
| void AddNodeAffectedByOuterViewportBoundsDelta(int node_id);
|
| @@ -481,8 +488,6 @@ class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> {
|
| float page_scale_factor_;
|
| float device_scale_factor_;
|
| float device_transform_scale_factor_;
|
| - gfx::Vector2dF inner_viewport_bounds_delta_;
|
| - gfx::Vector2dF outer_viewport_bounds_delta_;
|
| std::vector<int> nodes_affected_by_inner_viewport_bounds_delta_;
|
| std::vector<int> nodes_affected_by_outer_viewport_bounds_delta_;
|
| };
|
| @@ -518,10 +523,15 @@ class CC_EXPORT EffectTree final : public PropertyTree<EffectNode> {
|
|
|
| class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> {
|
| public:
|
| + ScrollTree();
|
| + ~ScrollTree() override;
|
| +
|
| bool operator==(const ScrollTree& other) const;
|
|
|
| void ToProtobuf(proto::PropertyTree* proto) const;
|
| void FromProtobuf(const proto::PropertyTree& proto);
|
| +
|
| + gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const;
|
| };
|
|
|
| class CC_EXPORT PropertyTrees final {
|
| @@ -534,6 +544,13 @@ class CC_EXPORT PropertyTrees final {
|
| void ToProtobuf(proto::PropertyTrees* proto) const;
|
| void FromProtobuf(const proto::PropertyTrees& proto);
|
|
|
| + void SetupInternalPointers() {
|
| + transform_tree.SetPropertyTrees(this);
|
| + effect_tree.SetPropertyTrees(this);
|
| + clip_tree.SetPropertyTrees(this);
|
| + scroll_tree.SetPropertyTrees(this);
|
| + }
|
| +
|
| TransformTree transform_tree;
|
| EffectTree effect_tree;
|
| ClipTree clip_tree;
|
| @@ -541,6 +558,27 @@ class CC_EXPORT PropertyTrees final {
|
| bool needs_rebuild;
|
| bool non_root_surfaces_enabled;
|
| int sequence_number;
|
| +
|
| + void SetInnerViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta);
|
| + void SetOuterViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta);
|
| + void SetInnerViewportScrollBoundsDelta(gfx::Vector2dF bounds_delta);
|
| +
|
| + gfx::Vector2dF inner_viewport_container_bounds_delta() const {
|
| + return inner_viewport_container_bounds_delta_;
|
| + }
|
| +
|
| + gfx::Vector2dF outer_viewport_container_bounds_delta() const {
|
| + return outer_viewport_container_bounds_delta_;
|
| + }
|
| +
|
| + gfx::Vector2dF inner_viewport_scroll_bounds_delta() const {
|
| + return inner_viewport_scroll_bounds_delta_;
|
| + }
|
| +
|
| + private:
|
| + gfx::Vector2dF inner_viewport_container_bounds_delta_;
|
| + gfx::Vector2dF outer_viewport_container_bounds_delta_;
|
| + gfx::Vector2dF inner_viewport_scroll_bounds_delta_;
|
| };
|
|
|
| } // namespace cc
|
|
|