| 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 #ifndef CC_TREES_PROPERTY_TREE_H_ | 5 #ifndef CC_TREES_PROPERTY_TREE_H_ |
| 6 #define CC_TREES_PROPERTY_TREE_H_ | 6 #define CC_TREES_PROPERTY_TREE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 // Stores copy requests, keyed by node id. | 392 // Stores copy requests, keyed by node id. |
| 393 std::unordered_multimap<int, std::unique_ptr<CopyOutputRequest>> | 393 std::unordered_multimap<int, std::unique_ptr<CopyOutputRequest>> |
| 394 copy_requests_; | 394 copy_requests_; |
| 395 | 395 |
| 396 // Unsorted list of all mask layer ids that effect nodes refer to. | 396 // Unsorted list of all mask layer ids that effect nodes refer to. |
| 397 std::vector<int> mask_layer_ids_; | 397 std::vector<int> mask_layer_ids_; |
| 398 }; | 398 }; |
| 399 | 399 |
| 400 class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { | 400 class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { |
| 401 public: | 401 public: |
| 402 struct ScrollWithOverscroll; |
| 403 |
| 402 ScrollTree(); | 404 ScrollTree(); |
| 403 ~ScrollTree(); | 405 ~ScrollTree(); |
| 404 | 406 |
| 405 ScrollTree& operator=(const ScrollTree& from); | 407 ScrollTree& operator=(const ScrollTree& from); |
| 406 bool operator==(const ScrollTree& other) const; | 408 bool operator==(const ScrollTree& other) const; |
| 407 | 409 |
| 408 void ToProtobuf(proto::PropertyTree* proto) const; | 410 void ToProtobuf(proto::PropertyTree* proto) const; |
| 409 void FromProtobuf(const proto::PropertyTree& proto, | 411 void FromProtobuf(const proto::PropertyTree& proto, |
| 410 std::unordered_map<int, int>* node_id_to_index_map); | 412 std::unordered_map<int, int>* node_id_to_index_map); |
| 411 | 413 |
| 412 void clear(); | 414 void clear(); |
| 413 | 415 |
| 414 typedef std::unordered_map<int, scoped_refptr<SyncedScrollOffset>> | 416 typedef std::unordered_map<int, ScrollWithOverscroll> ScrollOffsetMap; |
| 415 ScrollOffsetMap; | |
| 416 | 417 |
| 417 gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; | 418 gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; |
| 418 void OnScrollOffsetAnimated(int layer_id, | 419 void OnScrollOffsetAnimated(int layer_id, |
| 419 int transform_tree_index, | 420 int transform_tree_index, |
| 420 int scroll_tree_index, | 421 int scroll_tree_index, |
| 421 const gfx::ScrollOffset& scroll_offset, | 422 const gfx::ScrollOffset& scroll_offset, |
| 422 LayerTreeImpl* layer_tree_impl); | 423 LayerTreeImpl* layer_tree_impl); |
| 423 gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; | 424 gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; |
| 424 ScrollNode* CurrentlyScrollingNode(); | 425 ScrollNode* CurrentlyScrollingNode(); |
| 425 const ScrollNode* CurrentlyScrollingNode() const; | 426 const ScrollNode* CurrentlyScrollingNode() const; |
| 426 #if DCHECK_IS_ON() | 427 #if DCHECK_IS_ON() |
| 427 int CurrentlyScrollingNodeId() const; | 428 int CurrentlyScrollingNodeId() const; |
| 428 #endif | 429 #endif |
| 429 void set_currently_scrolling_node(int scroll_node_id); | 430 void set_currently_scrolling_node(int scroll_node_id); |
| 430 gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; | 431 gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; |
| 431 | 432 |
| 432 const gfx::ScrollOffset current_scroll_offset(int layer_id) const; | 433 const gfx::ScrollOffset current_scroll_offset(int layer_id) const; |
| 434 const gfx::ScrollOffset current_overscroll(int layer_id) const; |
| 433 void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, | 435 void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, |
| 434 int inner_viewport_layer_id); | 436 int inner_viewport_layer_id); |
| 435 void UpdateScrollOffsetMap(ScrollOffsetMap* new_scroll_offset_map, | 437 void UpdateScrollOffsetMap(ScrollTree* scroll_tree, |
| 436 LayerTreeImpl* layer_tree_impl); | 438 LayerTreeImpl* layer_tree_impl); |
| 437 ScrollOffsetMap& scroll_offset_map(); | 439 const ScrollOffsetMap& scroll_offset_map_for_test() const; |
| 438 const ScrollOffsetMap& scroll_offset_map() const; | |
| 439 void ApplySentScrollDeltasFromAbortedCommit(); | 440 void ApplySentScrollDeltasFromAbortedCommit(); |
| 440 bool SetBaseScrollOffset(int layer_id, | 441 void SetBaseScrollOffset(int layer_id, |
| 441 const gfx::ScrollOffset& scroll_offset); | 442 const gfx::ScrollOffset& scroll_offset, |
| 442 bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset); | 443 const gfx::ScrollOffset& overscroll); |
| 443 void SetScrollOffsetClobberActiveValue(int layer_id) { | 444 bool SetScrollOffset(int layer_id, |
| 444 synced_scroll_offset(layer_id)->set_clobber_active_value(); | 445 const gfx::ScrollOffset& scroll_offset, |
| 446 const gfx::ScrollOffset& overscroll); |
| 447 |
| 448 // TODO(tapted): Remove this overload (used by TreeSynchronizerTest). |
| 449 bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset) { |
| 450 return SetScrollOffset(layer_id, scroll_offset, gfx::ScrollOffset()); |
| 445 } | 451 } |
| 452 |
| 453 void SetScrollOffsetClobberActiveValue(int layer_id); |
| 446 bool UpdateScrollOffsetBaseForTesting(int layer_id, | 454 bool UpdateScrollOffsetBaseForTesting(int layer_id, |
| 447 const gfx::ScrollOffset& offset); | 455 const gfx::ScrollOffset& offset); |
| 448 bool SetScrollOffsetDeltaForTesting(int layer_id, | 456 bool SetScrollOffsetDeltaForTesting(int layer_id, |
| 449 const gfx::Vector2dF& delta); | 457 const gfx::Vector2dF& delta); |
| 450 const gfx::ScrollOffset GetScrollOffsetBaseForTesting(int layer_id) const; | 458 const gfx::ScrollOffset GetScrollOffsetBaseForTesting(int layer_id) const; |
| 451 const gfx::ScrollOffset GetScrollOffsetDeltaForTesting(int layer_id) const; | 459 const gfx::ScrollOffset GetScrollOffsetDeltaForTesting(int layer_id) const; |
| 452 void CollectScrollDeltasForTesting(); | 460 void CollectScrollDeltasForTesting(); |
| 453 | 461 |
| 454 void DistributeScroll(ScrollNode* scroll_node, ScrollState* scroll_state); | 462 void DistributeScroll(ScrollNode* scroll_node, ScrollState* scroll_state); |
| 455 gfx::Vector2dF ScrollBy(ScrollNode* scroll_node, | 463 gfx::Vector2dF ScrollBy(ScrollNode* scroll_node, |
| 456 const gfx::Vector2dF& scroll, | 464 const gfx::Vector2dF& scroll, |
| 457 LayerTreeImpl* layer_tree_impl); | 465 LayerTreeImpl* layer_tree_impl); |
| 458 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset, | 466 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset, |
| 459 ScrollNode* scroll_node) const; | 467 ScrollNode* scroll_node) const; |
| 460 | 468 |
| 461 private: | 469 private: |
| 462 int currently_scrolling_node_id_; | 470 int currently_scrolling_node_id_; |
| 463 ScrollOffsetMap layer_id_to_scroll_offset_map_; | 471 ScrollOffsetMap layer_id_to_scroll_offset_map_; |
| 464 | 472 |
| 473 ScrollWithOverscroll* GetOrCreate(int layer_id); |
| 474 const ScrollWithOverscroll* GetOrNull(int layer_id) const; |
| 465 SyncedScrollOffset* synced_scroll_offset(int layer_id); | 475 SyncedScrollOffset* synced_scroll_offset(int layer_id); |
| 466 const SyncedScrollOffset* synced_scroll_offset(int layer_id) const; | 476 const SyncedScrollOffset* synced_scroll_offset(int layer_id) const; |
| 477 |
| 467 gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); | 478 gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); |
| 468 void UpdateScrollOffsetMapEntry(int key, | 479 void UpdateScrollOffsetMapEntry(int key, |
| 469 ScrollOffsetMap* new_scroll_offset_map, | 480 ScrollOffsetMap* new_scroll_offset_map, |
| 470 LayerTreeImpl* layer_tree_impl); | 481 LayerTreeImpl* layer_tree_impl); |
| 471 }; | 482 }; |
| 472 | 483 |
| 484 // Required in the header for TreeSynchronizerTest. |
| 485 struct ScrollTree::ScrollWithOverscroll { |
| 486 scoped_refptr<SyncedScrollOffset> synced_offset; |
| 487 gfx::ScrollOffset overscroll; |
| 488 |
| 489 // Hide the copy constructor to prevent inefficient map iterations, but then |
| 490 // the map needs a move constructor to insert items. |
| 491 ScrollWithOverscroll(); |
| 492 ScrollWithOverscroll(const ScrollWithOverscroll& rhs) = delete; |
| 493 ScrollWithOverscroll(ScrollWithOverscroll&& rhs); |
| 494 ~ScrollWithOverscroll(); |
| 495 |
| 496 bool operator==(const ScrollWithOverscroll& rhs) const { |
| 497 return synced_offset == rhs.synced_offset && overscroll == rhs.overscroll; |
| 498 } |
| 499 bool operator!=(const ScrollWithOverscroll& rhs) const { |
| 500 return !operator==(rhs); |
| 501 } |
| 502 }; |
| 503 |
| 473 struct AnimationScaleData { | 504 struct AnimationScaleData { |
| 474 // Variable used to invalidate cached animation scale data when transform tree | 505 // Variable used to invalidate cached animation scale data when transform tree |
| 475 // updates. | 506 // updates. |
| 476 int update_number; | 507 int update_number; |
| 477 | 508 |
| 478 // Current animations, considering only scales at keyframes not including the | 509 // Current animations, considering only scales at keyframes not including the |
| 479 // starting keyframe of each animation. | 510 // starting keyframe of each animation. |
| 480 float local_maximum_animation_target_scale; | 511 float local_maximum_animation_target_scale; |
| 481 | 512 |
| 482 // The maximum scale that this node's |local| transform will have during | 513 // The maximum scale that this node's |local| transform will have during |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 gfx::Vector2dF inner_viewport_container_bounds_delta_; | 674 gfx::Vector2dF inner_viewport_container_bounds_delta_; |
| 644 gfx::Vector2dF outer_viewport_container_bounds_delta_; | 675 gfx::Vector2dF outer_viewport_container_bounds_delta_; |
| 645 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; | 676 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; |
| 646 | 677 |
| 647 PropertyTreesCachedData cached_data_; | 678 PropertyTreesCachedData cached_data_; |
| 648 }; | 679 }; |
| 649 | 680 |
| 650 } // namespace cc | 681 } // namespace cc |
| 651 | 682 |
| 652 #endif // CC_TREES_PROPERTY_TREE_H_ | 683 #endif // CC_TREES_PROPERTY_TREE_H_ |
| OLD | NEW |