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

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

Issue 1038173002: Refactor delegated scrolling in LayerImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format Created 5 years, 8 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 <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 10
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 57
58 gfx::ScrollOffset GetCurrentScrollOffset() override { 58 gfx::ScrollOffset GetCurrentScrollOffset() override {
59 return layer_tree_impl_->GetDelegatedScrollOffset(layer_); 59 return layer_tree_impl_->GetDelegatedScrollOffset(layer_);
60 } 60 }
61 61
62 bool IsExternalFlingActive() const override { 62 bool IsExternalFlingActive() const override {
63 return delegate_->IsExternalFlingActive(); 63 return delegate_->IsExternalFlingActive();
64 } 64 }
65 65
66 void Update() const override { 66 void Update() const override {
67 layer_tree_impl_->UpdateScrollOffsetDelegate(); 67 layer_tree_impl_->UpdateScrollOffsetDelegateIfNeeded();
68 } 68 }
69 69
70 private: 70 private:
71 LayerImpl* layer_; 71 LayerImpl* layer_;
72 LayerScrollOffsetDelegate* delegate_; 72 LayerScrollOffsetDelegate* delegate_;
73 LayerTreeImpl* layer_tree_impl_; 73 LayerTreeImpl* layer_tree_impl_;
74 gfx::ScrollOffset last_set_scroll_offset_; 74 gfx::ScrollOffset last_set_scroll_offset_;
75 }; 75 };
76 76
77 LayerTreeImpl::LayerTreeImpl( 77 LayerTreeImpl::LayerTreeImpl(
(...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 outer_viewport_scroll_layer_->SetScrollOffsetDelegate( 1063 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(
1064 outer_viewport_scroll_delegate_proxy_.get()); 1064 outer_viewport_scroll_delegate_proxy_.get());
1065 } 1065 }
1066 1066
1067 if (inner_viewport_scroll_layer_) 1067 if (inner_viewport_scroll_layer_)
1068 inner_viewport_scroll_layer_->RefreshFromScrollDelegate(); 1068 inner_viewport_scroll_layer_->RefreshFromScrollDelegate();
1069 if (outer_viewport_scroll_layer_) 1069 if (outer_viewport_scroll_layer_)
1070 outer_viewport_scroll_layer_->RefreshFromScrollDelegate(); 1070 outer_viewport_scroll_layer_->RefreshFromScrollDelegate();
1071 1071
1072 if (inner_viewport_scroll_layer_) 1072 if (inner_viewport_scroll_layer_)
1073 UpdateScrollOffsetDelegate(); 1073 UpdateScrollOffsetDelegateIfNeeded();
1074 } 1074 }
1075 } 1075 }
1076 1076
1077 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { 1077 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() {
1078 DCHECK(root_layer_scroll_offset_delegate_); 1078 DCHECK(root_layer_scroll_offset_delegate_);
1079 if (inner_viewport_scroll_layer_) { 1079 root_layer_scroll_offset_delegate_->SetBlockUpdates(true);
1080 if (inner_viewport_scroll_layer_)
1080 inner_viewport_scroll_layer_->RefreshFromScrollDelegate(); 1081 inner_viewport_scroll_layer_->RefreshFromScrollDelegate();
1081 } 1082
1082 if (outer_viewport_scroll_layer_) { 1083 if (outer_viewport_scroll_layer_)
1083 outer_viewport_scroll_layer_->RefreshFromScrollDelegate(); 1084 outer_viewport_scroll_layer_->RefreshFromScrollDelegate();
1084 } 1085
1086 root_layer_scroll_offset_delegate_->SetBlockUpdates(false);
1087 UpdateScrollOffsetDelegateIfNeeded();
1085 } 1088 }
1086 1089
1087 void LayerTreeImpl::UpdateScrollOffsetDelegate() { 1090 void LayerTreeImpl::UpdateScrollOffsetDelegateIfNeeded() {
1088 DCHECK(InnerViewportScrollLayer()); 1091 if (!root_layer_scroll_offset_delegate_)
1089 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); 1092 return;
1090 DCHECK(root_layer_scroll_offset_delegate_); 1093 if (!InnerViewportScrollLayer() || !inner_viewport_scroll_delegate_proxy_)
1091 1094 return;
1095 if (OuterViewportScrollLayer() && !outer_viewport_scroll_delegate_proxy_)
1096 return;
1092 gfx::ScrollOffset offset = 1097 gfx::ScrollOffset offset =
1093 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); 1098 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset();
1094 1099
1095 if (OuterViewportScrollLayer()) 1100 if (OuterViewportScrollLayer())
1096 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); 1101 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset();
1097 1102
1098 root_layer_scroll_offset_delegate_->UpdateRootLayerState( 1103 root_layer_scroll_offset_delegate_->UpdateRootLayerState(
1099 offset, TotalMaxScrollOffset(), ScrollableSize(), 1104 offset, TotalMaxScrollOffset(), ScrollableSize(),
1100 current_page_scale_factor(), min_page_scale_factor(), 1105 current_page_scale_factor(), min_page_scale_factor(),
1101 max_page_scale_factor()); 1106 max_page_scale_factor());
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1638 scoped_ptr<PendingPageScaleAnimation> pending_animation) { 1643 scoped_ptr<PendingPageScaleAnimation> pending_animation) {
1639 pending_page_scale_animation_ = pending_animation.Pass(); 1644 pending_page_scale_animation_ = pending_animation.Pass();
1640 } 1645 }
1641 1646
1642 scoped_ptr<PendingPageScaleAnimation> 1647 scoped_ptr<PendingPageScaleAnimation>
1643 LayerTreeImpl::TakePendingPageScaleAnimation() { 1648 LayerTreeImpl::TakePendingPageScaleAnimation() {
1644 return pending_page_scale_animation_.Pass(); 1649 return pending_page_scale_animation_.Pass();
1645 } 1650 }
1646 1651
1647 } // namespace cc 1652 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698