| 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 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 std::unordered_multimap<int, std::unique_ptr<CopyOutputRequest>> | 358 std::unordered_multimap<int, std::unique_ptr<CopyOutputRequest>> |
| 359 copy_requests_; | 359 copy_requests_; |
| 360 | 360 |
| 361 // Unsorted list of all mask, replica, and replica mask layer ids that | 361 // Unsorted list of all mask, replica, and replica mask layer ids that |
| 362 // effect nodes refer to. | 362 // effect nodes refer to. |
| 363 std::vector<int> mask_replica_layer_ids_; | 363 std::vector<int> mask_replica_layer_ids_; |
| 364 }; | 364 }; |
| 365 | 365 |
| 366 class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { | 366 class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { |
| 367 public: | 367 public: |
| 368 struct ScrollWithOverscroll; |
| 369 |
| 368 ScrollTree(); | 370 ScrollTree(); |
| 369 ~ScrollTree(); | 371 ~ScrollTree(); |
| 370 | 372 |
| 371 ScrollTree& operator=(const ScrollTree& from); | 373 ScrollTree& operator=(const ScrollTree& from); |
| 372 bool operator==(const ScrollTree& other) const; | 374 bool operator==(const ScrollTree& other) const; |
| 373 | 375 |
| 374 void ToProtobuf(proto::PropertyTree* proto) const; | 376 void ToProtobuf(proto::PropertyTree* proto) const; |
| 375 void FromProtobuf(const proto::PropertyTree& proto, | 377 void FromProtobuf(const proto::PropertyTree& proto, |
| 376 std::unordered_map<int, int>* node_id_to_index_map); | 378 std::unordered_map<int, int>* node_id_to_index_map); |
| 377 | 379 |
| 378 void clear(); | 380 void clear(); |
| 379 | 381 |
| 380 typedef std::unordered_map<int, scoped_refptr<SyncedScrollOffset>> | 382 typedef std::unordered_map<int, ScrollWithOverscroll> ScrollOffsetMap; |
| 381 ScrollOffsetMap; | |
| 382 | 383 |
| 383 gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; | 384 gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; |
| 384 gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; | 385 gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; |
| 385 ScrollNode* CurrentlyScrollingNode(); | 386 ScrollNode* CurrentlyScrollingNode(); |
| 386 const ScrollNode* CurrentlyScrollingNode() const; | 387 const ScrollNode* CurrentlyScrollingNode() const; |
| 387 void set_currently_scrolling_node(int scroll_node_id); | 388 void set_currently_scrolling_node(int scroll_node_id); |
| 388 gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; | 389 gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; |
| 389 | 390 |
| 390 const gfx::ScrollOffset current_scroll_offset(int layer_id) const; | 391 const gfx::ScrollOffset current_scroll_offset(int layer_id) const; |
| 392 const gfx::ScrollOffset current_overscroll(int layer_id) const; |
| 391 void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, | 393 void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, |
| 392 int inner_viewport_layer_id); | 394 int inner_viewport_layer_id); |
| 393 void UpdateScrollOffsetMap(ScrollOffsetMap* new_scroll_offset_map, | 395 void UpdateScrollOffsetMap(ScrollTree* scroll_tree, |
| 394 LayerTreeImpl* layer_tree_impl); | 396 LayerTreeImpl* layer_tree_impl); |
| 395 ScrollOffsetMap& scroll_offset_map(); | 397 const ScrollOffsetMap& scroll_offset_map_for_test() const; |
| 396 const ScrollOffsetMap& scroll_offset_map() const; | |
| 397 void ApplySentScrollDeltasFromAbortedCommit(); | 398 void ApplySentScrollDeltasFromAbortedCommit(); |
| 398 bool SetBaseScrollOffset(int layer_id, | 399 void SetBaseScrollOffset(int layer_id, |
| 399 const gfx::ScrollOffset& scroll_offset); | 400 const gfx::ScrollOffset& scroll_offset, |
| 400 bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset); | 401 const gfx::ScrollOffset& overscroll); |
| 401 void SetScrollOffsetClobberActiveValue(int layer_id) { | 402 bool SetScrollOffset(int layer_id, |
| 402 synced_scroll_offset(layer_id)->set_clobber_active_value(); | 403 const gfx::ScrollOffset& scroll_offset, |
| 404 const gfx::ScrollOffset& overscroll); |
| 405 |
| 406 // TODO(tapted): Remove this overload (used by TreeSynchronizerTest). |
| 407 bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset) { |
| 408 return SetScrollOffset(layer_id, scroll_offset, gfx::ScrollOffset()); |
| 403 } | 409 } |
| 410 |
| 411 void SetScrollOffsetClobberActiveValue(int layer_id); |
| 404 bool UpdateScrollOffsetBaseForTesting(int layer_id, | 412 bool UpdateScrollOffsetBaseForTesting(int layer_id, |
| 405 const gfx::ScrollOffset& offset); | 413 const gfx::ScrollOffset& offset); |
| 406 bool SetScrollOffsetDeltaForTesting(int layer_id, | 414 bool SetScrollOffsetDeltaForTesting(int layer_id, |
| 407 const gfx::Vector2dF& delta); | 415 const gfx::Vector2dF& delta); |
| 408 const gfx::ScrollOffset GetScrollOffsetBaseForTesting(int layer_id) const; | 416 const gfx::ScrollOffset GetScrollOffsetBaseForTesting(int layer_id) const; |
| 409 const gfx::ScrollOffset GetScrollOffsetDeltaForTesting(int layer_id) const; | 417 const gfx::ScrollOffset GetScrollOffsetDeltaForTesting(int layer_id) const; |
| 410 void CollectScrollDeltasForTesting(); | 418 void CollectScrollDeltasForTesting(); |
| 411 | 419 |
| 412 void DistributeScroll(ScrollNode* scroll_node, ScrollState* scroll_state); | 420 void DistributeScroll(ScrollNode* scroll_node, ScrollState* scroll_state); |
| 413 gfx::Vector2dF ScrollBy(ScrollNode* scroll_node, | 421 gfx::Vector2dF ScrollBy(ScrollNode* scroll_node, |
| 414 const gfx::Vector2dF& scroll, | 422 const gfx::Vector2dF& scroll, |
| 415 LayerTreeImpl* layer_tree_impl); | 423 LayerTreeImpl* layer_tree_impl); |
| 416 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset, | 424 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset, |
| 417 ScrollNode* scroll_node) const; | 425 ScrollNode* scroll_node) const; |
| 418 | 426 |
| 419 private: | 427 private: |
| 420 int currently_scrolling_node_id_; | 428 int currently_scrolling_node_id_; |
| 421 ScrollOffsetMap layer_id_to_scroll_offset_map_; | 429 ScrollOffsetMap layer_id_to_scroll_offset_map_; |
| 422 | 430 |
| 431 ScrollWithOverscroll* GetOrCreate(int layer_id); |
| 432 const ScrollWithOverscroll* GetOrNull(int layer_id) const; |
| 423 SyncedScrollOffset* synced_scroll_offset(int layer_id); | 433 SyncedScrollOffset* synced_scroll_offset(int layer_id); |
| 424 const SyncedScrollOffset* synced_scroll_offset(int layer_id) const; | 434 const SyncedScrollOffset* synced_scroll_offset(int layer_id) const; |
| 435 |
| 425 gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); | 436 gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); |
| 426 void UpdateScrollOffsetMapEntry(int key, | 437 void UpdateScrollOffsetMapEntry(int key, |
| 427 ScrollOffsetMap* new_scroll_offset_map, | 438 ScrollOffsetMap* new_scroll_offset_map, |
| 428 LayerTreeImpl* layer_tree_impl); | 439 LayerTreeImpl* layer_tree_impl); |
| 429 }; | 440 }; |
| 430 | 441 |
| 442 // Required in the header for TreeSynchronizerTest. |
| 443 struct ScrollTree::ScrollWithOverscroll { |
| 444 scoped_refptr<SyncedScrollOffset> synced_offset; |
| 445 gfx::ScrollOffset overscroll; |
| 446 |
| 447 // Hide the copy constructor to prevent inefficient map iterations, but then |
| 448 // the map needs a move constructor to insert items. |
| 449 ScrollWithOverscroll(); |
| 450 ScrollWithOverscroll(const ScrollWithOverscroll& rhs) = delete; |
| 451 ScrollWithOverscroll(ScrollWithOverscroll&& rhs); |
| 452 ~ScrollWithOverscroll(); |
| 453 |
| 454 bool operator==(const ScrollWithOverscroll& rhs) const { |
| 455 return synced_offset == rhs.synced_offset && overscroll == rhs.overscroll; |
| 456 } |
| 457 bool operator!=(const ScrollWithOverscroll& rhs) const { |
| 458 return !operator==(rhs); |
| 459 } |
| 460 }; |
| 461 |
| 431 struct AnimationScaleData { | 462 struct AnimationScaleData { |
| 432 // Variable used to invalidate cached animation scale data when transform tree | 463 // Variable used to invalidate cached animation scale data when transform tree |
| 433 // updates. | 464 // updates. |
| 434 int update_number; | 465 int update_number; |
| 435 | 466 |
| 436 // Current animations, considering only scales at keyframes not including the | 467 // Current animations, considering only scales at keyframes not including the |
| 437 // starting keyframe of each animation. | 468 // starting keyframe of each animation. |
| 438 float local_maximum_animation_target_scale; | 469 float local_maximum_animation_target_scale; |
| 439 | 470 |
| 440 // The maximum scale that this node's |local| transform will have during | 471 // The maximum scale that this node's |local| transform will have during |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 gfx::Vector2dF inner_viewport_container_bounds_delta_; | 626 gfx::Vector2dF inner_viewport_container_bounds_delta_; |
| 596 gfx::Vector2dF outer_viewport_container_bounds_delta_; | 627 gfx::Vector2dF outer_viewport_container_bounds_delta_; |
| 597 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; | 628 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; |
| 598 | 629 |
| 599 PropertyTreesCachedData cached_data_; | 630 PropertyTreesCachedData cached_data_; |
| 600 }; | 631 }; |
| 601 | 632 |
| 602 } // namespace cc | 633 } // namespace cc |
| 603 | 634 |
| 604 #endif // CC_TREES_PROPERTY_TREE_H_ | 635 #endif // CC_TREES_PROPERTY_TREE_H_ |
| OLD | NEW |