| 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 |