diff options
author | Tobias Sargeant <tobiasjs@google.com> | 2018-12-12 00:15:07 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2018-12-12 00:15:07 +0000 |
commit | 4bdb920ccb69a70dbcad3d667e97c29e6246a23b (patch) | |
tree | 6a5fadf3b74e15bf61ba7ecc84c077d0e9d9b040 | |
parent | 93092e8c0a0843d86c5a1c1bb2ccbb29309c5f5c (diff) | |
download | webview_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
4 files changed, 31 insertions, 1 deletions
@@ -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"; } |