Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Unified Diff: android_webview/browser/in_process_renderer/in_process_view_renderer.cc

Issue 15920002: Fix WebView compositor input handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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));
}

Powered by Google App Engine
This is Rietveld 408576698