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 <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 top_controls_delta_ -= sent_top_controls_delta_; | 429 top_controls_delta_ -= sent_top_controls_delta_; |
439 sent_top_controls_delta_ = 0.f; | 430 sent_top_controls_delta_ = 0.f; |
440 | 431 |
441 if (!root_layer()) | 432 if (!root_layer()) |
442 return; | 433 return; |
443 | 434 |
444 LayerTreeHostCommon::CallFunctionForSubtree( | 435 LayerTreeHostCommon::CallFunctionForSubtree( |
445 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); | 436 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); |
446 } | 437 } |
447 | 438 |
448 static void ApplyScrollDeltasSinceBeginMainFrameTo(LayerImpl* layer) { | |
449 layer->ApplyScrollDeltasSinceBeginMainFrame(); | |
450 } | |
451 | |
452 void LayerTreeImpl::ApplyScrollDeltasSinceBeginMainFrame() { | |
453 DCHECK(IsPendingTree()); | |
454 if (!root_layer()) | |
455 return; | |
456 | |
457 LayerTreeHostCommon::CallFunctionForSubtree( | |
458 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginMainFrameTo)); | |
459 } | |
460 | |
461 void LayerTreeImpl::SetViewportLayersFromIds( | 439 void LayerTreeImpl::SetViewportLayersFromIds( |
462 int overscroll_elasticity_layer_id, | 440 int overscroll_elasticity_layer_id, |
463 int page_scale_layer_id, | 441 int page_scale_layer_id, |
464 int inner_viewport_scroll_layer_id, | 442 int inner_viewport_scroll_layer_id, |
465 int outer_viewport_scroll_layer_id) { | 443 int outer_viewport_scroll_layer_id) { |
466 overscroll_elasticity_layer_ = LayerById(overscroll_elasticity_layer_id); | 444 overscroll_elasticity_layer_ = LayerById(overscroll_elasticity_layer_id); |
467 page_scale_layer_ = LayerById(page_scale_layer_id); | 445 page_scale_layer_ = LayerById(page_scale_layer_id); |
468 DCHECK(page_scale_layer_); | 446 DCHECK(page_scale_layer_); |
469 | 447 |
470 inner_viewport_scroll_layer_ = | 448 inner_viewport_scroll_layer_ = |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
972 } | 950 } |
973 | 951 |
974 if (inner_viewport_scroll_layer_) | 952 if (inner_viewport_scroll_layer_) |
975 UpdateScrollOffsetDelegate(); | 953 UpdateScrollOffsetDelegate(); |
976 } | 954 } |
977 } | 955 } |
978 | 956 |
979 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { | 957 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { |
980 DCHECK(root_layer_scroll_offset_delegate_); | 958 DCHECK(root_layer_scroll_offset_delegate_); |
981 if (inner_viewport_scroll_layer_) { | 959 if (inner_viewport_scroll_layer_) { |
982 inner_viewport_scroll_layer_->DidScroll(); | 960 inner_viewport_scroll_layer_->RefreshScrollDelegate(); |
983 } | 961 } |
984 if (outer_viewport_scroll_layer_) { | 962 if (outer_viewport_scroll_layer_) { |
985 outer_viewport_scroll_layer_->DidScroll(); | 963 outer_viewport_scroll_layer_->RefreshScrollDelegate(); |
986 } | 964 } |
987 } | 965 } |
988 | 966 |
989 void LayerTreeImpl::UpdateScrollOffsetDelegate() { | 967 void LayerTreeImpl::UpdateScrollOffsetDelegate() { |
990 DCHECK(InnerViewportScrollLayer()); | 968 DCHECK(InnerViewportScrollLayer()); |
991 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); | 969 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); |
992 DCHECK(root_layer_scroll_offset_delegate_); | 970 DCHECK(root_layer_scroll_offset_delegate_); |
993 | 971 |
994 gfx::ScrollOffset offset = | 972 gfx::ScrollOffset offset = |
995 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 973 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); |
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1523 scoped_ptr<PendingPageScaleAnimation> pending_animation) { | 1501 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
1524 pending_page_scale_animation_ = pending_animation.Pass(); | 1502 pending_page_scale_animation_ = pending_animation.Pass(); |
1525 } | 1503 } |
1526 | 1504 |
1527 scoped_ptr<PendingPageScaleAnimation> | 1505 scoped_ptr<PendingPageScaleAnimation> |
1528 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1506 LayerTreeImpl::TakePendingPageScaleAnimation() { |
1529 return pending_page_scale_animation_.Pass(); | 1507 return pending_page_scale_animation_.Pass(); |
1530 } | 1508 } |
1531 | 1509 |
1532 } // namespace cc | 1510 } // namespace cc |
OLD | NEW |