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

Side by Side Diff: cc/layers/viewport.cc

Issue 2388563002: Clean up viewport scrolling methods in CC (Closed)
Patch Set: Fix tests Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « cc/layers/viewport.h ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #include "cc/layers/viewport.h" 5 #include "cc/layers/viewport.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "cc/input/top_controls_manager.h" 9 #include "cc/input/top_controls_manager.h"
10 #include "cc/trees/layer_tree_host_impl.h" 10 #include "cc/trees/layer_tree_host_impl.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 scroll_tree.Node(OuterScrollLayer()->scroll_tree_index()); 61 scroll_tree.Node(OuterScrollLayer()->scroll_tree_index());
62 pending_content_delta -= host_impl_->ScrollSingleNode( 62 pending_content_delta -= host_impl_->ScrollSingleNode(
63 outer_node, pending_content_delta, viewport_point, is_direct_manipulation, 63 outer_node, pending_content_delta, viewport_point, is_direct_manipulation,
64 &scroll_tree); 64 &scroll_tree);
65 result.consumed_delta = delta - AdjustOverscroll(pending_content_delta); 65 result.consumed_delta = delta - AdjustOverscroll(pending_content_delta);
66 66
67 result.content_scrolled_delta = content_delta - pending_content_delta; 67 result.content_scrolled_delta = content_delta - pending_content_delta;
68 return result; 68 return result;
69 } 69 }
70 70
71 void Viewport::ScrollByInnerFirst(const gfx::Vector2dF& delta) {
72 LayerImpl* scroll_layer = InnerScrollLayer();
73
74 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(delta);
75 if (!unused_delta.IsZero() && OuterScrollLayer())
76 OuterScrollLayer()->ScrollBy(unused_delta);
77 }
78
71 bool Viewport::ShouldAnimateViewport(const gfx::Vector2dF& viewport_delta, 79 bool Viewport::ShouldAnimateViewport(const gfx::Vector2dF& viewport_delta,
72 const gfx::Vector2dF& pending_delta) { 80 const gfx::Vector2dF& pending_delta) {
73 float max_dim_viewport_delta = 81 float max_dim_viewport_delta =
74 std::max(std::abs(viewport_delta.x()), std::abs(viewport_delta.y())); 82 std::max(std::abs(viewport_delta.x()), std::abs(viewport_delta.y()));
75 float max_dim_pending_delta = 83 float max_dim_pending_delta =
76 std::max(std::abs(pending_delta.x()), std::abs(pending_delta.y())); 84 std::max(std::abs(pending_delta.x()), std::abs(pending_delta.y()));
77 return max_dim_viewport_delta > max_dim_pending_delta; 85 return max_dim_viewport_delta > max_dim_pending_delta;
78 } 86 }
79 87
80 gfx::Vector2dF Viewport::ScrollAnimated(const gfx::Vector2dF& delta, 88 gfx::Vector2dF Viewport::ScrollAnimated(const gfx::Vector2dF& delta,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 move -= InnerScrollLayer()->ClampScrollToMaxScrollOffset(); 187 move -= InnerScrollLayer()->ClampScrollToMaxScrollOffset();
180 188
181 Pan(move); 189 Pan(move);
182 } 190 }
183 191
184 void Viewport::PinchEnd() { 192 void Viewport::PinchEnd() {
185 pinch_anchor_adjustment_ = gfx::Vector2d(); 193 pinch_anchor_adjustment_ = gfx::Vector2d();
186 pinch_zoom_active_ = false; 194 pinch_zoom_active_ = false;
187 } 195 }
188 196
197 LayerImpl* Viewport::MainScrollLayer() const {
198 return InnerScrollLayer();
199 }
200
189 gfx::Vector2dF Viewport::ScrollTopControls(const gfx::Vector2dF& delta) { 201 gfx::Vector2dF Viewport::ScrollTopControls(const gfx::Vector2dF& delta) {
190 gfx::Vector2dF excess_delta = 202 gfx::Vector2dF excess_delta =
191 host_impl_->top_controls_manager()->ScrollBy(delta); 203 host_impl_->top_controls_manager()->ScrollBy(delta);
192 204
193 return delta - excess_delta; 205 return delta - excess_delta;
194 } 206 }
195 207
196 bool Viewport::ShouldTopControlsConsumeScroll( 208 bool Viewport::ShouldTopControlsConsumeScroll(
197 const gfx::Vector2dF& scroll_delta) const { 209 const gfx::Vector2dF& scroll_delta) const {
198 // Always consume if it's in the direction to show the top controls. 210 // Always consume if it's in the direction to show the top controls.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 255
244 LayerImpl* Viewport::InnerScrollLayer() const { 256 LayerImpl* Viewport::InnerScrollLayer() const {
245 return host_impl_->InnerViewportScrollLayer(); 257 return host_impl_->InnerViewportScrollLayer();
246 } 258 }
247 259
248 LayerImpl* Viewport::OuterScrollLayer() const { 260 LayerImpl* Viewport::OuterScrollLayer() const {
249 return host_impl_->OuterViewportScrollLayer(); 261 return host_impl_->OuterViewportScrollLayer();
250 } 262 }
251 263
252 } // namespace cc 264 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/viewport.h ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698