Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19bed91f authored by Song Chun Fan's avatar Song Chun Fan Committed by Android (Google) Code Review
Browse files

Merge "[pm/archive] allow changing sharedUserId on unarchive" into main

parents 43669608 0e889e42
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -1897,11 +1897,17 @@ final class InstallPackageHelper {
                    }

                    if (!oldSharedUid.equals(newSharedUid)) {
                        if (!(oldSharedUid.equals("<nothing>") && ps.getPkg() == null
                                && ps.isArchivedOnAnyUser(allUsers))) {
                            // Only allow changing sharedUserId if unarchiving
                            // TODO(b/361558423): remove this check after pre-archiving installs
                            // accept a sharedUserId param in the API
                            throw new PrepareFailure(INSTALL_FAILED_UID_CHANGED,
                                    "Package " + parsedPackage.getPackageName()
                                            + " shared user changed from "
                                            + oldSharedUid + " to " + newSharedUid);
                        }
                    }

                    // APK should not re-join shared UID
                    if (oldPackageState.isLeavingSharedUser()
+12 −0
Original line number Diff line number Diff line
@@ -925,6 +925,18 @@ public class PackageSetting extends SettingBase implements PackageStateInternal
        return PackageArchiver.isArchived(readUserState(userId));
    }

    /**
     * @return if the package is archived in any of the users
     */
    boolean isArchivedOnAnyUser(int[] userIds) {
        for (int user : userIds) {
            if (isArchived(user)) {
                return true;
            }
        }
        return false;
    }

    int getInstallReason(int userId) {
        return readUserState(userId).getInstallReason();
    }