diff options
author | sunxd <sunxd@chromium.org> | 2016-03-16 09:23:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-16 16:25:20 +0000 |
commit | c044b11a0cdf5bfc7c13c1b2dfb41b6b415e18f5 (patch) | |
tree | f3e3e7e3422326e4dae307d3f08dfbab7bc4a3c3 /cc/trees/property_tree.cc | |
parent | b18dcbd20c61ba22fd430bbbf0066f738d480a66 (diff) | |
download | chromium_src-c044b11a0cdf5bfc7c13c1b2dfb41b6b415e18f5.zip chromium_src-c044b11a0cdf5bfc7c13c1b2dfb41b6b415e18f5.tar.gz chromium_src-c044b11a0cdf5bfc7c13c1b2dfb41b6b415e18f5.tar.bz2 |
Clean scroll logic in LayerTreeImpl:
* Move DidUpdateScrollOffset to LayerTreeImpl
* Make SyncedScrollOffset transparent to LayerImpl
BUG=568830
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1803643002
Cr-Commit-Position: refs/heads/master@{#381467}
Diffstat (limited to 'cc/trees/property_tree.cc')
-rw-r--r-- | cc/trees/property_tree.cc | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc index 34f8c49..c3514e1 100644 --- a/cc/trees/property_tree.cc +++ b/cc/trees/property_tree.cc @@ -1477,8 +1477,6 @@ gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const { return screen_space_transform; } -// TODO(sunxd): Make this function private once scroll offset access is fully -// directed to scroll tree. SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) { if (layer_id_to_scroll_offset_map_.find(layer_id) == layer_id_to_scroll_offset_map_.end()) { @@ -1495,6 +1493,13 @@ const SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) const { return layer_id_to_scroll_offset_map_.at(layer_id).get(); } +const gfx::ScrollOffset ScrollTree::current_scroll_offset(int layer_id) const { + return synced_scroll_offset(layer_id) + ? synced_scroll_offset(layer_id)->Current( + property_trees()->is_active) + : gfx::ScrollOffset(); +} + gfx::ScrollOffset ScrollTree::PullDeltaForMainThread( SyncedScrollOffset* scroll_offset) { // TODO(miletus): Remove all this temporary flooring machinery when @@ -1528,6 +1533,12 @@ void ScrollTree::CollectScrollDeltas(ScrollAndScaleSet* scroll_info) { } } +void ScrollTree::CollectScrollDeltasForTesting() { + for (auto map_entry : layer_id_to_scroll_offset_map_) { + PullDeltaForMainThread(map_entry.second.get()); + } +} + void ScrollTree::UpdateScrollOffsetMapEntry( int key, ScrollTree::ScrollOffsetMap* new_scroll_offset_map, @@ -1543,13 +1554,15 @@ void ScrollTree::UpdateScrollOffsetMapEntry( if (new_scroll_offset_map->at(key)->clobber_active_value()) { synced_scroll_offset(key)->set_clobber_active_value(); } - if (changed) - layer_tree_impl->LayerById(key)->DidUpdateScrollOffset(); + if (changed) { + layer_tree_impl->DidUpdateScrollOffset(key, -1); + } } else { layer_id_to_scroll_offset_map_[key] = new_scroll_offset_map->at(key); changed |= synced_scroll_offset(key)->PushPendingToActive(); - if (changed) - layer_tree_impl->LayerById(key)->DidUpdateScrollOffset(); + if (changed) { + layer_tree_impl->DidUpdateScrollOffset(key, -1); + } } } @@ -1592,6 +1605,11 @@ void ScrollTree::ApplySentScrollDeltasFromAbortedCommit() { map_entry.second->AbortCommit(); } +bool ScrollTree::SetBaseScrollOffset(int layer_id, + const gfx::ScrollOffset& scroll_offset) { + return synced_scroll_offset(layer_id)->PushFromMainThread(scroll_offset); +} + bool ScrollTree::SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset) { if (property_trees()->is_main_thread) @@ -1611,6 +1629,12 @@ bool ScrollTree::UpdateScrollOffsetBaseForTesting( return changed; } +bool ScrollTree::SetScrollOffsetDeltaForTesting(int layer_id, + const gfx::Vector2dF& delta) { + return synced_scroll_offset(layer_id)->SetCurrent( + synced_scroll_offset(layer_id)->ActiveBase() + gfx::ScrollOffset(delta)); +} + const gfx::ScrollOffset ScrollTree::GetScrollOffsetBaseForTesting( int layer_id) const { DCHECK(!property_trees()->is_main_thread); @@ -1622,6 +1646,17 @@ const gfx::ScrollOffset ScrollTree::GetScrollOffsetBaseForTesting( return gfx::ScrollOffset(); } +const gfx::ScrollOffset ScrollTree::GetScrollOffsetDeltaForTesting( + int layer_id) const { + DCHECK(!property_trees()->is_main_thread); + if (synced_scroll_offset(layer_id)) + return property_trees()->is_active + ? synced_scroll_offset(layer_id)->Delta() + : synced_scroll_offset(layer_id)->PendingDelta().get(); + else + return gfx::ScrollOffset(); +} + PropertyTrees::PropertyTrees() : needs_rebuild(true), non_root_surfaces_enabled(true), |