[webview] rename unresponsive renderer APIs
Followup from API council review: * Rename Renderer to RenderProcess for consistency with existing APIs. * Make WebViewRenderProcess constructor public. * Document 5 second minimum interval between successive callbacks. Bug: 124767616 Bug: 123629980 Test: atest 'CtsWebkitTestCases' Change-Id: I4416a97e8bb449c4a14a3617ef72a49c92aa3a83
This commit is contained in:
committed by
Toby Sargeant
parent
707b4655d1
commit
39b68efcc3
@@ -54760,8 +54760,8 @@ package android.webkit {
|
||||
method @NonNull public static ClassLoader getWebViewClassLoader();
|
||||
method public android.webkit.WebViewClient getWebViewClient();
|
||||
method @NonNull public android.os.Looper getWebViewLooper();
|
||||
method @Nullable public android.webkit.WebViewRenderer getWebViewRenderer();
|
||||
method @Nullable public android.webkit.WebViewRendererClient getWebViewRendererClient();
|
||||
method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
|
||||
method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
|
||||
method public void goBack();
|
||||
method public void goBackOrForward(int);
|
||||
method public void goForward();
|
||||
@@ -54811,8 +54811,8 @@ package android.webkit {
|
||||
method public void setWebChromeClient(android.webkit.WebChromeClient);
|
||||
method public static void setWebContentsDebuggingEnabled(boolean);
|
||||
method public void setWebViewClient(android.webkit.WebViewClient);
|
||||
method public void setWebViewRendererClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRendererClient);
|
||||
method public void setWebViewRendererClient(@Nullable android.webkit.WebViewRendererClient);
|
||||
method public void setWebViewRenderProcessClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRenderProcessClient);
|
||||
method public void setWebViewRenderProcessClient(@Nullable android.webkit.WebViewRenderProcessClient);
|
||||
method @Deprecated public boolean shouldDelayChildPressedState();
|
||||
method @Deprecated public boolean showFindDialog(@Nullable String, boolean);
|
||||
method public static void startSafeBrowsing(@NonNull android.content.Context, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
|
||||
@@ -54928,14 +54928,15 @@ package android.webkit {
|
||||
method @Deprecated public android.webkit.WebView getWebView();
|
||||
}
|
||||
|
||||
public abstract class WebViewRenderer {
|
||||
public abstract class WebViewRenderProcess {
|
||||
ctor public WebViewRenderProcess();
|
||||
method public abstract boolean terminate();
|
||||
}
|
||||
|
||||
public abstract class WebViewRendererClient {
|
||||
ctor public WebViewRendererClient();
|
||||
method public abstract void onRendererResponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderer);
|
||||
method public abstract void onRendererUnresponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderer);
|
||||
public abstract class WebViewRenderProcessClient {
|
||||
ctor public WebViewRenderProcessClient();
|
||||
method public abstract void onRenderProcessResponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
|
||||
method public abstract void onRenderProcessUnresponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9748,8 +9748,8 @@ package android.webkit {
|
||||
method public int getVisibleTitleHeight();
|
||||
method public android.webkit.WebChromeClient getWebChromeClient();
|
||||
method public android.webkit.WebViewClient getWebViewClient();
|
||||
method public android.webkit.WebViewRenderer getWebViewRenderer();
|
||||
method public android.webkit.WebViewRendererClient getWebViewRendererClient();
|
||||
method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
|
||||
method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
|
||||
method public android.view.View getZoomControls();
|
||||
method public void goBack();
|
||||
method public void goBackOrForward(int);
|
||||
@@ -9799,7 +9799,7 @@ package android.webkit {
|
||||
method public void setVerticalScrollbarOverlay(boolean);
|
||||
method public void setWebChromeClient(android.webkit.WebChromeClient);
|
||||
method public void setWebViewClient(android.webkit.WebViewClient);
|
||||
method public void setWebViewRendererClient(@Nullable java.util.concurrent.Executor, @Nullable android.webkit.WebViewRendererClient);
|
||||
method public void setWebViewRenderProcessClient(@Nullable java.util.concurrent.Executor, @Nullable android.webkit.WebViewRenderProcessClient);
|
||||
method public boolean showFindDialog(String, boolean);
|
||||
method public void stopLoading();
|
||||
method public boolean zoomBy(float);
|
||||
@@ -9881,10 +9881,6 @@ package android.webkit {
|
||||
field public final android.content.pm.Signature[] signatures;
|
||||
}
|
||||
|
||||
public abstract class WebViewRenderer {
|
||||
ctor public WebViewRenderer();
|
||||
}
|
||||
|
||||
public final class WebViewUpdateService {
|
||||
method public static android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
|
||||
method public static String getCurrentWebViewPackageName();
|
||||
|
||||
@@ -1704,7 +1704,7 @@ public class WebView extends AbsoluteLayout
|
||||
|
||||
|
||||
/**
|
||||
* Gets the WebView renderer associated with this WebView.
|
||||
* Gets a handle to the WebView renderer process associated with this WebView.
|
||||
*
|
||||
* <p>In {@link android.os.Build.VERSION_CODES#O} and above, WebView may
|
||||
* run in "multiprocess" mode. In multiprocess mode, rendering of web
|
||||
@@ -1717,67 +1717,70 @@ public class WebView extends AbsoluteLayout
|
||||
* handle to the renderer process associated with the WebView, which can
|
||||
* be used to control the renderer process.
|
||||
*
|
||||
* @return the {@link WebViewRenderer} renderer handle associated
|
||||
* @return the {@link WebViewRenderProcess} renderer handle associated
|
||||
* with this {@link WebView}, or {@code null} if
|
||||
* WebView is not runing in multiprocess mode.
|
||||
*/
|
||||
@Nullable
|
||||
public WebViewRenderer getWebViewRenderer() {
|
||||
public WebViewRenderProcess getWebViewRenderProcess() {
|
||||
checkThread();
|
||||
return mProvider.getWebViewRenderer();
|
||||
return mProvider.getWebViewRenderProcess();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the renderer client object associated with this WebView.
|
||||
*
|
||||
* <p>The renderer client encapsulates callbacks relevant to WebView renderer
|
||||
* state. See {@link WebViewRendererClient} for details.
|
||||
* state. See {@link WebViewRenderProcessClient} for details.
|
||||
*
|
||||
* <p>Although many WebView instances may share a single underlying
|
||||
* renderer, and renderers may live either in the application
|
||||
* process, or in a sandboxed process that is isolated from the
|
||||
* application process, instances of {@link WebViewRendererClient}
|
||||
* application process, instances of {@link WebViewRenderProcessClient}
|
||||
* are set per-WebView. Callbacks represent renderer events from
|
||||
* the perspective of this WebView, and may or may not be correlated
|
||||
* with renderer events affecting other WebViews.
|
||||
*
|
||||
* @param executor the Executor on which {@link WebViewRendererClient} callbacks will execute.
|
||||
* @param webViewRendererClient the {@link WebViewRendererClient} object.
|
||||
* @param executor the Executor on which {@link WebViewRenderProcessClient}
|
||||
* callbacks will execute.
|
||||
* @param webViewRenderProcessClient the {@link WebViewRenderProcessClient}
|
||||
* object.
|
||||
*/
|
||||
public void setWebViewRendererClient(
|
||||
public void setWebViewRenderProcessClient(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull WebViewRendererClient webViewRendererClient) {
|
||||
@NonNull WebViewRenderProcessClient webViewRenderProcessClient) {
|
||||
checkThread();
|
||||
mProvider.setWebViewRendererClient(executor, webViewRendererClient);
|
||||
mProvider.setWebViewRenderProcessClient(
|
||||
executor, webViewRenderProcessClient);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the renderer client object associated with this WebView.
|
||||
*
|
||||
* See {@link #setWebViewRendererClient(Executor,WebViewRendererClient)} for details.
|
||||
* See {@link #setWebViewRenderProcessClient(Executor,WebViewRenderProcessClient)} for details.
|
||||
*
|
||||
* <p> {@link WebViewRendererClient} callbacks will run on the thread that this WebView was
|
||||
* <p> {@link WebViewRenderProcessClient} callbacks will run on the thread that this WebView was
|
||||
* initialized on.
|
||||
*
|
||||
* @param webViewRendererClient the {@link WebViewRendererClient} object.
|
||||
* @param webViewRenderProcessClient the {@link WebViewRenderProcessClient} object.
|
||||
*/
|
||||
public void setWebViewRendererClient(
|
||||
@Nullable WebViewRendererClient webViewRendererClient) {
|
||||
public void setWebViewRenderProcessClient(
|
||||
@Nullable WebViewRenderProcessClient webViewRenderProcessClient) {
|
||||
checkThread();
|
||||
mProvider.setWebViewRendererClient(null, webViewRendererClient);
|
||||
mProvider.setWebViewRenderProcessClient(null, webViewRenderProcessClient);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the renderer client object associated with this WebView.
|
||||
*
|
||||
* @return the {@link WebViewRendererClient} object associated with this WebView, if one has
|
||||
* been set via {@link #setWebViewRendererClient(WebViewRendererClient)} or {@code null}
|
||||
* otherwise.
|
||||
* @return the {@link WebViewRenderProcessClient} object associated with this WebView, if one
|
||||
* has been set via {@link #setWebViewRenderProcessClient(WebViewRenderProcessClient)}
|
||||
* or {@code null} otherwise.
|
||||
*/
|
||||
@Nullable
|
||||
public WebViewRendererClient getWebViewRendererClient() {
|
||||
public WebViewRenderProcessClient getWebViewRenderProcessClient() {
|
||||
checkThread();
|
||||
return mProvider.getWebViewRendererClient();
|
||||
return mProvider.getWebViewRenderProcessClient();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -238,13 +238,15 @@ public interface WebViewProvider {
|
||||
|
||||
public WebViewClient getWebViewClient();
|
||||
|
||||
public WebViewRenderer getWebViewRenderer();
|
||||
@Nullable
|
||||
public WebViewRenderProcess getWebViewRenderProcess();
|
||||
|
||||
public void setWebViewRendererClient(
|
||||
public void setWebViewRenderProcessClient(
|
||||
@Nullable Executor executor,
|
||||
@Nullable WebViewRendererClient client);
|
||||
@Nullable WebViewRenderProcessClient client);
|
||||
|
||||
public WebViewRendererClient getWebViewRendererClient();
|
||||
@Nullable
|
||||
public WebViewRenderProcessClient getWebViewRenderProcessClient();
|
||||
|
||||
public void setDownloadListener(DownloadListener listener);
|
||||
|
||||
|
||||
@@ -16,12 +16,10 @@
|
||||
|
||||
package android.webkit;
|
||||
|
||||
import android.annotation.SystemApi;
|
||||
|
||||
/**
|
||||
* WebViewRenderer provides an opaque handle to a {@link WebView} renderer.
|
||||
* WebViewRenderProcess provides an opaque handle to a {@link WebView} renderer.
|
||||
*/
|
||||
public abstract class WebViewRenderer {
|
||||
public abstract class WebViewRenderProcess {
|
||||
/**
|
||||
* Cause this renderer to terminate.
|
||||
*
|
||||
@@ -38,11 +36,6 @@ public abstract class WebViewRenderer {
|
||||
*/
|
||||
public abstract boolean terminate();
|
||||
|
||||
/**
|
||||
* This class cannot be created by applications.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public WebViewRenderer() {
|
||||
public WebViewRenderProcess() {
|
||||
}
|
||||
}
|
||||
@@ -22,14 +22,14 @@ import android.annotation.Nullable;
|
||||
/**
|
||||
* Used to receive callbacks on {@link WebView} renderer events.
|
||||
*
|
||||
* WebViewRendererClient instances may be set or retrieved via {@link
|
||||
* WebView#setWebViewRendererClient(WebViewRendererClient)} and {@link
|
||||
* WebView#getWebViewRendererClient()}.
|
||||
* WebViewRenderProcessClient instances may be set or retrieved via {@link
|
||||
* WebView#setWebViewRenderProcessClient(WebViewRenderProcessClient)} and {@link
|
||||
* WebView#getWebViewRenderProcessClient()}.
|
||||
*
|
||||
* Instances may be attached to multiple WebViews, and thus a single renderer event may cause
|
||||
* a callback to be called multiple times with different WebView parameters.
|
||||
*/
|
||||
public abstract class WebViewRendererClient {
|
||||
public abstract class WebViewRenderProcessClient {
|
||||
/**
|
||||
* Called when the renderer currently associated with {@code view} becomes unresponsive as a
|
||||
* result of a long running blocking task such as the execution of JavaScript.
|
||||
@@ -40,8 +40,11 @@ public abstract class WebViewRendererClient {
|
||||
*
|
||||
* <p>This callback will continue to be called at regular intervals as long as the renderer
|
||||
* remains unresponsive. If the renderer becomes responsive again, {@link
|
||||
* WebViewRendererClient#onRendererResponsive} will be called once, and this method will not
|
||||
* subsequently be called unless another period of unresponsiveness is detected.
|
||||
* WebViewRenderProcessClient#onRenderProcessResponsive} will be called once, and this method
|
||||
* will not subsequently be called unless another period of unresponsiveness is detected.
|
||||
*
|
||||
* <p>The minimum interval between successive calls to {@code onRenderProcessUnresponsive} is 5
|
||||
* seconds.
|
||||
*
|
||||
* <p>No action is taken by WebView as a result of this method call. Applications may
|
||||
* choose to terminate the associated renderer via the object that is passed to this callback,
|
||||
@@ -50,28 +53,28 @@ public abstract class WebViewRendererClient {
|
||||
* with the same renderer. Failure to do so will result in application termination.
|
||||
*
|
||||
* @param view The {@link WebView} for which unresponsiveness was detected.
|
||||
* @param renderer The {@link WebViewRenderer} that has become unresponsive,
|
||||
* @param renderer The {@link WebViewRenderProcess} that has become unresponsive,
|
||||
* or {@code null} if WebView is running in single process mode.
|
||||
*/
|
||||
public abstract void onRendererUnresponsive(
|
||||
@NonNull WebView view, @Nullable WebViewRenderer renderer);
|
||||
public abstract void onRenderProcessUnresponsive(
|
||||
@NonNull WebView view, @Nullable WebViewRenderProcess renderer);
|
||||
|
||||
/**
|
||||
* Called once when an unresponsive renderer currently associated with {@code view} becomes
|
||||
* responsive.
|
||||
*
|
||||
* <p>After a WebView renderer becomes unresponsive, which is notified to the application by
|
||||
* {@link WebViewRendererClient#onRendererUnresponsive}, it is possible for the blocking
|
||||
* renderer task to complete, returning the renderer to a responsive state. In that case,
|
||||
* this method is called once to indicate responsiveness.
|
||||
* {@link WebViewRenderProcessClient#onRenderProcessUnresponsive}, it is possible for the
|
||||
* blocking renderer task to complete, returning the renderer to a responsive state. In that
|
||||
* case, this method is called once to indicate responsiveness.
|
||||
*
|
||||
* <p>No action is taken by WebView as a result of this method call.
|
||||
*
|
||||
* @param view The {@link WebView} for which responsiveness was detected.
|
||||
*
|
||||
* @param renderer The {@link WebViewRenderer} that has become responsive, or {@code null} if
|
||||
* WebView is running in single process mode.
|
||||
* @param renderer The {@link WebViewRenderProcess} that has become responsive, or {@code null}
|
||||
* if WebView is running in single process mode.
|
||||
*/
|
||||
public abstract void onRendererResponsive(
|
||||
@NonNull WebView view, @Nullable WebViewRenderer renderer);
|
||||
public abstract void onRenderProcessResponsive(
|
||||
@NonNull WebView view, @Nullable WebViewRenderProcess renderer);
|
||||
}
|
||||
Reference in New Issue
Block a user