summaryrefslogtreecommitdiff
path: root/common/framework/com/android/net/module/util/PermissionUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'common/framework/com/android/net/module/util/PermissionUtils.java')
-rw-r--r--common/framework/com/android/net/module/util/PermissionUtils.java186
1 files changed, 0 insertions, 186 deletions
diff --git a/common/framework/com/android/net/module/util/PermissionUtils.java b/common/framework/com/android/net/module/util/PermissionUtils.java
deleted file mode 100644
index 8315b8f6..00000000
--- a/common/framework/com/android/net/module/util/PermissionUtils.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.net.module.util;
-
-import static android.Manifest.permission.ACCESS_NETWORK_STATE;
-import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
-import static android.Manifest.permission.NETWORK_STACK;
-import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.os.Binder;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Collection of permission utilities.
- * @hide
- */
-public final class PermissionUtils {
- /**
- * Return true if the context has one of given permission.
- */
- public static boolean checkAnyPermissionOf(@NonNull Context context,
- @NonNull String... permissions) {
- for (String permission : permissions) {
- if (context.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return true if the context has one of give permission that is allowed
- * for a particular process and user ID running in the system.
- */
- public static boolean checkAnyPermissionOf(@NonNull Context context,
- int pid, int uid, @NonNull String... permissions) {
- for (String permission : permissions) {
- if (context.checkPermission(permission, pid, uid) == PERMISSION_GRANTED) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Enforce permission check on the context that should have one of given permission.
- */
- public static void enforceAnyPermissionOf(@NonNull Context context,
- @NonNull String... permissions) {
- if (!checkAnyPermissionOf(context, permissions)) {
- throw new SecurityException("Requires one of the following permissions: "
- + String.join(", ", permissions) + ".");
- }
- }
-
- /**
- * If the NetworkStack, MAINLINE_NETWORK_STACK are not allowed for a particular process, throw a
- * {@link SecurityException}.
- *
- * @param context {@link android.content.Context} for the process.
- */
- public static void enforceNetworkStackPermission(final @NonNull Context context) {
- enforceNetworkStackPermissionOr(context);
- }
-
- /**
- * If the NetworkStack, MAINLINE_NETWORK_STACK or other specified permissions are not allowed
- * for a particular process, throw a {@link SecurityException}.
- *
- * @param context {@link android.content.Context} for the process.
- * @param otherPermissions The set of permissions that could be the candidate permissions , or
- * empty string if none of other permissions needed.
- */
- public static void enforceNetworkStackPermissionOr(final @NonNull Context context,
- final @NonNull String... otherPermissions) {
- ArrayList<String> permissions = new ArrayList<String>(Arrays.asList(otherPermissions));
- permissions.add(NETWORK_STACK);
- permissions.add(PERMISSION_MAINLINE_NETWORK_STACK);
- enforceAnyPermissionOf(context, permissions.toArray(new String[0]));
- }
-
- /**
- * If the CONNECTIVITY_USE_RESTRICTED_NETWORKS is not allowed for a particular process, throw a
- * {@link SecurityException}.
- *
- * @param context {@link android.content.Context} for the process.
- * @param message A message to include in the exception if it is thrown.
- */
- public static void enforceRestrictedNetworkPermission(
- final @NonNull Context context, final @Nullable String message) {
- context.enforceCallingOrSelfPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, message);
- }
-
- /**
- * If the ACCESS_NETWORK_STATE is not allowed for a particular process, throw a
- * {@link SecurityException}.
- *
- * @param context {@link android.content.Context} for the process.
- * @param message A message to include in the exception if it is thrown.
- */
- public static void enforceAccessNetworkStatePermission(
- final @NonNull Context context, final @Nullable String message) {
- context.enforceCallingOrSelfPermission(ACCESS_NETWORK_STATE, message);
- }
-
- /**
- * Return true if the context has DUMP permission.
- */
- public static boolean checkDumpPermission(Context context, String tag, PrintWriter pw) {
- if (context.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump " + tag + " from from pid="
- + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()
- + " due to missing android.permission.DUMP permission");
- return false;
- } else {
- return true;
- }
- }
-
- /**
- * Enforce that a given feature is available and if not, throw an
- * {@link UnsupportedOperationException}.
- *
- * @param context {@link android.content.Context} for the process.
- * @param feature the feature name to enforce.
- * @param errorMessage an optional error message to include.
- */
- public static void enforceSystemFeature(final @NonNull Context context,
- final @NonNull String feature, final @Nullable String errorMessage) {
- final boolean hasSystemFeature =
- context.getPackageManager().hasSystemFeature(feature);
- if (!hasSystemFeature) {
- if (null == errorMessage) {
- throw new UnsupportedOperationException();
- }
- throw new UnsupportedOperationException(errorMessage);
- }
- }
-
- /**
- * Get the list of granted permissions for a package info.
- *
- * PackageInfo contains the list of requested permissions, and their state (whether they
- * were granted or not, in particular) as a parallel array. Most users care only about
- * granted permissions. This method returns the list of them.
- *
- * @param packageInfo the package info for the relevant uid.
- * @return the list of granted permissions.
- */
- public static List<String> getGrantedPermissions(final @NonNull PackageInfo packageInfo) {
- if (null == packageInfo.requestedPermissions) return Collections.emptyList();
- final ArrayList<String> result = new ArrayList<>(packageInfo.requestedPermissions.length);
- for (int i = 0; i < packageInfo.requestedPermissions.length; ++i) {
- if (0 != (REQUESTED_PERMISSION_GRANTED & packageInfo.requestedPermissionsFlags[i])) {
- result.add(packageInfo.requestedPermissions[i]);
- }
- }
- return result;
- }
-}