Index: android_webview/browser/in_process_renderer/in_process_view_renderer.cc |
diff --git a/android_webview/browser/in_process_renderer/in_process_view_renderer.cc b/android_webview/browser/in_process_renderer/in_process_view_renderer.cc |
index 74acde0eed8615d77dbf2b3a978f7ca82afa824d..69bfa8ee1c481c51c6028337816398f82080e13c 100644 |
--- a/android_webview/browser/in_process_renderer/in_process_view_renderer.cc |
+++ b/android_webview/browser/in_process_renderer/in_process_view_renderer.cc |
@@ -110,6 +110,7 @@ InProcessViewRenderer::InProcessViewRenderer( |
JavaHelper* java_helper) |
: client_(client), |
java_helper_(java_helper), |
+ content_view_core_(NULL), |
web_contents_(NULL), |
compositor_(NULL), |
view_visible_(false), |
@@ -160,9 +161,19 @@ void InProcessViewRenderer::BindSynchronousCompositor( |
client_->RequestProcessMode(); |
} |
+void InProcessViewRenderer::BindSynchronousInputEventFilter( |
+ content::SynchronousInputEventFilter* input_event_filter) { |
+ input_event_filter_ = input_event_filter; |
+ if (content_view_core_) |
+ content_view_core_->SetInputEventFilter(input_event_filter_); |
+} |
+ |
void InProcessViewRenderer::SetContents( |
content::ContentViewCore* content_view_core) { |
// First remove association from the prior ContentViewCore / WebContents. |
+ if (content_view_core_) |
+ content_view_core_->SetInputEventFilter(NULL); |
+ |
if (web_contents_) { |
web_contents_->SetUserData(kUserDataKey, NULL); |
DCHECK(!web_contents_); // WebContentsGone should have been called. |
@@ -171,6 +182,8 @@ void InProcessViewRenderer::SetContents( |
if (!content_view_core) |
return; |
+ content_view_core_->SetInputEventFilter(input_event_filter_); |
+ |
web_contents_ = content_view_core->GetWebContents(); |
web_contents_->SetUserData(kUserDataKey, new UserData(this)); |
} |