blob: 1fcf9adf8e5e1aefb6d99c8d5148c8f9d1075329 [file] [log] [blame]
// 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.base.compat;
import android.annotation.TargetApi;
import android.app.Activity;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Process;
import android.view.ActionMode;
import android.view.ViewConfiguration;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.chromium.base.annotations.DoNotInline;
/**
* Utility class to use new APIs that were added in M (API level 23). These need to exist in a
* separate class so that Android framework can successfully verify classes without
* encountering the new APIs.
*/
@DoNotInline
@TargetApi(Build.VERSION_CODES.M)
public final class ApiHelperForM {
private ApiHelperForM() {}
/**
* See {@link WebViewClient#onPageCommitVisible(WebView, String)}, which was added in M.
*/
public static void onPageCommitVisible(
WebViewClient webViewClient, WebView webView, String url) {
webViewClient.onPageCommitVisible(webView, url);
}
/**
* See {@link Process#is64Bit()}.
*/
public static boolean isProcess64Bit() {
return Process.is64Bit();
}
/** See {@link ConnectivityManager#getBoundNetworkForProcess() } */
public static Network getBoundNetworkForProcess(ConnectivityManager connectivityManager) {
return connectivityManager.getBoundNetworkForProcess();
}
/** See {@link Network#getNetworkHandle() } */
public static long getNetworkHandle(Network network) {
return network.getNetworkHandle();
}
/** See @{link ConnectivityManager#getActiveNetwork() } */
public static Network getActiveNetwork(ConnectivityManager connectivityManager) {
return connectivityManager.getActiveNetwork();
}
/** See @{link ConnectivityManager#getNetworkInfo(Network) } */
public static NetworkInfo getNetworkInfo(
ConnectivityManager connectivityManager, Network network) {
return connectivityManager.getNetworkInfo(network);
}
/** See {@link Activity#requestPermissions(String[], int)}. */
public static void requestActivityPermissions(
Activity activity, String[] permissions, int requestCode) {
activity.requestPermissions(permissions, requestCode);
}
/** See {@link Activity#shouldShowRequestPermissionRationale(String)}. */
public static boolean shouldShowRequestPermissionRationale(
Activity activity, String permission) {
return activity.shouldShowRequestPermissionRationale(permission);
}
/** See {@link PackageManager#isPermissionRevokedByPolicy(String, String)}. */
public static boolean isPermissionRevokedByPolicy(Activity activity, String permission) {
return activity.getPackageManager().isPermissionRevokedByPolicy(
permission, activity.getPackageName());
}
/*
* See {@link ActionMode#invalidateContentRect()}.
* @param actionMode
*/
public static void invalidateContentRectOnActionMode(ActionMode actionMode) {
actionMode.invalidateContentRect();
}
public static void onWindowFocusChangedOnActionMode(ActionMode actionMode, boolean gainFocus) {
actionMode.onWindowFocusChanged(gainFocus);
}
public static int getActionModeType(ActionMode actionMode) {
return actionMode.getType();
}
public static long getDefaultActionModeHideDuration() {
return ViewConfiguration.getDefaultActionModeHideDuration();
}
public static void hideActionMode(ActionMode actionMode, long duration) {
actionMode.hide(duration);
}
}