chromium/android_webview/glue/java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java

// Copyright 2018 The Chromium Authors
// 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.os.Build;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import androidx.annotation.RequiresApi;

import org.chromium.android_webview.AwContentsClient.AwWebResourceRequest;
import org.chromium.android_webview.safe_browsing.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 glue layer classes without
 * encountering the new APIs. Note that GlueApiHelper is only for APIs that cannot go to ApiHelper
 * in base/, for reasons such as using system APIs or instantiating an adapter class that is
 * specific to glue layer.
 */
@RequiresApi(Build.VERSION_CODES.O_MR1)
public final class GlueApiHelperForOMR1 {
    private GlueApiHelperForOMR1() {}

    /**
     * See {@link WebViewClient#onSafeBrowsingHit(WebView, WebResourceRequest, int,
     * SafeBrowsingResponse)}, which was added in OMR1.
     */
    public static void onSafeBrowsingHit(
            WebViewClient webViewClient,
            WebView webView,
            AwWebResourceRequest request,
            int threatType,
            Callback<AwSafeBrowsingResponse> callback) {
        webViewClient.onSafeBrowsingHit(
                webView,
                new WebResourceRequestAdapter(request),
                threatType,
                new SafeBrowsingResponseAdapter(callback));
    }
}