1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.server.pm.permission; 18 19 import android.annotation.NonNull; 20 import android.annotation.Nullable; 21 import android.util.ArrayMap; 22 23 /** 24 * Data class for OEM and privileged app permission allowlist state. 25 */ 26 public final class PermissionAllowlist { 27 @NonNull 28 private final ArrayMap<String, ArrayMap<String, Boolean>> mOemAppAllowlist = new ArrayMap<>(); 29 @NonNull 30 private final ArrayMap<String, ArrayMap<String, Boolean>> mPrivilegedAppAllowlist = 31 new ArrayMap<>(); 32 @NonNull 33 private final ArrayMap<String, ArrayMap<String, Boolean>> mVendorPrivilegedAppAllowlist = 34 new ArrayMap<>(); 35 @NonNull 36 private final ArrayMap<String, ArrayMap<String, Boolean>> mProductPrivilegedAppAllowlist = 37 new ArrayMap<>(); 38 @NonNull 39 private final ArrayMap<String, ArrayMap<String, Boolean>> mSystemExtPrivilegedAppAllowlist = 40 new ArrayMap<>(); 41 @NonNull 42 private final ArrayMap<String, ArrayMap<String, ArrayMap<String, Boolean>>> 43 mApexPrivilegedAppAllowlists = new ArrayMap<>(); 44 45 @NonNull getOemAppAllowlist()46 public ArrayMap<String, ArrayMap<String, Boolean>> getOemAppAllowlist() { 47 return mOemAppAllowlist; 48 } 49 50 @NonNull getPrivilegedAppAllowlist()51 public ArrayMap<String, ArrayMap<String, Boolean>> getPrivilegedAppAllowlist() { 52 return mPrivilegedAppAllowlist; 53 } 54 55 @NonNull getVendorPrivilegedAppAllowlist()56 public ArrayMap<String, ArrayMap<String, Boolean>> getVendorPrivilegedAppAllowlist() { 57 return mVendorPrivilegedAppAllowlist; 58 } 59 60 @NonNull getProductPrivilegedAppAllowlist()61 public ArrayMap<String, ArrayMap<String, Boolean>> getProductPrivilegedAppAllowlist() { 62 return mProductPrivilegedAppAllowlist; 63 } 64 65 @NonNull getSystemExtPrivilegedAppAllowlist()66 public ArrayMap<String, ArrayMap<String, Boolean>> getSystemExtPrivilegedAppAllowlist() { 67 return mSystemExtPrivilegedAppAllowlist; 68 } 69 70 @NonNull 71 public ArrayMap<String, ArrayMap<String, ArrayMap<String, Boolean>>> getApexPrivilegedAppAllowlists()72 getApexPrivilegedAppAllowlists() { 73 return mApexPrivilegedAppAllowlists; 74 } 75 76 @Nullable getOemAppAllowlistState(@onNull String packageName, @NonNull String permissionName)77 public Boolean getOemAppAllowlistState(@NonNull String packageName, 78 @NonNull String permissionName) { 79 ArrayMap<String, Boolean> permissions = mOemAppAllowlist.get(packageName); 80 if (permissions == null) { 81 return null; 82 } 83 return permissions.get(permissionName); 84 } 85 86 @Nullable getPrivilegedAppAllowlistState(@onNull String packageName, @NonNull String permissionName)87 public Boolean getPrivilegedAppAllowlistState(@NonNull String packageName, 88 @NonNull String permissionName) { 89 ArrayMap<String, Boolean> permissions = mPrivilegedAppAllowlist.get(packageName); 90 if (permissions == null) { 91 return null; 92 } 93 return permissions.get(permissionName); 94 } 95 96 @Nullable getVendorPrivilegedAppAllowlistState(@onNull String packageName, @NonNull String permissionName)97 public Boolean getVendorPrivilegedAppAllowlistState(@NonNull String packageName, 98 @NonNull String permissionName) { 99 ArrayMap<String, Boolean> permissions = mVendorPrivilegedAppAllowlist.get(packageName); 100 if (permissions == null) { 101 return null; 102 } 103 return permissions.get(permissionName); 104 } 105 106 @Nullable getProductPrivilegedAppAllowlistState(@onNull String packageName, @NonNull String permissionName)107 public Boolean getProductPrivilegedAppAllowlistState(@NonNull String packageName, 108 @NonNull String permissionName) { 109 ArrayMap<String, Boolean> permissions = mProductPrivilegedAppAllowlist.get(packageName); 110 if (permissions == null) { 111 return null; 112 } 113 return permissions.get(permissionName); 114 } 115 116 @Nullable getSystemExtPrivilegedAppAllowlistState(@onNull String packageName, @NonNull String permissionName)117 public Boolean getSystemExtPrivilegedAppAllowlistState(@NonNull String packageName, 118 @NonNull String permissionName) { 119 ArrayMap<String, Boolean> permissions = mSystemExtPrivilegedAppAllowlist.get(packageName); 120 if (permissions == null) { 121 return null; 122 } 123 return permissions.get(permissionName); 124 } 125 126 @Nullable getApexPrivilegedAppAllowlistState(@onNull String moduleName, @NonNull String packageName, @NonNull String permissionName)127 public Boolean getApexPrivilegedAppAllowlistState(@NonNull String moduleName, 128 @NonNull String packageName, @NonNull String permissionName) { 129 ArrayMap<String, ArrayMap<String, Boolean>> allowlist = 130 mApexPrivilegedAppAllowlists.get(moduleName); 131 if (allowlist == null) { 132 return null; 133 } 134 ArrayMap<String, Boolean> permissions = allowlist.get(packageName); 135 if (permissions == null) { 136 return null; 137 } 138 return permissions.get(permissionName); 139 } 140 } 141