Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: cc/trees/layer_tree_host.cc

Issue 135183016: Revert of Pinch/Zoom Infrastructure & Plumbing CL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host.cc
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index e5f0271c93ff9a36096094b24781b2076bb6fbbc..0684a9c51ae441f1d4c560a8c9dd07ddc16bb780 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -338,7 +338,12 @@
sync_tree->set_background_color(background_color_);
sync_tree->set_has_transparent_background(has_transparent_background_);
- if (page_scale_layer_ && inner_viewport_scroll_layer_) {
+ sync_tree->FindRootScrollLayer();
+
+ // TODO(wjmaclean) For now, not all LTH clients will register viewports, so
+ // only set them when available..
+ if (page_scale_layer_) {
+ DCHECK(inner_viewport_scroll_layer_);
sync_tree->SetViewportLayersFromIds(
page_scale_layer_->id(),
inner_viewport_scroll_layer_->id(),
@@ -1040,8 +1045,8 @@
if (!root_layer_.get())
return;
- gfx::Vector2d inner_viewport_scroll_delta;
- gfx::Vector2d outer_viewport_scroll_delta;
+ gfx::Vector2d root_scroll_delta;
+ Layer* root_scroll_layer = FindFirstScrollableLayer(root_layer_.get());
for (size_t i = 0; i < info.scrolls.size(); ++i) {
Layer* layer =
@@ -1049,87 +1054,29 @@
info.scrolls[i].layer_id);
if (!layer)
continue;
- if (layer == outer_viewport_scroll_layer_.get()) {
- outer_viewport_scroll_delta += info.scrolls[i].scroll_delta;
- } else if (layer == inner_viewport_scroll_layer_.get()) {
- inner_viewport_scroll_delta += info.scrolls[i].scroll_delta;
+ if (layer == root_scroll_layer) {
+ root_scroll_delta += info.scrolls[i].scroll_delta;
} else {
layer->SetScrollOffsetFromImplSide(layer->scroll_offset() +
info.scrolls[i].scroll_delta);
}
}
- if (!inner_viewport_scroll_delta.IsZero() ||
- !outer_viewport_scroll_delta.IsZero() ||
- info.page_scale_delta != 1.f) {
+ if (!root_scroll_delta.IsZero() || info.page_scale_delta != 1.f) {
// SetScrollOffsetFromImplSide above could have destroyed the tree,
// so re-get this layer before doing anything to it.
+ root_scroll_layer = FindFirstScrollableLayer(root_layer_.get());
// Preemptively apply the scroll offset and scale delta here before sending
// it to the client. If the client comes back and sets it to the same
// value, then the layer can early out without needing a full commit.
- DCHECK(inner_viewport_scroll_layer_); // We should always have this.
-
- inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide(
- inner_viewport_scroll_layer_->scroll_offset() +
- inner_viewport_scroll_delta);
- if (outer_viewport_scroll_layer_) {
- outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide(
- outer_viewport_scroll_layer_->scroll_offset() +
- outer_viewport_scroll_delta);
+ if (root_scroll_layer) {
+ root_scroll_layer->SetScrollOffsetFromImplSide(
+ root_scroll_layer->scroll_offset() + root_scroll_delta);
}
ApplyPageScaleDeltaFromImplSide(info.page_scale_delta);
-
- client_->ApplyScrollAndScale(
- inner_viewport_scroll_delta + outer_viewport_scroll_delta,
- info.page_scale_delta);
- }
-}
-
-gfx::Vector2d LayerTreeHost::DistributeScrollOffsetToViewports(
- const gfx::Vector2d offset,
- Layer* layer) {
- DCHECK(layer);
- if (layer != outer_viewport_scroll_layer_.get())
- return offset;
-
- gfx::Vector2d inner_viewport_offset =
- inner_viewport_scroll_layer_->scroll_offset();
- gfx::Vector2d outer_viewport_offset =
- outer_viewport_scroll_layer_->scroll_offset();
-
- if (offset == inner_viewport_offset + outer_viewport_offset) {
- // In this case, nothing should change, so we just return to the outer
- // viewport the offset is already has.
- return outer_viewport_offset;
- }
-
- // In the spirit of document-scrolls-first, we always want any change to
- // go to the outer viewport first.
- gfx::Vector2d max_outer_viewport_scroll_offset =
- outer_viewport_scroll_layer_->MaxScrollOffset();
-#if ENABLE_DCHECK
-// TODO(wjmaclean) The DCHECK below is triggering during zoom-out.
-// crbug.com/336574
-/*
- gfx::Vector2d maxInnerViewportScrollOffset =
- inner_viewport_scroll_layer_->MaxScrollOffset();
-
- gfx::Vector2d totalMaxScrollOffset =
- max_outer_viewport_scroll_offset + maxInnerViewportScrollOffset;
- DCHECK(totalMaxScrollOffset.x() >= offset.x() &&
- totalMaxScrollOffset.y() >= offset.y());
-*/
-#endif
-
- outer_viewport_offset = offset - inner_viewport_offset;
- outer_viewport_offset.SetToMin(max_outer_viewport_scroll_offset);
- outer_viewport_offset.SetToMax(gfx::Vector2d());
-
- inner_viewport_offset = offset - outer_viewport_offset;
- inner_viewport_scroll_layer_->SetScrollOffset(inner_viewport_offset);
-
- return outer_viewport_offset;
+ client_->ApplyScrollAndScale(root_scroll_delta, info.page_scale_delta);
+ }
}
void LayerTreeHost::StartRateLimiter() {
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698