Commit dfa36b75 authored by James Wallace-Lee's avatar James Wallace-Lee Committed by Commit Bot

Avoid class verification for RenderProcessGoneDetail in WebViewContentsClientAdapter

This adds the Utility class ApiHelperForO. It moves references to
RenderProcessGoneDetail, which was added in O, into a separate class. On
pre-O devices, this reduces log spam caused by a NoClassDefFoundError.
It also improves startup time.

Bug: 791099, 838702
Test: adb logcat | grep 'Failed resolution of'
Test: run_webview_instrumentation_test_apk -f org.chromium.android_webview.test.AwContentsClientOnRenderProcessGoneTest#*
Change-Id: Iee47d5d5553b6eb339123fbea238dcbf9969de49
Reviewed-on: https://chromium-review.googlesource.com/1089477
Commit-Queue: James Wallace-Lee <jamwalla@chromium.org>
Reviewed-by: default avatarNate Fischer <ntfschr@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565451}
parent 6f29d60a
......@@ -33,6 +33,7 @@ android_library("glue") {
alternative_android_sdk_ijar = "$_ijar_dir/$_ijar"
alternative_android_sdk_jar = webview_public_framework_jar
java_files = [
"java/src/com/android/webview/chromium/ApiHelperForO.java",
"java/src/com/android/webview/chromium/ApiHelperForOMR1.java",
"java/src/com/android/webview/chromium/SharedStatics.java",
"java/src/com/android/webview/chromium/CallbackConverter.java",
......
// 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 com.android.webview.chromium;
import android.annotation.TargetApi;
import android.os.Build;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.chromium.android_webview.AwRenderProcessGoneDetail;
/**
* Utility class to use new APIs that were added in O (API level 26). These need to exist in a
* separate class so that Android framework can successfully verify WebView classes without
* encountering the new APIs.
*/
@TargetApi(Build.VERSION_CODES.O)
public class ApiHelperForO {
private ApiHelperForO() {}
/**
* See {@link WebViewClient#onRenderProcessGone(WebView, RenderProcessGoneDetail)}, which was
* added in O.
*/
public static boolean onRenderProcessGone(
WebViewClient webViewClient, WebView webView, AwRenderProcessGoneDetail detail) {
return webViewClient.onRenderProcessGone(webView, new RenderProcessGoneDetail() {
@Override
public boolean didCrash() {
return detail.didCrash();
}
@Override
public int rendererPriorityAtExit() {
return detail.rendererPriority();
}
});
}
}
\ No newline at end of file
......@@ -29,7 +29,6 @@ import android.webkit.JsDialogHelper;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.PermissionRequest;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.SslErrorHandler;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
......@@ -1235,17 +1234,7 @@ class WebViewContentsClientAdapter extends AwContentsClient {
try {
TraceEvent.begin("WebViewContentsClientAdapter.onRenderProcessGone");
return mWebViewClient.onRenderProcessGone(mWebView, new RenderProcessGoneDetail() {
@Override
public boolean didCrash() {
return detail.didCrash();
}
@Override
public int rendererPriorityAtExit() {
return detail.rendererPriority();
}
});
return ApiHelperForO.onRenderProcessGone(mWebViewClient, mWebView, detail);
} finally {
TraceEvent.end("WebViewContentsClientAdapter.onRenderProcessGone");
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment