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 |
| 11 #include "base/auto_reset.h" |
11 #include "base/trace_event/trace_event.h" | 12 #include "base/trace_event/trace_event.h" |
12 #include "base/trace_event/trace_event_argument.h" | 13 #include "base/trace_event/trace_event_argument.h" |
13 #include "cc/animation/keyframed_animation_curve.h" | 14 #include "cc/animation/keyframed_animation_curve.h" |
14 #include "cc/animation/scrollbar_animation_controller.h" | 15 #include "cc/animation/scrollbar_animation_controller.h" |
15 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" | 16 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" |
16 #include "cc/animation/scrollbar_animation_controller_thinning.h" | 17 #include "cc/animation/scrollbar_animation_controller_thinning.h" |
17 #include "cc/base/math_util.h" | 18 #include "cc/base/math_util.h" |
18 #include "cc/base/synced_property.h" | 19 #include "cc/base/synced_property.h" |
19 #include "cc/base/util.h" | 20 #include "cc/base/util.h" |
20 #include "cc/debug/devtools_instrumentation.h" | 21 #include "cc/debug/devtools_instrumentation.h" |
21 #include "cc/debug/traced_value.h" | 22 #include "cc/debug/traced_value.h" |
| 23 #include "cc/input/layer_scroll_offset_delegate.h" |
22 #include "cc/input/page_scale_animation.h" | 24 #include "cc/input/page_scale_animation.h" |
23 #include "cc/layers/heads_up_display_layer_impl.h" | 25 #include "cc/layers/heads_up_display_layer_impl.h" |
24 #include "cc/layers/layer.h" | 26 #include "cc/layers/layer.h" |
25 #include "cc/layers/layer_iterator.h" | 27 #include "cc/layers/layer_iterator.h" |
26 #include "cc/layers/render_surface_impl.h" | 28 #include "cc/layers/render_surface_impl.h" |
27 #include "cc/layers/scrollbar_layer_impl_base.h" | 29 #include "cc/layers/scrollbar_layer_impl_base.h" |
28 #include "cc/resources/ui_resource_request.h" | 30 #include "cc/resources/ui_resource_request.h" |
29 #include "cc/trees/layer_tree_host_common.h" | 31 #include "cc/trees/layer_tree_host_common.h" |
30 #include "cc/trees/layer_tree_host_impl.h" | 32 #include "cc/trees/layer_tree_host_impl.h" |
31 #include "cc/trees/occlusion_tracker.h" | 33 #include "cc/trees/occlusion_tracker.h" |
32 #include "ui/gfx/geometry/point_conversions.h" | 34 #include "ui/gfx/geometry/point_conversions.h" |
33 #include "ui/gfx/geometry/size_conversions.h" | 35 #include "ui/gfx/geometry/size_conversions.h" |
34 #include "ui/gfx/geometry/vector2d_conversions.h" | 36 #include "ui/gfx/geometry/vector2d_conversions.h" |
35 | 37 |
36 namespace cc { | 38 namespace cc { |
37 // This class exists to split the LayerScrollOffsetDelegate between the | |
38 // InnerViewportScrollLayer and the OuterViewportScrollLayer in a manner | |
39 // that never requires the embedder or LayerImpl to know about. | |
40 class LayerScrollOffsetDelegateProxy : public LayerImpl::ScrollOffsetDelegate { | |
41 public: | |
42 LayerScrollOffsetDelegateProxy(LayerImpl* layer, | |
43 LayerScrollOffsetDelegate* delegate, | |
44 LayerTreeImpl* layer_tree) | |
45 : layer_(layer), delegate_(delegate), layer_tree_impl_(layer_tree) {} | |
46 virtual ~LayerScrollOffsetDelegateProxy() {} | |
47 | |
48 gfx::ScrollOffset last_set_scroll_offset() const { | |
49 return last_set_scroll_offset_; | |
50 } | |
51 | |
52 // LayerScrollOffsetDelegate implementation. | |
53 void SetCurrentScrollOffset(const gfx::ScrollOffset& new_offset) override { | |
54 last_set_scroll_offset_ = new_offset; | |
55 } | |
56 | |
57 gfx::ScrollOffset GetCurrentScrollOffset() override { | |
58 return layer_tree_impl_->GetDelegatedScrollOffset(layer_); | |
59 } | |
60 | |
61 bool IsExternalFlingActive() const override { | |
62 return delegate_->IsExternalFlingActive(); | |
63 } | |
64 | |
65 void Update() const override { | |
66 layer_tree_impl_->UpdateScrollOffsetDelegate(); | |
67 } | |
68 | |
69 private: | |
70 LayerImpl* layer_; | |
71 LayerScrollOffsetDelegate* delegate_; | |
72 LayerTreeImpl* layer_tree_impl_; | |
73 gfx::ScrollOffset last_set_scroll_offset_; | |
74 }; | |
75 | 39 |
76 LayerTreeImpl::LayerTreeImpl( | 40 LayerTreeImpl::LayerTreeImpl( |
77 LayerTreeHostImpl* layer_tree_host_impl, | 41 LayerTreeHostImpl* layer_tree_host_impl, |
78 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor, | 42 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor, |
79 scoped_refptr<SyncedTopControls> top_controls_shown_ratio, | 43 scoped_refptr<SyncedTopControls> top_controls_shown_ratio, |
80 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) | 44 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) |
81 : layer_tree_host_impl_(layer_tree_host_impl), | 45 : layer_tree_host_impl_(layer_tree_host_impl), |
82 source_frame_number_(-1), | 46 source_frame_number_(-1), |
83 hud_layer_(0), | 47 hud_layer_(0), |
84 currently_scrolling_layer_(NULL), | 48 currently_scrolling_layer_(NULL), |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 105 |
142 // TODO(vmpstr): Early out if there are no requests on any of the layers. For | 106 // TODO(vmpstr): Early out if there are no requests on any of the layers. For |
143 // that, we need to inform LayerTreeImpl whenever there are requests when we | 107 // that, we need to inform LayerTreeImpl whenever there are requests when we |
144 // get them. | 108 // get them. |
145 LayerTreeHostCommon::CallFunctionForSubtree( | 109 LayerTreeHostCommon::CallFunctionForSubtree( |
146 root_layer_.get(), [request_ids](LayerImpl* layer) { | 110 root_layer_.get(), [request_ids](LayerImpl* layer) { |
147 layer->GatherFrameTimingRequestIds(request_ids); | 111 layer->GatherFrameTimingRequestIds(request_ids); |
148 }); | 112 }); |
149 } | 113 } |
150 | 114 |
| 115 bool LayerTreeImpl::IsExternalFlingActive() const { |
| 116 return root_layer_scroll_offset_delegate_ && |
| 117 root_layer_scroll_offset_delegate_->IsExternalFlingActive(); |
| 118 } |
| 119 |
| 120 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) { |
| 121 int inner_layer_id = InnerViewportScrollLayer() |
| 122 ? InnerViewportScrollLayer()->id() |
| 123 : Layer::INVALID_ID; |
| 124 int outer_layer_id = OuterViewportScrollLayer() |
| 125 ? OuterViewportScrollLayer()->id() |
| 126 : Layer::INVALID_ID; |
| 127 if (layer_id != outer_layer_id && layer_id != inner_layer_id) |
| 128 return; |
| 129 |
| 130 if (!root_layer_scroll_offset_delegate_) |
| 131 return; |
| 132 |
| 133 UpdateRootScrollOffsetDelegate(); |
| 134 } |
| 135 |
151 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { | 136 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { |
152 if (inner_viewport_scroll_layer_) | |
153 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | |
154 if (outer_viewport_scroll_layer_) | |
155 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | |
156 inner_viewport_scroll_delegate_proxy_ = nullptr; | |
157 outer_viewport_scroll_delegate_proxy_ = nullptr; | |
158 | |
159 root_layer_ = layer.Pass(); | 137 root_layer_ = layer.Pass(); |
160 currently_scrolling_layer_ = NULL; | 138 currently_scrolling_layer_ = NULL; |
161 inner_viewport_scroll_layer_ = NULL; | 139 inner_viewport_scroll_layer_ = NULL; |
162 outer_viewport_scroll_layer_ = NULL; | 140 outer_viewport_scroll_layer_ = NULL; |
163 page_scale_layer_ = NULL; | 141 page_scale_layer_ = NULL; |
164 | 142 |
165 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); | 143 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); |
166 } | 144 } |
167 | 145 |
168 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { | 146 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { |
(...skipping 25 matching lines...) Expand all Loading... |
194 if (outer_viewport_scroll_layer_) | 172 if (outer_viewport_scroll_layer_) |
195 offset += outer_viewport_scroll_layer_->MaxScrollOffset(); | 173 offset += outer_viewport_scroll_layer_->MaxScrollOffset(); |
196 | 174 |
197 return offset; | 175 return offset; |
198 } | 176 } |
199 | 177 |
200 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { | 178 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { |
201 // Clear all data structures that have direct references to the layer tree. | 179 // Clear all data structures that have direct references to the layer tree. |
202 scrolling_layer_id_from_previous_tree_ = | 180 scrolling_layer_id_from_previous_tree_ = |
203 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; | 181 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; |
204 if (inner_viewport_scroll_layer_) | |
205 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | |
206 if (outer_viewport_scroll_layer_) | |
207 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | |
208 inner_viewport_scroll_delegate_proxy_ = nullptr; | |
209 outer_viewport_scroll_delegate_proxy_ = nullptr; | |
210 inner_viewport_scroll_layer_ = NULL; | 182 inner_viewport_scroll_layer_ = NULL; |
211 outer_viewport_scroll_layer_ = NULL; | 183 outer_viewport_scroll_layer_ = NULL; |
212 page_scale_layer_ = NULL; | 184 page_scale_layer_ = NULL; |
213 currently_scrolling_layer_ = NULL; | 185 currently_scrolling_layer_ = NULL; |
214 | 186 |
215 render_surface_layer_list_.clear(); | 187 render_surface_layer_list_.clear(); |
216 set_needs_update_draw_properties(); | 188 set_needs_update_draw_properties(); |
217 return root_layer_.Pass(); | 189 return root_layer_.Pass(); |
218 } | 190 } |
219 | 191 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 | 496 |
525 outer_viewport_scroll_layer_ = | 497 outer_viewport_scroll_layer_ = |
526 LayerById(outer_viewport_scroll_layer_id); | 498 LayerById(outer_viewport_scroll_layer_id); |
527 DCHECK(outer_viewport_scroll_layer_ || | 499 DCHECK(outer_viewport_scroll_layer_ || |
528 outer_viewport_scroll_layer_id == Layer::INVALID_ID); | 500 outer_viewport_scroll_layer_id == Layer::INVALID_ID); |
529 | 501 |
530 HideInnerViewportScrollbarsIfNearMinimumScale(); | 502 HideInnerViewportScrollbarsIfNearMinimumScale(); |
531 | 503 |
532 if (!root_layer_scroll_offset_delegate_) | 504 if (!root_layer_scroll_offset_delegate_) |
533 return; | 505 return; |
534 | |
535 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | |
536 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_, | |
537 root_layer_scroll_offset_delegate_, | |
538 this)); | |
539 | |
540 if (outer_viewport_scroll_layer_) | |
541 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | |
542 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_, | |
543 root_layer_scroll_offset_delegate_, | |
544 this)); | |
545 } | 506 } |
546 | 507 |
547 void LayerTreeImpl::ClearViewportLayers() { | 508 void LayerTreeImpl::ClearViewportLayers() { |
548 page_scale_layer_ = NULL; | 509 page_scale_layer_ = NULL; |
549 inner_viewport_scroll_layer_ = NULL; | 510 inner_viewport_scroll_layer_ = NULL; |
550 outer_viewport_scroll_layer_ = NULL; | 511 outer_viewport_scroll_layer_ = NULL; |
551 } | 512 } |
552 | 513 |
553 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { | 514 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { |
554 if (!needs_update_draw_properties_) | 515 if (!needs_update_draw_properties_) |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1033 for (size_t i = 0; i < swap_promise_list_.size(); i++) | 994 for (size_t i = 0; i < swap_promise_list_.size(); i++) |
1034 state->AppendDouble(swap_promise_list_[i]->TraceId()); | 995 state->AppendDouble(swap_promise_list_[i]->TraceId()); |
1035 state->EndArray(); | 996 state->EndArray(); |
1036 } | 997 } |
1037 | 998 |
1038 void LayerTreeImpl::SetRootLayerScrollOffsetDelegate( | 999 void LayerTreeImpl::SetRootLayerScrollOffsetDelegate( |
1039 LayerScrollOffsetDelegate* root_layer_scroll_offset_delegate) { | 1000 LayerScrollOffsetDelegate* root_layer_scroll_offset_delegate) { |
1040 if (root_layer_scroll_offset_delegate_ == root_layer_scroll_offset_delegate) | 1001 if (root_layer_scroll_offset_delegate_ == root_layer_scroll_offset_delegate) |
1041 return; | 1002 return; |
1042 | 1003 |
1043 if (!root_layer_scroll_offset_delegate) { | |
1044 // Make sure we remove the proxies from their layers before | |
1045 // releasing them. | |
1046 if (InnerViewportScrollLayer()) | |
1047 InnerViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | |
1048 if (OuterViewportScrollLayer()) | |
1049 OuterViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | |
1050 inner_viewport_scroll_delegate_proxy_ = nullptr; | |
1051 outer_viewport_scroll_delegate_proxy_ = nullptr; | |
1052 } | |
1053 | |
1054 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; | 1004 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; |
1055 | 1005 |
1056 if (root_layer_scroll_offset_delegate_) { | 1006 if (root_layer_scroll_offset_delegate_) { |
1057 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 1007 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
1058 TotalScrollOffset(), TotalMaxScrollOffset(), ScrollableSize(), | 1008 TotalScrollOffset(), TotalMaxScrollOffset(), ScrollableSize(), |
1059 current_page_scale_factor(), min_page_scale_factor(), | 1009 current_page_scale_factor(), min_page_scale_factor(), |
1060 max_page_scale_factor()); | 1010 max_page_scale_factor()); |
1061 | 1011 |
1062 if (inner_viewport_scroll_layer_) { | 1012 DistributeRootScrollOffset(); |
1063 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | |
1064 new LayerScrollOffsetDelegateProxy(InnerViewportScrollLayer(), | |
1065 root_layer_scroll_offset_delegate_, | |
1066 this)); | |
1067 inner_viewport_scroll_layer_->SetScrollOffsetDelegate( | |
1068 inner_viewport_scroll_delegate_proxy_.get()); | |
1069 } | |
1070 | |
1071 if (outer_viewport_scroll_layer_) { | |
1072 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | |
1073 new LayerScrollOffsetDelegateProxy(OuterViewportScrollLayer(), | |
1074 root_layer_scroll_offset_delegate_, | |
1075 this)); | |
1076 outer_viewport_scroll_layer_->SetScrollOffsetDelegate( | |
1077 outer_viewport_scroll_delegate_proxy_.get()); | |
1078 } | |
1079 | |
1080 if (inner_viewport_scroll_layer_) | |
1081 inner_viewport_scroll_layer_->RefreshFromScrollDelegate(); | |
1082 if (outer_viewport_scroll_layer_) | |
1083 outer_viewport_scroll_layer_->RefreshFromScrollDelegate(); | |
1084 | |
1085 if (inner_viewport_scroll_layer_) | |
1086 UpdateScrollOffsetDelegate(); | |
1087 } | 1013 } |
1088 } | 1014 } |
1089 | 1015 |
1090 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { | 1016 void LayerTreeImpl::UpdateRootScrollOffsetDelegate() { |
1091 DCHECK(root_layer_scroll_offset_delegate_); | |
1092 if (inner_viewport_scroll_layer_) { | |
1093 inner_viewport_scroll_layer_->RefreshFromScrollDelegate(); | |
1094 } | |
1095 if (outer_viewport_scroll_layer_) { | |
1096 outer_viewport_scroll_layer_->RefreshFromScrollDelegate(); | |
1097 } | |
1098 } | |
1099 | |
1100 void LayerTreeImpl::UpdateScrollOffsetDelegate() { | |
1101 DCHECK(InnerViewportScrollLayer()); | |
1102 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); | |
1103 DCHECK(root_layer_scroll_offset_delegate_); | 1017 DCHECK(root_layer_scroll_offset_delegate_); |
1104 | 1018 |
1105 gfx::ScrollOffset offset = | 1019 gfx::ScrollOffset offset = InnerViewportScrollLayer()->CurrentScrollOffset(); |
1106 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | |
1107 | 1020 |
1108 if (OuterViewportScrollLayer()) | 1021 if (OuterViewportScrollLayer()) |
1109 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 1022 offset += OuterViewportScrollLayer()->CurrentScrollOffset(); |
1110 | 1023 |
1111 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 1024 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
1112 offset, TotalMaxScrollOffset(), ScrollableSize(), | 1025 offset, TotalMaxScrollOffset(), ScrollableSize(), |
1113 current_page_scale_factor(), min_page_scale_factor(), | 1026 current_page_scale_factor(), min_page_scale_factor(), |
1114 max_page_scale_factor()); | 1027 max_page_scale_factor()); |
1115 } | 1028 } |
1116 | 1029 |
1117 gfx::ScrollOffset LayerTreeImpl::GetDelegatedScrollOffset(LayerImpl* layer) { | 1030 void LayerTreeImpl::DistributeRootScrollOffset() { |
1118 DCHECK(root_layer_scroll_offset_delegate_); | 1031 if (!root_layer_scroll_offset_delegate_) |
1119 DCHECK(InnerViewportScrollLayer()); | 1032 return; |
1120 if (layer == InnerViewportScrollLayer() && !OuterViewportScrollLayer()) | 1033 |
1121 return root_layer_scroll_offset_delegate_->GetTotalScrollOffset(); | 1034 gfx::ScrollOffset root_offset = |
| 1035 root_layer_scroll_offset_delegate_->GetTotalScrollOffset(); |
| 1036 |
| 1037 if (!InnerViewportScrollLayer()) |
| 1038 return; |
| 1039 |
| 1040 DCHECK(OuterViewportScrollLayer()); |
1122 | 1041 |
1123 // If we get here, we have both inner/outer viewports, and need to distribute | 1042 // If we get here, we have both inner/outer viewports, and need to distribute |
1124 // the scroll offset between them. | 1043 // the scroll offset between them. |
1125 DCHECK(inner_viewport_scroll_delegate_proxy_); | |
1126 DCHECK(outer_viewport_scroll_delegate_proxy_); | |
1127 gfx::ScrollOffset inner_viewport_offset = | 1044 gfx::ScrollOffset inner_viewport_offset = |
1128 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 1045 InnerViewportScrollLayer()->CurrentScrollOffset(); |
1129 gfx::ScrollOffset outer_viewport_offset = | 1046 gfx::ScrollOffset outer_viewport_offset = |
1130 outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 1047 OuterViewportScrollLayer()->CurrentScrollOffset(); |
1131 | 1048 |
1132 // It may be nothing has changed. | 1049 // It may be nothing has changed. |
1133 gfx::ScrollOffset delegate_offset = | 1050 if (inner_viewport_offset + outer_viewport_offset == root_offset) |
1134 root_layer_scroll_offset_delegate_->GetTotalScrollOffset(); | 1051 return; |
1135 if (inner_viewport_offset + outer_viewport_offset == delegate_offset) { | |
1136 if (layer == InnerViewportScrollLayer()) | |
1137 return inner_viewport_offset; | |
1138 else | |
1139 return outer_viewport_offset; | |
1140 } | |
1141 | 1052 |
1142 gfx::ScrollOffset max_outer_viewport_scroll_offset = | 1053 gfx::ScrollOffset max_outer_viewport_scroll_offset = |
1143 OuterViewportScrollLayer()->MaxScrollOffset(); | 1054 OuterViewportScrollLayer()->MaxScrollOffset(); |
1144 | 1055 |
1145 outer_viewport_offset = delegate_offset - inner_viewport_offset; | 1056 outer_viewport_offset = root_offset - inner_viewport_offset; |
1146 outer_viewport_offset.SetToMin(max_outer_viewport_scroll_offset); | 1057 outer_viewport_offset.SetToMin(max_outer_viewport_scroll_offset); |
1147 outer_viewport_offset.SetToMax(gfx::ScrollOffset()); | 1058 outer_viewport_offset.SetToMax(gfx::ScrollOffset()); |
1148 | 1059 |
1149 if (layer == OuterViewportScrollLayer()) | 1060 OuterViewportScrollLayer()->SetCurrentScrollOffsetFromDelegate( |
1150 return outer_viewport_offset; | 1061 outer_viewport_offset); |
| 1062 inner_viewport_offset = root_offset - outer_viewport_offset; |
| 1063 InnerViewportScrollLayer()->SetCurrentScrollOffsetFromDelegate( |
| 1064 inner_viewport_offset); |
1151 | 1065 |
1152 inner_viewport_offset = delegate_offset - outer_viewport_offset; | 1066 UpdateRootScrollOffsetDelegate(); |
1153 | |
1154 return inner_viewport_offset; | |
1155 } | 1067 } |
1156 | 1068 |
1157 void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { | 1069 void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { |
1158 DCHECK(swap_promise); | 1070 DCHECK(swap_promise); |
1159 swap_promise_list_.push_back(swap_promise.Pass()); | 1071 swap_promise_list_.push_back(swap_promise.Pass()); |
1160 } | 1072 } |
1161 | 1073 |
1162 void LayerTreeImpl::PassSwapPromises( | 1074 void LayerTreeImpl::PassSwapPromises( |
1163 ScopedPtrVector<SwapPromise>* new_swap_promise) { | 1075 ScopedPtrVector<SwapPromise>* new_swap_promise) { |
1164 swap_promise_list_.insert_and_take(swap_promise_list_.end(), | 1076 swap_promise_list_.insert_and_take(swap_promise_list_.end(), |
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1651 scoped_ptr<PendingPageScaleAnimation> pending_animation) { | 1563 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
1652 pending_page_scale_animation_ = pending_animation.Pass(); | 1564 pending_page_scale_animation_ = pending_animation.Pass(); |
1653 } | 1565 } |
1654 | 1566 |
1655 scoped_ptr<PendingPageScaleAnimation> | 1567 scoped_ptr<PendingPageScaleAnimation> |
1656 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1568 LayerTreeImpl::TakePendingPageScaleAnimation() { |
1657 return pending_page_scale_animation_.Pass(); | 1569 return pending_page_scale_animation_.Pass(); |
1658 } | 1570 } |
1659 | 1571 |
1660 } // namespace cc | 1572 } // namespace cc |
OLD | NEW |