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

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 800613009: Convert scroll offsets to use SyncedProperty. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up, rebase Created 5 years, 10 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 9
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 LayerScrollOffsetDelegate* delegate, 43 LayerScrollOffsetDelegate* delegate,
44 LayerTreeImpl* layer_tree) 44 LayerTreeImpl* layer_tree)
45 : layer_(layer), delegate_(delegate), layer_tree_impl_(layer_tree) {} 45 : layer_(layer), delegate_(delegate), layer_tree_impl_(layer_tree) {}
46 virtual ~LayerScrollOffsetDelegateProxy() {} 46 virtual ~LayerScrollOffsetDelegateProxy() {}
47 47
48 gfx::ScrollOffset last_set_scroll_offset() const { 48 gfx::ScrollOffset last_set_scroll_offset() const {
49 return last_set_scroll_offset_; 49 return last_set_scroll_offset_;
50 } 50 }
51 51
52 // LayerScrollOffsetDelegate implementation. 52 // LayerScrollOffsetDelegate implementation.
53 void SetTotalScrollOffset(const gfx::ScrollOffset& new_offset) override { 53 void SetCurrentScrollOffset(const gfx::ScrollOffset& new_offset) override {
54 last_set_scroll_offset_ = new_offset; 54 last_set_scroll_offset_ = new_offset;
55 } 55 }
56 56
57 gfx::ScrollOffset GetTotalScrollOffset() override { 57 gfx::ScrollOffset GetCurrentScrollOffset() override {
58 return layer_tree_impl_->GetDelegatedScrollOffset(layer_); 58 return layer_tree_impl_->GetDelegatedScrollOffset(layer_);
59 } 59 }
60 60
61 bool IsExternalFlingActive() const override { 61 bool IsExternalFlingActive() const override {
62 return delegate_->IsExternalFlingActive(); 62 return delegate_->IsExternalFlingActive();
63 } 63 }
64 64
65 void Update() const override { 65 void Update() const override {
66 layer_tree_impl_->UpdateScrollOffsetDelegate(); 66 layer_tree_impl_->UpdateScrollOffsetDelegate();
67 } 67 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 147 }
148 148
149 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const { 149 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const {
150 return outer_viewport_scroll_layer_; 150 return outer_viewport_scroll_layer_;
151 } 151 }
152 152
153 gfx::ScrollOffset LayerTreeImpl::TotalScrollOffset() const { 153 gfx::ScrollOffset LayerTreeImpl::TotalScrollOffset() const {
154 gfx::ScrollOffset offset; 154 gfx::ScrollOffset offset;
155 155
156 if (inner_viewport_scroll_layer_) 156 if (inner_viewport_scroll_layer_)
157 offset += inner_viewport_scroll_layer_->TotalScrollOffset(); 157 offset += inner_viewport_scroll_layer_->CurrentScrollOffset();
158 158
159 if (outer_viewport_scroll_layer_) 159 if (outer_viewport_scroll_layer_)
160 offset += outer_viewport_scroll_layer_->TotalScrollOffset(); 160 offset += outer_viewport_scroll_layer_->CurrentScrollOffset();
161 161
162 return offset; 162 return offset;
163 } 163 }
164 164
165 gfx::ScrollOffset LayerTreeImpl::TotalMaxScrollOffset() const { 165 gfx::ScrollOffset LayerTreeImpl::TotalMaxScrollOffset() const {
166 gfx::ScrollOffset offset; 166 gfx::ScrollOffset offset;
167 167
168 if (inner_viewport_scroll_layer_) 168 if (inner_viewport_scroll_layer_)
169 offset += inner_viewport_scroll_layer_->MaxScrollOffset(); 169 offset += inner_viewport_scroll_layer_->MaxScrollOffset();
170 170
171 if (outer_viewport_scroll_layer_) 171 if (outer_viewport_scroll_layer_)
172 offset += outer_viewport_scroll_layer_->MaxScrollOffset(); 172 offset += outer_viewport_scroll_layer_->MaxScrollOffset();
173 173
174 return offset; 174 return offset;
175 } 175 }
176 gfx::Vector2dF LayerTreeImpl::TotalScrollDelta() const {
177 DCHECK(inner_viewport_scroll_layer_);
178 gfx::Vector2dF delta = inner_viewport_scroll_layer_->ScrollDelta();
179
180 if (outer_viewport_scroll_layer_)
181 delta += outer_viewport_scroll_layer_->ScrollDelta();
182
183 return delta;
184 }
185 176
186 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { 177 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() {
187 // Clear all data structures that have direct references to the layer tree. 178 // Clear all data structures that have direct references to the layer tree.
188 scrolling_layer_id_from_previous_tree_ = 179 scrolling_layer_id_from_previous_tree_ =
189 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; 180 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0;
190 if (inner_viewport_scroll_layer_) 181 if (inner_viewport_scroll_layer_)
191 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); 182 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL);
192 if (outer_viewport_scroll_layer_) 183 if (outer_viewport_scroll_layer_)
193 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); 184 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL);
194 inner_viewport_scroll_delegate_proxy_ = nullptr; 185 inner_viewport_scroll_delegate_proxy_ = nullptr;
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 top_controls_delta_ -= sent_top_controls_delta_; 452 top_controls_delta_ -= sent_top_controls_delta_;
462 sent_top_controls_delta_ = 0.f; 453 sent_top_controls_delta_ = 0.f;
463 454
464 if (!root_layer()) 455 if (!root_layer())
465 return; 456 return;
466 457
467 LayerTreeHostCommon::CallFunctionForSubtree( 458 LayerTreeHostCommon::CallFunctionForSubtree(
468 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); 459 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo));
469 } 460 }
470 461
471 static void ApplyScrollDeltasSinceBeginMainFrameTo(LayerImpl* layer) {
472 layer->ApplyScrollDeltasSinceBeginMainFrame();
473 }
474
475 void LayerTreeImpl::ApplyScrollDeltasSinceBeginMainFrame() {
476 DCHECK(IsPendingTree());
477 if (!root_layer())
478 return;
479
480 LayerTreeHostCommon::CallFunctionForSubtree(
481 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginMainFrameTo));
482 }
483
484 void LayerTreeImpl::SetViewportLayersFromIds( 462 void LayerTreeImpl::SetViewportLayersFromIds(
485 int overscroll_elasticity_layer_id, 463 int overscroll_elasticity_layer_id,
486 int page_scale_layer_id, 464 int page_scale_layer_id,
487 int inner_viewport_scroll_layer_id, 465 int inner_viewport_scroll_layer_id,
488 int outer_viewport_scroll_layer_id) { 466 int outer_viewport_scroll_layer_id) {
489 overscroll_elasticity_layer_ = LayerById(overscroll_elasticity_layer_id); 467 overscroll_elasticity_layer_ = LayerById(overscroll_elasticity_layer_id);
490 page_scale_layer_ = LayerById(page_scale_layer_id); 468 page_scale_layer_ = LayerById(page_scale_layer_id);
491 DCHECK(page_scale_layer_); 469 DCHECK(page_scale_layer_);
492 470
493 inner_viewport_scroll_layer_ = 471 inner_viewport_scroll_layer_ =
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 } 975 }
998 976
999 if (inner_viewport_scroll_layer_) 977 if (inner_viewport_scroll_layer_)
1000 UpdateScrollOffsetDelegate(); 978 UpdateScrollOffsetDelegate();
1001 } 979 }
1002 } 980 }
1003 981
1004 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { 982 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() {
1005 DCHECK(root_layer_scroll_offset_delegate_); 983 DCHECK(root_layer_scroll_offset_delegate_);
1006 if (inner_viewport_scroll_layer_) { 984 if (inner_viewport_scroll_layer_) {
1007 inner_viewport_scroll_layer_->DidScroll(); 985 inner_viewport_scroll_layer_->RefreshFromScrollDelegate();
1008 } 986 }
1009 if (outer_viewport_scroll_layer_) { 987 if (outer_viewport_scroll_layer_) {
1010 outer_viewport_scroll_layer_->DidScroll(); 988 outer_viewport_scroll_layer_->RefreshFromScrollDelegate();
1011 } 989 }
1012 } 990 }
1013 991
1014 void LayerTreeImpl::UpdateScrollOffsetDelegate() { 992 void LayerTreeImpl::UpdateScrollOffsetDelegate() {
1015 DCHECK(InnerViewportScrollLayer()); 993 DCHECK(InnerViewportScrollLayer());
1016 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); 994 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_);
1017 DCHECK(root_layer_scroll_offset_delegate_); 995 DCHECK(root_layer_scroll_offset_delegate_);
1018 996
1019 gfx::ScrollOffset offset = 997 gfx::ScrollOffset offset =
1020 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); 998 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset();
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 scoped_ptr<PendingPageScaleAnimation> pending_animation) { 1526 scoped_ptr<PendingPageScaleAnimation> pending_animation) {
1549 pending_page_scale_animation_ = pending_animation.Pass(); 1527 pending_page_scale_animation_ = pending_animation.Pass();
1550 } 1528 }
1551 1529
1552 scoped_ptr<PendingPageScaleAnimation> 1530 scoped_ptr<PendingPageScaleAnimation>
1553 LayerTreeImpl::TakePendingPageScaleAnimation() { 1531 LayerTreeImpl::TakePendingPageScaleAnimation() {
1554 return pending_page_scale_animation_.Pass(); 1532 return pending_page_scale_animation_.Pass();
1555 } 1533 }
1556 1534
1557 } // namespace cc 1535 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698