diff options
Diffstat (limited to 'cc/layers/layer_impl.cc')
-rw-r--r-- | cc/layers/layer_impl.cc | 50 |
1 files changed, 13 insertions, 37 deletions
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc index 3ffeb73..8b37d12 100644 --- a/cc/layers/layer_impl.cc +++ b/cc/layers/layer_impl.cc @@ -16,7 +16,6 @@ #include "cc/debug/layer_tree_debug_state.h" #include "cc/debug/micro_benchmark_impl.h" #include "cc/debug/traced_value.h" -#include "cc/input/layer_scroll_offset_delegate.h" #include "cc/layers/layer_utils.h" #include "cc/layers/painted_scrollbar_layer_impl.h" #include "cc/output/copy_output_request.h" @@ -49,7 +48,6 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, layer_id_(id), layer_tree_impl_(tree_impl), scroll_offset_(scroll_offset), - scroll_offset_delegate_(nullptr), scroll_clip_layer_(nullptr), should_scroll_on_main_thread_(false), have_wheel_event_handlers_(false), @@ -164,9 +162,6 @@ void LayerImpl::SetScrollParent(LayerImpl* parent) { if (scroll_parent_ == parent) return; - // Having both a scroll parent and a scroll offset delegate is unsupported. - DCHECK(!scroll_offset_delegate_); - if (parent) DCHECK_EQ(layer_tree_impl()->LayerById(parent->id()), parent); @@ -385,8 +380,6 @@ void LayerImpl::GetContentsResourceId(ResourceProvider::ResourceId* resource_id, } gfx::Vector2dF LayerImpl::ScrollBy(const gfx::Vector2dF& scroll) { - RefreshFromScrollDelegate(); - gfx::ScrollOffset adjusted_scroll(scroll); if (layer_tree_impl()->settings().use_pinch_virtual_viewport) { if (!user_scrollable_horizontal_) @@ -1108,25 +1101,21 @@ void LayerImpl::SetContentsScale(float contents_scale_x, NoteLayerPropertyChanged(); } -void LayerImpl::SetScrollOffsetDelegate( - ScrollOffsetDelegate* scroll_offset_delegate) { - // Having both a scroll parent and a scroll offset delegate is unsupported. - DCHECK(!scroll_parent_); - RefreshFromScrollDelegate(); - scroll_offset_delegate_ = scroll_offset_delegate; - if (scroll_offset_delegate_) - scroll_offset_delegate_->SetCurrentScrollOffset(CurrentScrollOffset()); -} - bool LayerImpl::IsExternalFlingActive() const { - return scroll_offset_delegate_ && - scroll_offset_delegate_->IsExternalFlingActive(); + return layer_tree_impl_->IsExternalFlingActive(); } void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) { DCHECK(IsActive()); if (scroll_offset_->SetCurrent(scroll_offset)) - DidUpdateScrollOffset(); + DidUpdateScrollOffset(false); +} + +void LayerImpl::SetCurrentScrollOffsetFromDelegate( + const gfx::ScrollOffset& scroll_offset) { + DCHECK(IsActive()); + if (scroll_offset_->SetCurrent(scroll_offset)) + DidUpdateScrollOffset(true); } void LayerImpl::PushScrollOffsetFromMainThread( @@ -1141,8 +1130,6 @@ void LayerImpl::PushScrollOffsetFromMainThreadAndClobberActiveValue( } gfx::ScrollOffset LayerImpl::PullDeltaForMainThread() { - RefreshFromScrollDelegate(); - // TODO(miletus): Remove all this temporary flooring machinery when // Blink fully supports fractional scrolls. gfx::ScrollOffset current_offset = CurrentScrollOffset(); @@ -1158,13 +1145,6 @@ gfx::ScrollOffset LayerImpl::PullDeltaForMainThread() { return delta; } -void LayerImpl::RefreshFromScrollDelegate() { - if (scroll_offset_delegate_) { - SetCurrentScrollOffset( - gfx::ScrollOffset(scroll_offset_delegate_->GetCurrentScrollOffset())); - } -} - gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const { return scroll_offset_->Current(IsActive()); } @@ -1203,16 +1183,12 @@ void LayerImpl::PushScrollOffset(const gfx::ScrollOffset* scroll_offset) { } if (changed) - DidUpdateScrollOffset(); + DidUpdateScrollOffset(false); } -void LayerImpl::DidUpdateScrollOffset() { - if (scroll_offset_delegate_) { - scroll_offset_delegate_->SetCurrentScrollOffset(CurrentScrollOffset()); - scroll_offset_delegate_->Update(); - RefreshFromScrollDelegate(); - } - +void LayerImpl::DidUpdateScrollOffset(bool is_from_root_delegate) { + if (!is_from_root_delegate) + layer_tree_impl()->DidUpdateScrollOffset(id()); NoteLayerPropertyChangedForSubtree(); ScrollbarParametersDidChange(false); } |