summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Sargeant <tobiasjs@google.com>2018-12-12 00:15:07 +0000
committerCommit Bot <commit-bot@chromium.org>2018-12-12 00:15:07 +0000
commit4bdb920ccb69a70dbcad3d667e97c29e6246a23b (patch)
tree6a5fadf3b74e15bf61ba7ecc84c077d0e9d9b040
parent93092e8c0a0843d86c5a1c1bb2ccbb29309c5f5c (diff)
downloadwebview_support_interfaces-4bdb920ccb69a70dbcad3d667e97c29e6246a23b.tar.gz
[aw] Support library glue for WebViewRendererClient
This exposes a support library feature allowing applications to set a WebViewRendererClient object upon which renderer related callbacks are received. Specifically, these callbacks are: onRendererUnresponsive(renderer) - called when the renderer associated with a webview does not ack an input event, or a navigation does not commit within 5 seconds. The callback will continue to be called at 5 second intervals until the renderer is killed or the unresponsiveness resolves. |renderer| may be null if webview is operating in single process mode. onRendererResponsive(renderer) - called once when an unresponsive renderer becomes responsive again. Bug: 907887 Change-Id: Ic5c74160e293791e3efc051a5727448ee061c9e2 Reviewed-on: https://chromium-review.googlesource.com/c/1361242 Reviewed-by: Changwan Ryu <changwan@chromium.org> Reviewed-by: Nate Fischer <ntfschr@chromium.org> Reviewed-by: Richard Coles <torne@chromium.org> Commit-Queue: Tobias Sargeant <tobiasjs@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#615738} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 208287beba61d4f21aa23f57bdc15004434fa766
-rw-r--r--BUILD.gn3
-rw-r--r--src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java3
-rw-r--r--src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java17
-rw-r--r--src/org/chromium/support_lib_boundary/util/Features.java9
4 files changed, 31 insertions, 1 deletions
diff --git a/BUILD.gn b/BUILD.gn
index c43edc3..cc7e835 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -16,6 +16,7 @@ android_library("boundary_interface_java") {
"src/org/chromium/support_lib_boundary/StaticsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/TracingControllerBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/VisualStateCallbackBoundaryInterface.java",
+ "src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageCallbackBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessagePortBoundaryInterface.java",
@@ -26,7 +27,7 @@ android_library("boundary_interface_java") {
"src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewProviderFactoryBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewRendererBoundaryInterface.java",
- "src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java",
+ "src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java",
"src/org/chromium/support_lib_boundary/util/Features.java",
]
diff --git a/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java b/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java
index 9f8609c..c896d89 100644
--- a/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java
+++ b/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java
@@ -20,4 +20,7 @@ public interface WebViewProviderBoundaryInterface {
WebViewClient getWebViewClient();
WebChromeClient getWebChromeClient();
/* WebViewRenderer */ InvocationHandler getWebViewRenderer();
+ /* WebViewRendererClient */ InvocationHandler getWebViewRendererClient();
+ void setWebViewRendererClient(
+ /* WebViewRendererClient */ InvocationHandler webViewRendererClient);
}
diff --git a/src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java b/src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java
new file mode 100644
index 0000000..043ca66
--- /dev/null
+++ b/src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java
@@ -0,0 +1,17 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.support_lib_boundary;
+
+import android.webkit.WebView;
+
+import java.lang.reflect.InvocationHandler;
+
+/**
+ * Boundary interface for WebViewRendererClient.
+ */
+public interface WebViewRendererClientBoundaryInterface extends FeatureFlagHolderBoundaryInterface {
+ void onRendererUnresponsive(WebView view, /* WebViewRenderer */ InvocationHandler renderer);
+ void onRendererResponsive(WebView view, /* WebViewRenderer */ InvocationHandler renderer);
+}
diff --git a/src/org/chromium/support_lib_boundary/util/Features.java b/src/org/chromium/support_lib_boundary/util/Features.java
index b382c0b..287bcc0 100644
--- a/src/org/chromium/support_lib_boundary/util/Features.java
+++ b/src/org/chromium/support_lib_boundary/util/Features.java
@@ -143,4 +143,13 @@ public class Features {
// TracingController.start
// TracingController.stop
public static final String TRACING_CONTROLLER_BASIC_USAGE = "TRACING_CONTROLLER_BASIC_USAGE";
+
+ // Renderer client set/getter and callbacks:
+ //
+ // WebView.getWebViewRendererClient
+ // WebView.setWebViewRendererClient
+ // WebViewRendererClient.onRendererUnresponsive()
+ // WebViewRendererClient.onRendererResponsive()
+ public static final String WEB_VIEW_RENDERER_CLIENT_BASIC_USAGE =
+ "WEB_VIEW_RENDERER_CLIENT_BASIC_USAGE";
}