| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |