diff options
author | danakj <danakj@chromium.org> | 2015-09-21 16:07:59 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-21 23:08:48 +0000 |
commit | dd74e516b6726bceb76a69e29c6a90121e08d286 (patch) | |
tree | 57907d40cba6ac62229b924eb4442ffce0a9718c /content/browser/android/in_process | |
parent | 2cd9d01be2194c4828307754c6f1334eb8bd7f57 (diff) | |
download | chromium_src-dd74e516b6726bceb76a69e29c6a90121e08d286.zip chromium_src-dd74e516b6726bceb76a69e29c6a90121e08d286.tar.gz chromium_src-dd74e516b6726bceb76a69e29c6a90121e08d286.tar.bz2 |
Remove LayerScrollOffsetDelegate, make all input paths go thru proxy.
This removes the cc::LayerScrollOffsetDelegate interface, moving it
into the InputHandlerClient interface.
It also removes the pointer to cc::LayerTreeHostImpl (as a
cc::InputHandler*) from the WebView embedder code. Instead make the
WebView code always go through the SynchronousInputHandlerProxy (which
is the InputHandlerProxy) to talk to the compositor about input-related
things.
R=boliu, jdduke@chromium.org
BUG=531746
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1353013002
Cr-Commit-Position: refs/heads/master@{#350056}
Diffstat (limited to 'content/browser/android/in_process')
6 files changed, 21 insertions, 37 deletions
diff --git a/content/browser/android/in_process/synchronous_compositor_impl.cc b/content/browser/android/in_process/synchronous_compositor_impl.cc index 06d622c..9846672 100644 --- a/content/browser/android/in_process/synchronous_compositor_impl.cc +++ b/content/browser/android/in_process/synchronous_compositor_impl.cc @@ -8,7 +8,6 @@ #include "base/bind.h" #include "base/lazy_instance.h" #include "base/message_loop/message_loop.h" -#include "cc/input/input_handler.h" #include "content/browser/android/in_process/synchronous_compositor_external_begin_frame_source.h" #include "content/browser/android/in_process/synchronous_compositor_factory_impl.h" #include "content/browser/android/in_process/synchronous_compositor_registry.h" @@ -21,6 +20,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" +#include "ui/gfx/geometry/scroll_offset.h" #include "ui/gl/gl_surface.h" namespace content { @@ -79,7 +79,7 @@ SynchronousCompositorImpl::SynchronousCompositorImpl(WebContents* contents) begin_frame_source_(nullptr), contents_(contents), routing_id_(contents->GetRoutingID()), - input_handler_(nullptr), + synchronous_input_handler_proxy_(nullptr), registered_with_client_(false), is_active_(true), renderer_needs_begin_frames_(false), @@ -92,7 +92,7 @@ SynchronousCompositorImpl::SynchronousCompositorImpl(WebContents* contents) SynchronousCompositorImpl::~SynchronousCompositorImpl() { DCHECK(!output_surface_); DCHECK(!begin_frame_source_); - DCHECK(!input_handler_); + DCHECK(!synchronous_input_handler_proxy_); } void SynchronousCompositorImpl::SetClient( @@ -120,7 +120,7 @@ void SynchronousCompositorImpl::RegisterWithClient() { DCHECK(CalledOnValidThread()); DCHECK(compositor_client_); DCHECK(output_surface_); - DCHECK(input_handler_); + DCHECK(synchronous_input_handler_proxy_); DCHECK(!registered_with_client_); registered_with_client_ = true; @@ -130,12 +130,10 @@ void SynchronousCompositorImpl::RegisterWithClient() { base::Bind(&SynchronousCompositorImpl::DidActivatePendingTree, weak_ptr_factory_.GetWeakPtr())); - // Setting the delegate causes UpdateRootLayerState immediately so do it - // after setting the client. - input_handler_->SetRootLayerScrollOffsetDelegate(this); // This disables the input system from animating inputs autonomously, instead // routing all input animations through the SynchronousInputHandler, which is - // |this| class. + // |this| class. Calling this causes an UpdateRootLayerState() immediately so, + // do it after setting the client. synchronous_input_handler_proxy_->SetOnlySynchronouslyAnimateRootFlings(this); } @@ -155,19 +153,16 @@ void SynchronousCompositor::SetUseIpcCommandBuffer() { void SynchronousCompositorImpl::DidInitializeRendererObjects( SynchronousCompositorOutputSurface* output_surface, SynchronousCompositorExternalBeginFrameSource* begin_frame_source, - cc::InputHandler* input_handler, SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { DCHECK(!output_surface_); DCHECK(!begin_frame_source_); DCHECK(output_surface); DCHECK(begin_frame_source); DCHECK(compositor_client_); - DCHECK(input_handler); DCHECK(synchronous_input_handler_proxy); output_surface_ = output_surface; begin_frame_source_ = begin_frame_source; - input_handler_ = input_handler; synchronous_input_handler_proxy_ = synchronous_input_handler_proxy; output_surface_->SetCompositor(this); @@ -180,16 +175,18 @@ void SynchronousCompositorImpl::DidDestroyRendererObjects() { DCHECK(compositor_client_); if (registered_with_client_) { - input_handler_->SetRootLayerScrollOffsetDelegate(nullptr); output_surface_->SetTreeActivationCallback(base::Closure()); compositor_client_->DidDestroyCompositor(this); registered_with_client_ = false; } + // This object is being destroyed, so remove pointers to it. begin_frame_source_->SetCompositor(nullptr); output_surface_->SetCompositor(nullptr); + synchronous_input_handler_proxy_->SetOnlySynchronouslyAnimateRootFlings( + nullptr); - input_handler_ = nullptr; + synchronous_input_handler_proxy_ = nullptr; begin_frame_source_ = nullptr; output_surface_ = nullptr; // Don't propogate this signal from one renderer to the next. @@ -276,9 +273,10 @@ void SynchronousCompositorImpl::PostInvalidate() { void SynchronousCompositorImpl::DidChangeRootLayerScrollOffset( const gfx::ScrollOffset& root_offset) { DCHECK(CalledOnValidThread()); - if (!input_handler_) + if (!synchronous_input_handler_proxy_) return; - input_handler_->OnRootLayerDelegatedScrollOffsetChanged(root_offset); + synchronous_input_handler_proxy_->SynchronouslySetRootScrollOffset( + root_offset); } void SynchronousCompositorImpl::SetIsActive(bool is_active) { diff --git a/content/browser/android/in_process/synchronous_compositor_impl.h b/content/browser/android/in_process/synchronous_compositor_impl.h index 2f310bd..049fe78 100644 --- a/content/browser/android/in_process/synchronous_compositor_impl.h +++ b/content/browser/android/in_process/synchronous_compositor_impl.h @@ -10,7 +10,6 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" -#include "cc/input/layer_scroll_offset_delegate.h" #include "content/browser/android/in_process/synchronous_compositor_output_surface.h" #include "content/common/input/input_event_ack_state.h" #include "content/public/browser/android/synchronous_compositor.h" @@ -38,8 +37,7 @@ struct DidOverscrollParams; // This class is created on the main thread but most of the APIs are called // from the Compositor thread. class SynchronousCompositorImpl - : public cc::LayerScrollOffsetDelegate, - public SynchronousInputHandler, + : public SynchronousInputHandler, public SynchronousCompositor, public WebContentsUserData<SynchronousCompositorImpl> { public: @@ -55,7 +53,6 @@ class SynchronousCompositorImpl void DidInitializeRendererObjects( SynchronousCompositorOutputSurface* output_surface, SynchronousCompositorExternalBeginFrameSource* begin_frame_source, - cc::InputHandler* input_handler, SynchronousInputHandlerProxy* synchronous_input_handler_proxy); void DidDestroyRendererObjects(); @@ -86,8 +83,6 @@ class SynchronousCompositorImpl // SynchronousInputHandler void SetNeedsSynchronousAnimateInput() override; - - // LayerScrollOffsetDelegate void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, const gfx::ScrollOffset& max_scroll_offset, const gfx::SizeF& scrollable_size, @@ -117,7 +112,6 @@ class SynchronousCompositorImpl SynchronousCompositorExternalBeginFrameSource* begin_frame_source_; WebContents* contents_; const int routing_id_; - cc::InputHandler* input_handler_; SynchronousInputHandlerProxy* synchronous_input_handler_proxy_; bool registered_with_client_; bool is_active_; diff --git a/content/browser/android/in_process/synchronous_compositor_registry.cc b/content/browser/android/in_process/synchronous_compositor_registry.cc index 84c45a2..d101797 100644 --- a/content/browser/android/in_process/synchronous_compositor_registry.cc +++ b/content/browser/android/in_process/synchronous_compositor_registry.cc @@ -107,13 +107,11 @@ void SynchronousCompositorRegistry::UnregisterOutputSurface( void SynchronousCompositorRegistry::RegisterInputHandler( int routing_id, - cc::InputHandler* input_handler, SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { DCHECK(CalledOnValidThread()); - DCHECK(input_handler); + DCHECK(synchronous_input_handler_proxy); Entry& entry = entry_map_[routing_id]; - DCHECK(!entry.input_handler); - entry.input_handler = input_handler; + DCHECK(!entry.synchronous_input_handler_proxy); entry.synchronous_input_handler_proxy = synchronous_input_handler_proxy; CheckIsReady(routing_id); } @@ -125,7 +123,7 @@ void SynchronousCompositorRegistry::UnregisterInputHandler(int routing_id) { if (entry.IsReady()) UnregisterObjects(routing_id); - entry.input_handler = nullptr; + entry.synchronous_input_handler_proxy = nullptr; RemoveEntryIfNeeded(routing_id); } @@ -134,7 +132,7 @@ void SynchronousCompositorRegistry::CheckIsReady(int routing_id) { Entry& entry = entry_map_[routing_id]; if (entry.IsReady()) { entry.compositor->DidInitializeRendererObjects( - entry.output_surface, entry.begin_frame_source, entry.input_handler, + entry.output_surface, entry.begin_frame_source, entry.synchronous_input_handler_proxy); } } @@ -150,7 +148,7 @@ void SynchronousCompositorRegistry::RemoveEntryIfNeeded(int routing_id) { DCHECK(entry_map_.find(routing_id) != entry_map_.end()); Entry& entry = entry_map_[routing_id]; if (!entry.compositor && !entry.begin_frame_source && !entry.output_surface && - !entry.input_handler) { + !entry.synchronous_input_handler_proxy) { entry_map_.erase(routing_id); } } @@ -163,11 +161,10 @@ SynchronousCompositorRegistry::Entry::Entry() : compositor(nullptr), begin_frame_source(nullptr), output_surface(nullptr), - input_handler(nullptr), synchronous_input_handler_proxy(nullptr) {} bool SynchronousCompositorRegistry::Entry::IsReady() { - return compositor && begin_frame_source && output_surface && input_handler && + return compositor && begin_frame_source && output_surface && synchronous_input_handler_proxy; } diff --git a/content/browser/android/in_process/synchronous_compositor_registry.h b/content/browser/android/in_process/synchronous_compositor_registry.h index f84bb0d..f7dc913 100644 --- a/content/browser/android/in_process/synchronous_compositor_registry.h +++ b/content/browser/android/in_process/synchronous_compositor_registry.h @@ -41,7 +41,6 @@ class SynchronousCompositorRegistry { SynchronousCompositorOutputSurface* output_surface); void RegisterInputHandler( int routing_id, - cc::InputHandler* input_handler, SynchronousInputHandlerProxy* synchronous_input_handler_proxy); void UnregisterInputHandler(int routing_id); @@ -54,7 +53,6 @@ class SynchronousCompositorRegistry { SynchronousCompositorImpl* compositor; SynchronousCompositorExternalBeginFrameSource* begin_frame_source; SynchronousCompositorOutputSurface* output_surface; - cc::InputHandler* input_handler; SynchronousInputHandlerProxy* synchronous_input_handler_proxy; Entry(); diff --git a/content/browser/android/in_process/synchronous_input_event_filter.cc b/content/browser/android/in_process/synchronous_input_event_filter.cc index c3669af..6645607 100644 --- a/content/browser/android/in_process/synchronous_input_event_filter.cc +++ b/content/browser/android/in_process/synchronous_input_event_filter.cc @@ -5,7 +5,6 @@ #include "content/browser/android/in_process/synchronous_input_event_filter.h" #include "base/callback.h" -#include "cc/input/input_handler.h" #include "content/browser/android/in_process/synchronous_compositor_impl.h" #include "content/browser/android/in_process/synchronous_compositor_registry.h" #include "content/public/browser/browser_thread.h" @@ -48,11 +47,10 @@ void SynchronousInputEventFilter::SetBoundHandlerOnUIThread( void SynchronousInputEventFilter::DidAddInputHandler( int routing_id, - cc::InputHandler* input_handler, SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { DCHECK_CURRENTLY_ON(BrowserThread::UI); SynchronousCompositorRegistry::GetInstance()->RegisterInputHandler( - routing_id, input_handler, synchronous_input_handler_proxy); + routing_id, synchronous_input_handler_proxy); } void SynchronousInputEventFilter::DidRemoveInputHandler(int routing_id) { diff --git a/content/browser/android/in_process/synchronous_input_event_filter.h b/content/browser/android/in_process/synchronous_input_event_filter.h index 9174a4d..89feee1 100644 --- a/content/browser/android/in_process/synchronous_input_event_filter.h +++ b/content/browser/android/in_process/synchronous_input_event_filter.h @@ -35,7 +35,6 @@ class SynchronousInputEventFilter : public InputHandlerManagerClient { void SetBoundHandler(const Handler& handler) override; void DidAddInputHandler( int routing_id, - cc::InputHandler* input_handler, SynchronousInputHandlerProxy* synchronous_input_handler_proxy) override; void DidRemoveInputHandler(int routing_id) override; void DidOverscroll(int routing_id, |