| 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 : layer_(layer), delegate_(delegate), layer_tree_impl_(layer_tree) {} | 44 : layer_(layer), delegate_(delegate), layer_tree_impl_(layer_tree) {} |
| 45 virtual ~LayerScrollOffsetDelegateProxy() {} | 45 virtual ~LayerScrollOffsetDelegateProxy() {} |
| 46 | 46 |
| 47 gfx::ScrollOffset last_set_scroll_offset() const { | 47 gfx::ScrollOffset last_set_scroll_offset() const { |
| 48 return last_set_scroll_offset_; | 48 return last_set_scroll_offset_; |
| 49 } | 49 } |
| 50 | 50 |
| 51 // LayerScrollOffsetDelegate implementation. | 51 // LayerScrollOffsetDelegate implementation. |
| 52 void SetTotalScrollOffset(const gfx::ScrollOffset& new_offset) override { | 52 void SetTotalScrollOffset(const gfx::ScrollOffset& new_offset) override { |
| 53 last_set_scroll_offset_ = new_offset; | 53 last_set_scroll_offset_ = new_offset; |
| 54 layer_tree_impl_->UpdateScrollOffsetDelegate(); | |
| 55 } | 54 } |
| 56 | 55 |
| 57 gfx::ScrollOffset GetTotalScrollOffset() override { | 56 gfx::ScrollOffset GetTotalScrollOffset() override { |
| 58 return layer_tree_impl_->GetDelegatedScrollOffset(layer_); | 57 return layer_tree_impl_->GetDelegatedScrollOffset(layer_); |
| 59 } | 58 } |
| 60 | 59 |
| 61 bool IsExternalFlingActive() const override { | 60 bool IsExternalFlingActive() const override { |
| 62 return delegate_->IsExternalFlingActive(); | 61 return delegate_->IsExternalFlingActive(); |
| 63 } | 62 } |
| 64 | 63 |
| 64 void Update() const override { |
| 65 layer_tree_impl_->UpdateScrollOffsetDelegate(); |
| 66 } |
| 67 |
| 65 private: | 68 private: |
| 66 LayerImpl* layer_; | 69 LayerImpl* layer_; |
| 67 LayerScrollOffsetDelegate* delegate_; | 70 LayerScrollOffsetDelegate* delegate_; |
| 68 LayerTreeImpl* layer_tree_impl_; | 71 LayerTreeImpl* layer_tree_impl_; |
| 69 gfx::ScrollOffset last_set_scroll_offset_; | 72 gfx::ScrollOffset last_set_scroll_offset_; |
| 70 }; | 73 }; |
| 71 | 74 |
| 72 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) | 75 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) |
| 73 : layer_tree_host_impl_(layer_tree_host_impl), | 76 : layer_tree_host_impl_(layer_tree_host_impl), |
| 74 source_frame_number_(-1), | 77 source_frame_number_(-1), |
| (...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 } | 926 } |
| 924 | 927 |
| 925 if (outer_viewport_scroll_layer_) { | 928 if (outer_viewport_scroll_layer_) { |
| 926 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | 929 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( |
| 927 new LayerScrollOffsetDelegateProxy(OuterViewportScrollLayer(), | 930 new LayerScrollOffsetDelegateProxy(OuterViewportScrollLayer(), |
| 928 root_layer_scroll_offset_delegate_, | 931 root_layer_scroll_offset_delegate_, |
| 929 this)); | 932 this)); |
| 930 outer_viewport_scroll_layer_->SetScrollOffsetDelegate( | 933 outer_viewport_scroll_layer_->SetScrollOffsetDelegate( |
| 931 outer_viewport_scroll_delegate_proxy_.get()); | 934 outer_viewport_scroll_delegate_proxy_.get()); |
| 932 } | 935 } |
| 936 |
| 937 if (inner_viewport_scroll_layer_) |
| 938 UpdateScrollOffsetDelegate(); |
| 933 } | 939 } |
| 934 } | 940 } |
| 935 | 941 |
| 936 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { | 942 void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { |
| 937 DCHECK(root_layer_scroll_offset_delegate_); | 943 DCHECK(root_layer_scroll_offset_delegate_); |
| 938 if (inner_viewport_scroll_layer_) { | 944 if (inner_viewport_scroll_layer_) { |
| 939 inner_viewport_scroll_layer_->DidScroll(); | 945 inner_viewport_scroll_layer_->DidScroll(); |
| 940 } | 946 } |
| 941 if (outer_viewport_scroll_layer_) { | 947 if (outer_viewport_scroll_layer_) { |
| 942 outer_viewport_scroll_layer_->DidScroll(); | 948 outer_viewport_scroll_layer_->DidScroll(); |
| 943 } | 949 } |
| 944 } | 950 } |
| 945 | 951 |
| 946 void LayerTreeImpl::UpdateScrollOffsetDelegate() { | 952 void LayerTreeImpl::UpdateScrollOffsetDelegate() { |
| 947 DCHECK(InnerViewportScrollLayer()); | 953 DCHECK(InnerViewportScrollLayer()); |
| 954 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); |
| 948 DCHECK(root_layer_scroll_offset_delegate_); | 955 DCHECK(root_layer_scroll_offset_delegate_); |
| 949 | 956 |
| 950 gfx::ScrollOffset offset = | 957 gfx::ScrollOffset offset = |
| 951 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 958 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); |
| 952 | 959 |
| 953 if (OuterViewportScrollLayer()) | 960 if (OuterViewportScrollLayer()) |
| 954 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 961 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); |
| 955 | 962 |
| 956 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 963 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
| 957 offset, | 964 offset, |
| (...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1515 page_scale, | 1522 page_scale, |
| 1516 duration.InSecondsF()); | 1523 duration.InSecondsF()); |
| 1517 } | 1524 } |
| 1518 } | 1525 } |
| 1519 | 1526 |
| 1520 scoped_ptr<PageScaleAnimation> LayerTreeImpl::TakePageScaleAnimation() { | 1527 scoped_ptr<PageScaleAnimation> LayerTreeImpl::TakePageScaleAnimation() { |
| 1521 return page_scale_animation_.Pass(); | 1528 return page_scale_animation_.Pass(); |
| 1522 } | 1529 } |
| 1523 | 1530 |
| 1524 } // namespace cc | 1531 } // namespace cc |
| OLD | NEW |