Merge "Skip updating flags for a permission that's not requested." into rvc-dev am: 9711070706
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12000450 Change-Id: I28c88435cb0608ff8026fa0971bc1fcd58660e3a
This commit is contained in:
@@ -789,6 +789,31 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|||||||
final PermissionsState permissionsState = ps.getPermissionsState();
|
final PermissionsState permissionsState = ps.getPermissionsState();
|
||||||
final boolean hadState =
|
final boolean hadState =
|
||||||
permissionsState.getRuntimePermissionState(permName, userId) != null;
|
permissionsState.getRuntimePermissionState(permName, userId) != null;
|
||||||
|
if (!hadState) {
|
||||||
|
boolean isRequested = false;
|
||||||
|
// Fast path, the current package has requested the permission.
|
||||||
|
if (pkg.getRequestedPermissions().contains(permName)) {
|
||||||
|
isRequested = true;
|
||||||
|
}
|
||||||
|
if (!isRequested) {
|
||||||
|
// Slow path, go through all shared user packages.
|
||||||
|
String[] sharedUserPackageNames =
|
||||||
|
mPackageManagerInt.getSharedUserPackagesForPackage(packageName, userId);
|
||||||
|
for (String sharedUserPackageName : sharedUserPackageNames) {
|
||||||
|
AndroidPackage sharedUserPkg = mPackageManagerInt.getPackage(
|
||||||
|
sharedUserPackageName);
|
||||||
|
if (sharedUserPkg != null
|
||||||
|
&& sharedUserPkg.getRequestedPermissions().contains(permName)) {
|
||||||
|
isRequested = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isRequested) {
|
||||||
|
Log.e(TAG, "Permission " + permName + " isn't requested by package " + packageName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
final boolean permissionUpdated =
|
final boolean permissionUpdated =
|
||||||
permissionsState.updatePermissionFlags(bp, userId, flagMask, flagValues);
|
permissionsState.updatePermissionFlags(bp, userId, flagMask, flagValues);
|
||||||
if (permissionUpdated && bp.isRuntime()) {
|
if (permissionUpdated && bp.isRuntime()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user