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

Avoid class verification for SafeBrowsingResponse in onSafeBrowsingHit

This adds the utility class WebViewCompatUtilsForOMR1. It moves references to
SafeBrowsingResponseAdapter, which was added in OMR1, into a separate class.
On pre-OMR1 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 cts -m CtsWebkitTestCases -t android.webkit.cts.WebViewClientTest#testOnSafeBrowsingHit
Change-Id: Icf52a70925be506f9b7c46ed592f5b64f43ab14c
Reviewed-on: https://chromium-review.googlesource.com/1081081Reviewed-by: default avatarNate Fischer <ntfschr@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Commit-Queue: James Wallace-Lee <jamwalla@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564706}
parent 78b149fe
......@@ -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/ApiHelperForOMR1.java",
"java/src/com/android/webview/chromium/SharedStatics.java",
"java/src/com/android/webview/chromium/CallbackConverter.java",
"java/src/com/android/webview/chromium/ContentSettingsAdapter.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.WebView;
import android.webkit.WebViewClient;
import org.chromium.android_webview.AwContentsClient;
import org.chromium.android_webview.AwSafeBrowsingResponse;
import org.chromium.base.Callback;
/**
* Utility class to use new APIs that were added in OMR1 (API level 27). 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_MR1)
public class ApiHelperForOMR1 {
private ApiHelperForOMR1() {}
/**
* See {@link WebViewClient#onSafeBrowsingHit(WebView, WebResourceRequest, int,
* SafeBrowsingResponse)}, which was added in OMR1.
*/
public static void onSafeBrowsingHit(WebViewClient webViewClient, WebView webView,
AwContentsClient.AwWebResourceRequest request, int threatType,
final Callback<AwSafeBrowsingResponse> callback) {
webViewClient.onSafeBrowsingHit(webView, new WebResourceRequestAdapter(request), threatType,
new SafeBrowsingResponseAdapter(callback));
}
}
......@@ -33,7 +33,6 @@ import android.webkit.RenderProcessGoneDetail;
import android.webkit.SslErrorHandler;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
......@@ -623,8 +622,8 @@ class WebViewContentsClientAdapter extends AwContentsClient {
mSupportLibClient.onSafeBrowsingHit(
mWebView, new WebResourceRequestAdapter(request), threatType, callback);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
mWebViewClient.onSafeBrowsingHit(mWebView, new WebResourceRequestAdapter(request),
threatType, new SafeBrowsingResponseAdapter(callback));
ApiHelperForOMR1.onSafeBrowsingHit(
mWebViewClient, mWebView, request, threatType, callback);
} else {
callback.onResult(new AwSafeBrowsingResponse(SafeBrowsingAction.SHOW_INTERSTITIAL,
/* reporting */ true));
......
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