summaryrefslogtreecommitdiffstats
path: root/cc/trees/property_tree.cc
diff options
context:
space:
mode:
authorsunxd <sunxd@chromium.org>2016-03-16 09:23:20 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-16 16:25:20 +0000
commitc044b11a0cdf5bfc7c13c1b2dfb41b6b415e18f5 (patch)
treef3e3e7e3422326e4dae307d3f08dfbab7bc4a3c3 /cc/trees/property_tree.cc
parentb18dcbd20c61ba22fd430bbbf0066f738d480a66 (diff)
downloadchromium_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.cc47
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),