diff options
author | jdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 20:33:03 +0000 |
---|---|---|
committer | jdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 20:33:03 +0000 |
commit | d0874b2242fb963fc04c9bf5157ac27666f37b18 (patch) | |
tree | 23b3eeaa8b7d10e15a63011fed71bee1a0732d59 /android_webview/renderer | |
parent | bfa86fa9155488d62cb089f7d29e786b31ce1b76 (diff) | |
download | chromium_src-d0874b2242fb963fc04c9bf5157ac27666f37b18.zip chromium_src-d0874b2242fb963fc04c9bf5157ac27666f37b18.tar.gz chromium_src-d0874b2242fb963fc04c9bf5157ac27666f37b18.tar.bz2 |
Allow for synchronous compositor input handling when UI and compositor threads
are merged.
In particular, we provide a hook for input event filtering in
RenderWidgetHostView, which is used by RenderWidgetHostImpl during input event
processing. When the UI and compositor threads are merged (via a
WebView-specific flag), this hook allows compositor-relevant input events to be
filtered and processed synchronously, prior to their being forwarded to the
renderer.
BUG=
Review URL: https://chromiumcodereview.appspot.com/12416005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188797 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/renderer')
-rw-r--r-- | android_webview/renderer/aw_content_renderer_client.cc | 11 | ||||
-rw-r--r-- | android_webview/renderer/aw_content_renderer_client.h | 5 | ||||
-rw-r--r-- | android_webview/renderer/view_renderer.cc | 5 | ||||
-rw-r--r-- | android_webview/renderer/view_renderer.h | 1 |
4 files changed, 19 insertions, 3 deletions
diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index 14db191..ef07daf 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc @@ -22,8 +22,11 @@ namespace android_webview { AwContentRendererClient::AwContentRendererClient( - CompositorMessageLoopGetter* compositor_message_loop_getter) - : compositor_message_loop_getter_(compositor_message_loop_getter) { + CompositorMessageLoopGetter* compositor_message_loop_getter, + bool should_create_compositor_input_handler) + : compositor_message_loop_getter_(compositor_message_loop_getter), + should_create_compositor_input_handler_( + should_create_compositor_input_handler) { } AwContentRendererClient::~AwContentRendererClient() { @@ -100,4 +103,8 @@ MessageLoop* AwContentRendererClient::OverrideCompositorMessageLoop() const { return (*compositor_message_loop_getter_)(); } +bool AwContentRendererClient::ShouldCreateCompositorInputHandler() const { + return should_create_compositor_input_handler_; +} + } // namespace android_webview diff --git a/android_webview/renderer/aw_content_renderer_client.h b/android_webview/renderer/aw_content_renderer_client.h index 2df9141..513e589 100644 --- a/android_webview/renderer/aw_content_renderer_client.h +++ b/android_webview/renderer/aw_content_renderer_client.h @@ -21,7 +21,8 @@ class AwContentRendererClient : public content::ContentRendererClient { typedef MessageLoop* CompositorMessageLoopGetter(); explicit AwContentRendererClient( - CompositorMessageLoopGetter* compositor_message_loop_getter); + CompositorMessageLoopGetter* compositor_message_loop_getter, + bool should_create_compositor_input_handler); virtual ~AwContentRendererClient(); // ContentRendererClient implementation. @@ -40,11 +41,13 @@ class AwContentRendererClient : public content::ContentRendererClient { virtual bool IsLinkVisited(unsigned long long link_hash) OVERRIDE; virtual void PrefetchHostName(const char* hostname, size_t length) OVERRIDE; virtual MessageLoop* OverrideCompositorMessageLoop() const OVERRIDE; + virtual bool ShouldCreateCompositorInputHandler() const OVERRIDE; private: scoped_ptr<AwRenderProcessObserver> aw_render_process_observer_; scoped_ptr<components::VisitedLinkSlave> visited_link_slave_; CompositorMessageLoopGetter* compositor_message_loop_getter_; + bool should_create_compositor_input_handler_; }; } // namespace android_webview diff --git a/android_webview/renderer/view_renderer.cc b/android_webview/renderer/view_renderer.cc index dd0d7e7..ab48906 100644 --- a/android_webview/renderer/view_renderer.cc +++ b/android_webview/renderer/view_renderer.cc @@ -40,6 +40,11 @@ bool ViewRenderer::OnMessageReceived(const IPC::Message& message) { return handled; } +void ViewRenderer::DidActivateCompositor(int input_handler_identifier) { + Send(new AwViewHostMsg_DidActivateAcceleratedCompositing( + routing_id(), input_handler_identifier)); +} + void ViewRenderer::DidCommitCompositorFrame() { if (!capture_picture_enabled_) return; diff --git a/android_webview/renderer/view_renderer.h b/android_webview/renderer/view_renderer.h index 8c4ba8f..39fd755 100644 --- a/android_webview/renderer/view_renderer.h +++ b/android_webview/renderer/view_renderer.h @@ -24,6 +24,7 @@ class ViewRenderer : public content::RenderViewObserver { // content::RenderViewObserver implementation. virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; + virtual void DidActivateCompositor(int input_handler_identifier) OVERRIDE; virtual void DidCommitCompositorFrame() OVERRIDE; void OnEnableCapturePictureCallback(bool enable); |