summaryrefslogtreecommitdiffstats
path: root/android_webview/renderer
diff options
context:
space:
mode:
authorjdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 20:33:03 +0000
committerjdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 20:33:03 +0000
commitd0874b2242fb963fc04c9bf5157ac27666f37b18 (patch)
tree23b3eeaa8b7d10e15a63011fed71bee1a0732d59 /android_webview/renderer
parentbfa86fa9155488d62cb089f7d29e786b31ce1b76 (diff)
downloadchromium_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.cc11
-rw-r--r--android_webview/renderer/aw_content_renderer_client.h5
-rw-r--r--android_webview/renderer/view_renderer.cc5
-rw-r--r--android_webview/renderer/view_renderer.h1
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);