diff options
3 files changed, 37 insertions, 34 deletions
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java index 6bec34ef7063..38aa57f785e5 100644 --- a/services/core/java/com/android/server/pm/DeletePackageHelper.java +++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java @@ -24,6 +24,7 @@ import static android.content.pm.PackageManager.DELETE_KEEP_DATA; import static android.content.pm.PackageManager.DELETE_SUCCEEDED; import static android.content.pm.PackageManager.MATCH_KNOWN_PACKAGES; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.os.UserHandle.USER_ALL; import static com.android.server.pm.InstructionSets.getAppDexInstructionSets; import static com.android.server.pm.PackageManagerService.DEBUG_COMPRESSION; @@ -122,7 +123,7 @@ final class DeletePackageHelper { final boolean res; final int removeUser = (deleteFlags & PackageManager.DELETE_ALL_USERS) != 0 - ? UserHandle.USER_ALL : userId; + ? USER_ALL : userId; final PackageSetting uninstalledPs; final PackageSetting disabledSystemPs; @@ -183,7 +184,7 @@ final class DeletePackageHelper { if (libraryInfo != null) { boolean flagSdkLibIndependence = Flags.sdkLibIndependence(); for (int currUserId : allUsers) { - if (removeUser != UserHandle.USER_ALL && removeUser != currUserId) { + if (removeUser != USER_ALL && removeUser != currUserId) { continue; } var libClientPackagesPair = computer.getPackagesUsingSharedLibrary( @@ -227,7 +228,7 @@ final class DeletePackageHelper { && ((deleteFlags & PackageManager.DELETE_SYSTEM_APP) == 0)) { // We're downgrading a system app, which will apply to all users, so // freeze them all during the downgrade - freezeUser = UserHandle.USER_ALL; + freezeUser = USER_ALL; priorUserStates = new SparseArray<>(); for (int i = 0; i < allUsers.length; i++) { PackageUserState userState = uninstalledPs.readUserState(allUsers[i]); @@ -421,7 +422,7 @@ final class DeletePackageHelper { if (PackageManagerServiceUtils.isSystemApp(ps)) { final boolean deleteSystem = (flags & PackageManager.DELETE_SYSTEM_APP) != 0; final boolean deleteAllUsers = - user == null || user.getIdentifier() == UserHandle.USER_ALL; + user == null || user.getIdentifier() == USER_ALL; if ((!deleteSystem || deleteAllUsers) && disabledPs == null) { Slog.w(TAG, "Attempt to delete unknown system package " + ps.getPkg().getPackageName()); @@ -464,9 +465,9 @@ final class DeletePackageHelper { Manifest.permission.SUSPEND_APPS, packageName, userId) == PERMISSION_GRANTED); } - final int userId = user == null ? UserHandle.USER_ALL : user.getIdentifier(); + final int userId = user == null ? USER_ALL : user.getIdentifier(); // Remember which users are affected, before the installed states are modified - outInfo.mRemovedUsers = userId == UserHandle.USER_ALL + outInfo.mRemovedUsers = userId == USER_ALL ? ps.queryUsersInstalledOrHasData(allUserHandles) : new int[]{userId}; outInfo.populateBroadcastUsers(ps); @@ -479,7 +480,7 @@ final class DeletePackageHelper { outInfo.mRemovedPackageVersionCode = ps.getVersionCode(); if ((!systemApp || (flags & PackageManager.DELETE_SYSTEM_APP) != 0) - && userId != UserHandle.USER_ALL) { + && userId != USER_ALL) { // The caller is asking that the package only be deleted for a single // user. To do this, we just mark its uninstalled state and delete // its data. If this is a system app, we only allow this to happen if @@ -552,7 +553,7 @@ final class DeletePackageHelper { for (final int affectedUserId : outInfo.mRemovedUsers) { if (hadSuspendAppsPermission.get(affectedUserId)) { mPm.unsuspendForSuspendingPackage(snapshot, packageName, - affectedUserId /*suspendingUserId*/, true /*inAllUsers*/); + affectedUserId /*suspendingUserId*/, USER_ALL); mPm.removeAllDistractingPackageRestrictions(snapshot, affectedUserId); } } @@ -590,7 +591,7 @@ final class DeletePackageHelper { @GuardedBy("mPm.mLock") private void markPackageUninstalledForUserLPw(PackageSetting ps, UserHandle user, int flags) { - final int[] userIds = (user == null || user.getIdentifier() == UserHandle.USER_ALL) + final int[] userIds = (user == null || user.getIdentifier() == USER_ALL) ? mUserManagerInternal.getUserIds() : new int[] {user.getIdentifier()}; for (int nextUserId : userIds) { @@ -687,7 +688,7 @@ final class DeletePackageHelper { flags |= PackageManager.DELETE_KEEP_DATA; } try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { - deleteInstalledPackageLIF(deletedPs, UserHandle.USER_ALL, true, flags, allUserHandles, + deleteInstalledPackageLIF(deletedPs, USER_ALL, true, flags, allUserHandles, outInfo, writeSettings); } } diff --git a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java index ed568b823159..f5230c57c597 100644 --- a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java +++ b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java @@ -689,7 +689,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal { final int suspendingUserId = crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : affectedUser; mService.unsuspendForSuspendingPackage( - snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId, /* inAllUsers= */ false); + snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId, affectedUser); } @Override diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 91a1c9c12cb8..021da6f27deb 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -34,6 +34,7 @@ import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET; import static android.crashrecovery.flags.Flags.refactorCrashrecovery; import static android.os.Process.INVALID_UID; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; +import static android.os.UserHandle.USER_ALL; import static android.os.storage.StorageManager.FLAG_STORAGE_CE; import static android.os.storage.StorageManager.FLAG_STORAGE_DE; import static android.os.storage.StorageManager.FLAG_STORAGE_EXTERNAL; @@ -1587,13 +1588,13 @@ public class PackageManagerService implements PackageSender, TestUtilityService } void scheduleWritePackageRestrictions(UserHandle user) { - final int userId = user == null ? UserHandle.USER_ALL : user.getIdentifier(); + final int userId = user == null ? USER_ALL : user.getIdentifier(); scheduleWritePackageRestrictions(userId); } void scheduleWritePackageRestrictions(@CanBeALL @UserIdInt int userId) { invalidatePackageInfoCache(); - if (userId == UserHandle.USER_ALL) { + if (userId == USER_ALL) { synchronized (mDirtyUsers) { for (int aUserId : mUserManager.getUserIds()) { mDirtyUsers.add(aUserId); @@ -1806,7 +1807,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService private void installAllowlistedSystemPackages() { if (mUserManager.installWhitelistedSystemPackages(isFirstBoot(), isDeviceUpgrading(), mExistingPackages)) { - scheduleWritePackageRestrictions(UserHandle.USER_ALL); + scheduleWritePackageRestrictions(USER_ALL); scheduleWriteSettings(); } } @@ -2393,7 +2394,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService final PackageSetting ps = packageSettings.valueAt(i); if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, ps.getVolumeUuid())) { // No apps are running this early, so no need to freeze - mAppDataHelper.clearAppDataLIF(ps.getPkg(), UserHandle.USER_ALL, + mAppDataHelper.clearAppDataLIF(ps.getPkg(), USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY | Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES); @@ -3076,7 +3077,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService @NonNull int[] resolveUserIds(@CanBeALL @UserIdInt int userId) { - return (userId == UserHandle.USER_ALL) ? mUserManager.getUserIds() : new int[] { userId }; + return (userId == USER_ALL) ? mUserManager.getUserIds() : new int[]{userId}; } private void setUpInstantAppInstallerActivityLP(ActivityInfo installerActivity) { @@ -3109,7 +3110,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService } void killApplication(String pkgName, @AppIdInt int appId, String reason, int exitInfoReason) { - killApplication(pkgName, appId, UserHandle.USER_ALL, reason, exitInfoReason); + killApplication(pkgName, appId, USER_ALL, reason, exitInfoReason); } void killApplication(String pkgName, @AppIdInt int appId, @@ -3229,23 +3230,24 @@ public class PackageManagerService implements PackageSender, TestUtilityService } /** - * @param inAllUsers Whether to unsuspend packages suspended by the given package in other - * users. This flag is only used when cross-user suspension is enabled. + * @param suspendingUserId The user that has suspended apps using the suspending package. + * @param targetUserId The user whose apps should be unsuspended. Pass {@code USER_ALL} to + * unsuspend for all users. */ void unsuspendForSuspendingPackage(@NonNull Computer computer, String suspendingPackage, - @UserIdInt int suspendingUserId, boolean inAllUsers) { + @UserIdInt int suspendingUserId, @CanBeALL @UserIdInt int targetUserId) { // TODO: This can be replaced by a special parameter to iterate all packages, rather than // this weird pre-collect of all packages. final String[] allPackages = computer.getPackageStates().keySet().toArray(new String[0]); final Predicate<UserPackage> suspenderPredicate = UserPackage.of(suspendingUserId, suspendingPackage)::equals; - if (!crossUserSuspensionEnabledRo() || !inAllUsers) { + if (!crossUserSuspensionEnabledRo() || targetUserId != USER_ALL) { mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(computer, - allPackages, suspenderPredicate, suspendingUserId); + allPackages, suspenderPredicate, targetUserId); } else { - for (int targetUserId: mUserManager.getUserIds()) { + for (int user : mUserManager.getUserIds()) { mSuspendPackageHelper.removeSuspensionsBySuspendingPackage( - computer, allPackages, suspenderPredicate, targetUserId); + computer, allPackages, suspenderPredicate, user); } } } @@ -3382,7 +3384,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService && !snapshot.isCallerSameApp(packageName, callingUid)) { return false; } - return isPackageDeviceAdmin(packageName, UserHandle.USER_ALL); + return isPackageDeviceAdmin(packageName, USER_ALL); } // TODO(b/261957226): centralise this logic in DPM @@ -3406,7 +3408,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService // Does it contain a device admin for any user? int[] allUsers = mUserManager.getUserIds(); int[] targetUsers; - if (userId == UserHandle.USER_ALL) { + if (userId == USER_ALL) { targetUsers = allUsers; } else { targetUsers = new int[]{userId}; @@ -4153,7 +4155,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService // This app should not generally be allowed to get disabled by the UI, but // if it ever does, we don't want to end up with some of the user's apps // permanently suspended. - unsuspendForSuspendingPackage(computer, packageName, userId, true /* inAllUsers */); + unsuspendForSuspendingPackage(computer, packageName, userId, USER_ALL); removeAllDistractingPackageRestrictions(computer, userId); } success = true; @@ -4244,9 +4246,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService }; mContext.getContentResolver().registerContentObserver(android.provider.Settings.Global .getUriFor(Global.ENABLE_EPHEMERAL_FEATURE), - false, co, UserHandle.USER_ALL); + false, co, USER_ALL); mContext.getContentResolver().registerContentObserver(android.provider.Settings.Secure - .getUriFor(Secure.INSTANT_APPS_ENABLED), false, co, UserHandle.USER_ALL); + .getUriFor(Secure.INSTANT_APPS_ENABLED), false, co, USER_ALL); co.onChange(true); mAppsFilter.onSystemReady(LocalServices.getService(PackageManagerInternal.class)); @@ -4774,7 +4776,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService final Computer snapshot = snapshotComputer(); final AndroidPackage pkg = snapshot.getPackage(packageName); try (PackageFreezer ignored = - freezePackage(packageName, UserHandle.USER_ALL, + freezePackage(packageName, USER_ALL, "clearApplicationProfileData", ApplicationExitInfo.REASON_OTHER, null /* request */)) { try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) { @@ -4820,7 +4822,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService public void run() { mHandler.removeCallbacks(this); final boolean succeeded; - try (PackageFreezer freezer = freezePackage(packageName, UserHandle.USER_ALL, + try (PackageFreezer freezer = freezePackage(packageName, USER_ALL, "clearApplicationUserData", ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */, /* waitAppKilled= */ true)) { @@ -4847,7 +4849,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService == PERMISSION_GRANTED) { final Computer snapshot = snapshotComputer(); unsuspendForSuspendingPackage( - snapshot, packageName, userId, true /* inAllUsers */); + snapshot, packageName, userId, USER_ALL); removeAllDistractingPackageRestrictions(snapshot, userId); synchronized (mLock) { flushPackageRestrictionsAsUserInternalLocked(userId); @@ -6372,13 +6374,13 @@ public class PackageManagerService implements PackageSender, TestUtilityService if (mComponentResolver.updateMimeGroup(snapshotComputer(), packageName, mimeGroup)) { Binder.withCleanCallingIdentity(() -> { mPreferredActivityHelper.clearPackagePreferredActivities(packageName, - UserHandle.USER_ALL); + USER_ALL); // Send the ACTION_PACKAGE_CHANGED when the mimeGroup has changes final Computer snapShot = snapshotComputer(); final ArrayList<String> components = new ArrayList<>( Collections.singletonList(packageName)); final int appId = packageState.getAppId(); - final int[] userIds = resolveUserIds(UserHandle.USER_ALL); + final int[] userIds = resolveUserIds(USER_ALL); final String reason = "The mimeGroup is changed"; for (int i = 0; i < userIds.length; i++) { final PackageUserStateInternal pkgUserState = |