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

Commit 002deeda authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "DO NOT MERGE - Removed FLAG_EPHEMERAL from pre-created users." into qt-qpr1-dev

parents 8c5d0222 b286462f
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -2782,8 +2782,18 @@ public class UserManagerService extends IUserManager.Stub {
            }
            if (preCreatedUserData != null) {
                final UserInfo preCreatedUser = preCreatedUserData.info;
                Log.i(LOG_TAG, "Reusing pre-created user " + preCreatedUser.id + " for flags + "
                        + UserInfo.flagsToString(flags));
                if (UserInfo.isGuest(flags) && areGuestUsersEphemeral()) {
                    // TODO(b/143092698): this pre-created user has (persisted) storage keys
                    // that will be removed when the user is stopped and ideally we should
                    // remove them from storage right now, but that's not possible with the
                    // current StorageManager APIs (there are just a
                    // createUserKey(userId, serial, isEphemeral) and destroyUserKey(userId)
                    // methods; we would need a makeUserKeyEphemeral(userId) method)
                    preCreatedUserData.info.flags |= UserInfo.FLAG_EPHEMERAL;
                }
                Log.i(LOG_TAG, "Reusing pre-created user " + preCreatedUser.id + " for flags "
                        + UserInfo.flagsToString(flags) + "; new flags: "
                        + UserInfo.flagsToString(preCreatedUserData.info.flags));
                if (DBG) {
                    Log.d(LOG_TAG, "pre-created user flags: "
                            + UserInfo.flagsToString(preCreatedUser.flags)
@@ -2882,8 +2892,9 @@ public class UserManagerService extends IUserManager.Stub {

                synchronized (mUsersLock) {
                    // Add ephemeral flag to guests/users if required. Also inherit it from parent.
                    if ((isGuest && ephemeralGuests) || mForceEphemeralUsers
                            || (parent != null && parent.info.isEphemeral())) {
                    if (!preCreate && ((isGuest && ephemeralGuests)
                            || mForceEphemeralUsers
                            || (parent != null && parent.info.isEphemeral()))) {
                        flags |= UserInfo.FLAG_EPHEMERAL;
                    }

@@ -3006,13 +3017,7 @@ public class UserManagerService extends IUserManager.Stub {
    @GuardedBy("mUsersLock")
    private @Nullable UserData getPreCreatedUserLU(@UserInfoFlag int flags) {
        if (DBG) {
            Slog.d(LOG_TAG, "getPreCreatedUser(): initialFlags= " + UserInfo.flagsToString(flags));
        }
        if (UserInfo.isGuest(flags) && areGuestUsersEphemeral()) {
            flags |= UserInfo.FLAG_EPHEMERAL;
        }
        if (DBG) {
            Slog.d(LOG_TAG, "getPreCreatedUser(): targetFlags= " + UserInfo.flagsToString(flags));
            Slog.d(LOG_TAG, "getPreCreatedUser(): flags= " + UserInfo.flagsToString(flags));
        }
        final int userSize = mUsers.size();
        for (int i = 0; i < userSize; i++) {