Remove IPermissionManager usage inside PackageManagerService.
Because we are moving permission into mainline and AIDL can't be an API. Most usages are replaced with calling through PermissionManager instead. For checkPermission() and checkUidPermission(), they are not intended to be exposed as cross-process APIs because people should use Context.check*Permission() instead. So they are made in-process APIs. resetRuntimePermissions() is moved to IPackageManager because it is only used by PackageManagerShellCommand and is implemented by calling resetRuntimePermissions() in a loop. Bug: 158736025 Test: presubmit Change-Id: I8285abddbfb3c4011a8acbc2e2ebfc30715c6f9a
This commit is contained in:
@@ -48,10 +48,6 @@ interface IPermissionManager {
|
||||
|
||||
void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId);
|
||||
|
||||
int checkPermission(String permName, String pkgName, int userId);
|
||||
|
||||
int checkUidPermission(String permName, int uid);
|
||||
|
||||
void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
|
||||
|
||||
void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
|
||||
@@ -69,8 +65,6 @@ interface IPermissionManager {
|
||||
|
||||
void revokeRuntimePermission(String packageName, String permName, int userId, String reason);
|
||||
|
||||
void resetRuntimePermissions();
|
||||
|
||||
boolean shouldShowRequestPermissionRationale(String permName,
|
||||
String packageName, int userId);
|
||||
|
||||
|
||||
@@ -1218,7 +1218,7 @@ public final class PermissionManager {
|
||||
private static int checkPackageNamePermissionUncached(
|
||||
String permName, String pkgName, @UserIdInt int userId) {
|
||||
try {
|
||||
return ActivityThread.getPermissionManager().checkPermission(
|
||||
return ActivityThread.getPackageManager().checkPermission(
|
||||
permName, pkgName, userId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
|
||||
@@ -295,7 +295,7 @@ import android.os.storage.StorageManager;
|
||||
import android.os.storage.StorageManagerInternal;
|
||||
import android.os.storage.VolumeInfo;
|
||||
import android.os.storage.VolumeRecord;
|
||||
import android.permission.IPermissionManager;
|
||||
import android.permission.PermissionManager;
|
||||
import android.provider.ContactsContract;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.provider.Settings.Global;
|
||||
@@ -962,7 +962,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
private final Singleton<ArtManagerService> mArtManagerServiceProducer;
|
||||
private final Singleton<ApexManager> mApexManagerProducer;
|
||||
private final Singleton<ViewCompiler> mViewCompilerProducer;
|
||||
private final Singleton<IPermissionManager> mPermissionManagerProducer;
|
||||
private final Singleton<IncrementalManager> mIncrementalManagerProducer;
|
||||
private final Singleton<DefaultAppProvider> mDefaultAppProviderProducer;
|
||||
private final Singleton<DisplayMetrics> mDisplayMetricsProducer;
|
||||
@@ -994,7 +993,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
Producer<DexManager> dexManagerProducer,
|
||||
Producer<ArtManagerService> artManagerServiceProducer,
|
||||
Producer<ApexManager> apexManagerProducer,
|
||||
Producer<IPermissionManager> permissionManagerProducer,
|
||||
Producer<ViewCompiler> viewCompilerProducer,
|
||||
Producer<IncrementalManager> incrementalManagerProducer,
|
||||
Producer<DefaultAppProvider> defaultAppProviderProducer,
|
||||
@@ -1029,7 +1027,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
mDexManagerProducer = new Singleton<>(dexManagerProducer);
|
||||
mArtManagerServiceProducer = new Singleton<>(artManagerServiceProducer);
|
||||
mApexManagerProducer = new Singleton<>(apexManagerProducer);
|
||||
mPermissionManagerProducer = new Singleton<>(permissionManagerProducer);
|
||||
mViewCompilerProducer = new Singleton<>(viewCompilerProducer);
|
||||
mIncrementalManagerProducer = new Singleton<>(incrementalManagerProducer);
|
||||
mDefaultAppProviderProducer = new Singleton<>(defaultAppProviderProducer);
|
||||
@@ -1131,10 +1128,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
return mViewCompilerProducer.get(this, mPackageManager);
|
||||
}
|
||||
|
||||
public IPermissionManager getPermissionManagerService() {
|
||||
return mPermissionManagerProducer.get(this, mPackageManager);
|
||||
}
|
||||
|
||||
public Handler getBackgroundHandler() {
|
||||
return mBackgroundHandler;
|
||||
}
|
||||
@@ -1260,7 +1253,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
public OverlayConfig overlayConfig;
|
||||
public PackageDexOptimizer packageDexOptimizer;
|
||||
public PackageParser2.Callback packageParserCallback;
|
||||
public IPermissionManager permissionManagerService;
|
||||
public PendingPackageBroadcasts pendingPackageBroadcasts;
|
||||
public PackageManagerInternal pmInternal;
|
||||
public TestUtilityService testUtilityService;
|
||||
@@ -1381,8 +1373,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
|
||||
// Internal interface for permission manager
|
||||
private final PermissionManagerServiceInternal mPermissionManager;
|
||||
// Public interface for permission manager
|
||||
private final IPermissionManager mPermissionManagerService;
|
||||
|
||||
private final ComponentResolver mComponentResolver;
|
||||
// List of packages names to keep cached, even if they are uninstalled for all users
|
||||
@@ -2857,7 +2847,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
(i, pm) -> new ArtManagerService(i.getContext(), pm, i.getInstaller(),
|
||||
i.getInstallLock()),
|
||||
(i, pm) -> ApexManager.getInstance(),
|
||||
(i, pm) -> (IPermissionManager) ServiceManager.getService("permissionmgr"),
|
||||
(i, pm) -> new ViewCompiler(i.getInstallLock(), i.getInstaller()),
|
||||
(i, pm) -> (IncrementalManager)
|
||||
i.getContext().getSystemService(Context.INCREMENTAL_SERVICE),
|
||||
@@ -3080,7 +3069,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
mPackageDexOptimizer = testParams.packageDexOptimizer;
|
||||
mPackageParserCallback = testParams.packageParserCallback;
|
||||
mPendingBroadcasts = testParams.pendingPackageBroadcasts;
|
||||
mPermissionManagerService = testParams.permissionManagerService;
|
||||
mPmInternal = testParams.pmInternal;
|
||||
mTestUtilityService = testParams.testUtilityService;
|
||||
mProcessLoggingHandler = testParams.processLoggingHandler;
|
||||
@@ -3158,7 +3146,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
mComponentResolver = injector.getComponentResolver();
|
||||
mPermissionManager = injector.getPermissionManagerServiceInternal();
|
||||
mSettings = injector.getSettings();
|
||||
mPermissionManagerService = injector.getPermissionManagerService();
|
||||
mIncrementalManager = mInjector.getIncrementalManager();
|
||||
mDefaultAppProvider = mInjector.getDefaultAppProvider();
|
||||
mLegacyPermissionManager = mInjector.getLegacyPermissionManagerInternal();
|
||||
@@ -5176,12 +5163,10 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// NOTE: Can't remove due to unsupported app usage
|
||||
@Override
|
||||
public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mPermissionManagerService.getPermissionGroupInfo(groupName, flags);
|
||||
} catch (RemoteException ignore) { }
|
||||
return null;
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mContext.getSystemService(PermissionManager.class)
|
||||
.getPermissionGroupInfo(groupName, flags);
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
@@ -6213,23 +6198,13 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// NOTE: Can't remove due to unsupported app usage
|
||||
@Override
|
||||
public int checkPermission(String permName, String pkgName, int userId) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mPermissionManagerService.checkPermission(permName, pkgName, userId);
|
||||
} catch (RemoteException ignore) { }
|
||||
return PackageManager.PERMISSION_DENIED;
|
||||
return mPermissionManager.checkPermission(pkgName, permName, userId);
|
||||
}
|
||||
|
||||
// NOTE: Can't remove without a major refactor. Keep around for now.
|
||||
@Override
|
||||
public int checkUidPermission(String permName, int uid) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mPermissionManagerService.checkUidPermission(permName, uid);
|
||||
} catch (RemoteException ignore) { }
|
||||
return PackageManager.PERMISSION_DENIED;
|
||||
return mPermissionManager.checkUidPermission(uid, permName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -6248,43 +6223,34 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// NOTE: Can't remove due to unsupported app usage
|
||||
@Override
|
||||
public boolean addPermission(PermissionInfo info) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mPermissionManagerService.addPermission(info, false);
|
||||
} catch (RemoteException ignore) { }
|
||||
return false;
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mContext.getSystemService(PermissionManager.class).addPermission(info, false);
|
||||
}
|
||||
|
||||
// NOTE: Can't remove due to unsupported app usage
|
||||
@Override
|
||||
public boolean addPermissionAsync(PermissionInfo info) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mPermissionManagerService.addPermission(info, true);
|
||||
} catch (RemoteException ignore) { }
|
||||
return false;
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
return mContext.getSystemService(PermissionManager.class).addPermission(info, true);
|
||||
}
|
||||
|
||||
// NOTE: Can't remove due to unsupported app usage
|
||||
@Override
|
||||
public void removePermission(String permName) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
mPermissionManagerService.removePermission(permName);
|
||||
} catch (RemoteException ignore) { }
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
mContext.getSystemService(PermissionManager.class).removePermission(permName);
|
||||
}
|
||||
|
||||
// NOTE: Can't remove due to unsupported app usage
|
||||
@Override
|
||||
public void grantRuntimePermission(String packageName, String permName, final int userId) {
|
||||
try {
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
mPermissionManagerService.grantRuntimePermission(packageName, permName, userId);
|
||||
} catch (RemoteException ignore) { }
|
||||
// Because this is accessed via the package manager service AIDL,
|
||||
// go through the permission manager service AIDL
|
||||
mContext.getSystemService(PermissionManager.class)
|
||||
.grantRuntimePermission(packageName, permName, UserHandle.of(userId));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -22521,7 +22487,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
public void onShellCommand(FileDescriptor in, FileDescriptor out,
|
||||
FileDescriptor err, String[] args, ShellCallback callback,
|
||||
ResultReceiver resultReceiver) {
|
||||
(new PackageManagerShellCommand(this, mPermissionManagerService, mContext)).exec(
|
||||
(new PackageManagerShellCommand(this, mContext)).exec(
|
||||
this, in, out, err, args, callback, resultReceiver);
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.os.incremental.V4Signature;
|
||||
import android.os.storage.StorageManager;
|
||||
import android.permission.IPermissionManager;
|
||||
import android.permission.PermissionManager;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.Os;
|
||||
import android.text.TextUtils;
|
||||
@@ -108,6 +108,7 @@ import com.android.server.FgThread;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.SystemConfig;
|
||||
import com.android.server.pm.PackageManagerShellCommandDataLoader.Metadata;
|
||||
import com.android.server.pm.permission.LegacyPermissionManagerInternal;
|
||||
|
||||
import dalvik.system.DexFile;
|
||||
|
||||
@@ -144,7 +145,8 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
private static final String TAG = "PackageManagerShellCommand";
|
||||
|
||||
final IPackageManager mInterface;
|
||||
final IPermissionManager mPermissionManager;
|
||||
final LegacyPermissionManagerInternal mLegacyPermissionManager;
|
||||
final PermissionManager mPermissionManager;
|
||||
final Context mContext;
|
||||
final private WeakHashMap<String, Resources> mResourceCache =
|
||||
new WeakHashMap<String, Resources>();
|
||||
@@ -153,10 +155,10 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
boolean mComponents;
|
||||
int mQueryFlags;
|
||||
|
||||
PackageManagerShellCommand(
|
||||
PackageManagerService service, IPermissionManager permissionManager, Context context) {
|
||||
PackageManagerShellCommand(PackageManagerService service, Context context) {
|
||||
mInterface = service;
|
||||
mPermissionManager = permissionManager;
|
||||
mLegacyPermissionManager = LocalServices.getService(LegacyPermissionManagerInternal.class);
|
||||
mPermissionManager = context.getSystemService(PermissionManager.class);
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
@@ -887,8 +889,7 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
|
||||
private int runListPermissionGroups() throws RemoteException {
|
||||
final PrintWriter pw = getOutPrintWriter();
|
||||
final List<PermissionGroupInfo> pgs =
|
||||
mPermissionManager.getAllPermissionGroups(0).getList();
|
||||
final List<PermissionGroupInfo> pgs = mPermissionManager.getAllPermissionGroups(0);
|
||||
|
||||
final int count = pgs.size();
|
||||
for (int p = 0; p < count ; p++) {
|
||||
@@ -935,7 +936,7 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
final ArrayList<String> groupList = new ArrayList<String>();
|
||||
if (groups) {
|
||||
final List<PermissionGroupInfo> infos =
|
||||
mPermissionManager.getAllPermissionGroups(0 /*flags*/).getList();
|
||||
mPermissionManager.getAllPermissionGroups(0 /*flags*/);
|
||||
final int count = infos.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
groupList.add(infos.get(i).name);
|
||||
@@ -2297,18 +2298,18 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
getErrPrintWriter().println("Error: no permission specified");
|
||||
return 1;
|
||||
}
|
||||
final int translatedUserId =
|
||||
translateUserId(userId, UserHandle.USER_NULL, "runGrantRevokePermission");
|
||||
final UserHandle translatedUser = UserHandle.of(translateUserId(userId,
|
||||
UserHandle.USER_NULL, "runGrantRevokePermission"));
|
||||
if (grant) {
|
||||
mPermissionManager.grantRuntimePermission(pkg, perm, translatedUserId);
|
||||
mPermissionManager.grantRuntimePermission(pkg, perm, translatedUser);
|
||||
} else {
|
||||
mPermissionManager.revokeRuntimePermission(pkg, perm, translatedUserId, null);
|
||||
mPermissionManager.revokeRuntimePermission(pkg, perm, translatedUser, null);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int runResetPermissions() throws RemoteException {
|
||||
mPermissionManager.resetRuntimePermissions();
|
||||
mLegacyPermissionManager.resetRuntimePermissions();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3483,7 +3484,7 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
prefix = " ";
|
||||
}
|
||||
List<PermissionInfo> ps = mPermissionManager
|
||||
.queryPermissionsByGroup(groupList.get(i), 0 /*flags*/).getList();
|
||||
.queryPermissionsByGroup(groupList.get(i), 0 /*flags*/);
|
||||
final int count = ps.size();
|
||||
boolean first = true;
|
||||
for (int p = 0 ; p < count ; p++) {
|
||||
|
||||
@@ -23,6 +23,11 @@ import android.annotation.UserIdInt;
|
||||
* The internal interface for {@link LegacyPermissionManagerService}.
|
||||
*/
|
||||
public interface LegacyPermissionManagerInternal {
|
||||
/**
|
||||
* Reset the runtime permission state for all users and packages.
|
||||
*/
|
||||
void resetRuntimePermissions();
|
||||
|
||||
/**
|
||||
* Sets the dialer application packages provider.
|
||||
* @param provider The provider.
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.app.AppOpsManager;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManagerInternal;
|
||||
import android.os.Binder;
|
||||
import android.os.Process;
|
||||
import android.os.ServiceManager;
|
||||
@@ -32,6 +33,7 @@ import android.util.Log;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.pm.PackageManagerServiceUtils;
|
||||
import com.android.server.pm.UserManagerService;
|
||||
|
||||
/**
|
||||
* Legacy permission manager service.
|
||||
@@ -42,6 +44,9 @@ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stu
|
||||
/** Injector that can be used to facilitate testing. */
|
||||
private final Injector mInjector;
|
||||
|
||||
@NonNull
|
||||
private final Context mContext;
|
||||
|
||||
@NonNull
|
||||
private final DefaultPermissionGrantPolicy mDefaultPermissionGrantPolicy;
|
||||
|
||||
@@ -74,6 +79,7 @@ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stu
|
||||
|
||||
@VisibleForTesting
|
||||
LegacyPermissionManagerService(@NonNull Context context, @NonNull Injector injector) {
|
||||
mContext = context;
|
||||
mInjector = injector;
|
||||
mDefaultPermissionGrantPolicy = new DefaultPermissionGrantPolicy(context);
|
||||
}
|
||||
@@ -189,6 +195,29 @@ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stu
|
||||
}
|
||||
|
||||
private class Internal implements LegacyPermissionManagerInternal {
|
||||
@Override
|
||||
public void resetRuntimePermissions() {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
|
||||
"revokeRuntimePermission");
|
||||
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
if (callingUid != Process.SYSTEM_UID && callingUid != 0) {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
|
||||
"resetRuntimePermissions");
|
||||
}
|
||||
|
||||
final PackageManagerInternal packageManagerInternal = LocalServices.getService(
|
||||
PackageManagerInternal.class);
|
||||
final PermissionManagerServiceInternal permissionManagerInternal =
|
||||
LocalServices.getService(PermissionManagerServiceInternal.class);
|
||||
for (final int userId : UserManagerService.getInstance().getUserIds()) {
|
||||
packageManagerInternal.forEachPackage(pkg ->
|
||||
permissionManagerInternal.resetRuntimePermissions(pkg, userId));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDialerAppPackagesProvider(PackagesProvider provider) {
|
||||
mDefaultPermissionGrantPolicy.setDialerAppPackagesProvider(provider);
|
||||
|
||||
@@ -955,8 +955,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int checkPermission(String permName, String pkgName, @UserIdInt int userId) {
|
||||
private int checkPermission(String permName, String pkgName, @UserIdInt int userId) {
|
||||
// Not using Objects.requireNonNull() here for compatibility reasons.
|
||||
if (permName == null || pkgName == null) {
|
||||
return PackageManager.PERMISSION_DENIED;
|
||||
@@ -1037,8 +1036,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int checkUidPermission(String permName, int uid) {
|
||||
private int checkUidPermission(String permName, int uid) {
|
||||
// Not using Objects.requireNonNull() here for compatibility reasons.
|
||||
if (permName == null) {
|
||||
return PackageManager.PERMISSION_DENIED;
|
||||
@@ -1764,27 +1762,6 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
return Arrays.asList(packageNames).contains(permissionControllerPackageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetRuntimePermissions() {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
|
||||
"revokeRuntimePermission");
|
||||
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
if (callingUid != Process.SYSTEM_UID && callingUid != 0) {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
|
||||
"resetRuntimePermissions");
|
||||
}
|
||||
|
||||
updateAllPermissions(
|
||||
StorageManager.UUID_PRIVATE_INTERNAL, false, mDefaultPermissionCallback);
|
||||
for (final int userId : UserManagerService.getInstance().getUserIds()) {
|
||||
mPackageManagerInt.forEachPackage(
|
||||
(AndroidPackage pkg) -> resetRuntimePermissionsInternal(pkg, userId));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverts user permission state changes (permissions and flags).
|
||||
*
|
||||
@@ -4947,6 +4924,18 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
}
|
||||
|
||||
private class PermissionManagerServiceInternalImpl implements PermissionManagerServiceInternal {
|
||||
@Override
|
||||
public int checkPermission(@NonNull String packageName, @NonNull String permissionName,
|
||||
@UserIdInt int userId) {
|
||||
return PermissionManagerService.this.checkPermission(permissionName, packageName,
|
||||
userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int checkUidPermission(int uid, @NonNull String permissionName) {
|
||||
return PermissionManagerService.this.checkUidPermission(permissionName, uid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSystemReady() {
|
||||
PermissionManagerService.this.systemReady();
|
||||
|
||||
@@ -38,6 +38,30 @@ import java.util.Set;
|
||||
*/
|
||||
public interface PermissionManagerServiceInternal extends PermissionManagerInternal,
|
||||
LegacyPermissionDataProvider {
|
||||
/**
|
||||
* Check whether a particular package has been granted a particular permission.
|
||||
*
|
||||
* @param packageName the name of the package you are checking against
|
||||
* @param permissionName the name of the permission you are checking for
|
||||
* @param userId the user ID
|
||||
* @return {@code PERMISSION_GRANTED} if the permission is granted, or {@code PERMISSION_DENIED}
|
||||
* otherwise
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
int checkPermission(@NonNull String packageName, @NonNull String permissionName,
|
||||
@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Check whether a particular UID has been granted a particular permission.
|
||||
*
|
||||
* @param uid the UID
|
||||
* @param permissionName the name of the permission you are checking for
|
||||
* @return {@code PERMISSION_GRANTED} if the permission is granted, or {@code PERMISSION_DENIED}
|
||||
* otherwise
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
int checkUidPermission(int uid, @NonNull String permissionName);
|
||||
|
||||
/**
|
||||
* Adds a listener for runtime permission state (permissions or flags) changes.
|
||||
*
|
||||
|
||||
@@ -36,7 +36,6 @@ import android.os.SystemProperties
|
||||
import android.os.UserHandle
|
||||
import android.os.UserManager
|
||||
import android.os.incremental.IncrementalManager
|
||||
import android.permission.IPermissionManager
|
||||
import android.util.ArrayMap
|
||||
import android.util.DisplayMetrics
|
||||
import android.util.EventLog
|
||||
@@ -184,7 +183,6 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) {
|
||||
val dexManager: DexManager = mock()
|
||||
val installer: Installer = mock()
|
||||
val displayMetrics: DisplayMetrics = mock()
|
||||
val permissionManager: IPermissionManager = mock()
|
||||
}
|
||||
|
||||
companion object {
|
||||
@@ -246,7 +244,6 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) {
|
||||
whenever(mocks.injector.permissionManagerServiceInternal) {
|
||||
mocks.permissionManagerInternal
|
||||
}
|
||||
whenever(mocks.injector.permissionManagerService).thenReturn(mocks.permissionManager)
|
||||
whenever(mocks.injector.incrementalManager).thenReturn(mocks.incrementalManager)
|
||||
whenever(mocks.injector.compatibility).thenReturn(mocks.platformCompat)
|
||||
whenever(mocks.injector.settings).thenReturn(mocks.settings)
|
||||
|
||||
Reference in New Issue
Block a user