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

Commit 1f0554de authored by Adam Bookatz's avatar Adam Bookatz
Browse files

Only forceWrite userlist if needed

As a hack to work around flagging, we have to update the userlist
outside of the usual versioning upgrade. But we were too aggressive, and
were updating it if no changes were made. This is unnecessary, and
moreover, caused some test failures (that weren't expecting the
upgrade).

Test: com.android.server.pm.UserManagerServiceUserInfoTest
Flag: EXEMPT BUGFIX
Bug: 435283280
Change-Id: If918280acee09e687bd0784ea922aa0ad5f3e0c6
parent 3df32c4e
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -5272,18 +5272,19 @@ public class UserManagerService extends IUserManager.Stub {
        // 2025Q4 userVersion pathway.
        // TODO(b/419105275): Because trunk stable flags need to be reversible, and because the
        //  upgrades here actually are reversible, we temporarily "cheat" by triggering the upgrade
        //  path on every reboot.
        //  Once the flags have fully progressed, we can do this properly:
        //  path even if we don't increment the version (by temporarily introducing forceWrite).
        //  Once the flags have fully progressed, we can do this properly instead:
        //  check for userVersion < 11, set userVersion = 12, and set USER_VERSION = 12.
        // if (userVersion < 12) {
        Slog.i(LOG_TAG, "Forcing an upgrade due to flagged changes");
        final boolean forceWrite = true; // treat as an upgrade no matter what to handle flagging
        boolean forceWrite = false; // treat as an upgrade no matter what to handle flagging?
        if (android.multiuser.Flags.userRestrictionConfigWifiSharedPrivate()) {
            // DISALLOW_CONFIG_WIFI_SHARED replaced DISALLOW_CONFIG_WIFI as the guest restriction.
            if (mGuestRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_WIFI) &&
                    !mGuestRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_WIFI_SHARED)) {
                mGuestRestrictions.remove(UserManager.DISALLOW_CONFIG_WIFI);
                mGuestRestrictions.putBoolean(UserManager.DISALLOW_CONFIG_WIFI_SHARED, true);
                forceWrite = true;
            }
            final List<UserInfo> guestUsers = getGuestUsers();
            for (int i = 0; i < guestUsers.size(); i++) {
@@ -5293,6 +5294,7 @@ public class UserManagerService extends IUserManager.Stub {
                        && !hasUserRestriction(UserManager.DISALLOW_CONFIG_WIFI_SHARED, guest.id)) {
                    setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, false, guest.id);
                    setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI_SHARED, true, guest.id);
                    forceWrite = true;
                }
            }
        } else {
@@ -5301,6 +5303,7 @@ public class UserManagerService extends IUserManager.Stub {
                    mGuestRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_WIFI_SHARED)) {
                mGuestRestrictions.putBoolean(UserManager.DISALLOW_CONFIG_WIFI, true);
                mGuestRestrictions.remove(UserManager.DISALLOW_CONFIG_WIFI_SHARED);
                forceWrite = true;
            }
            final List<UserInfo> guestUsers = getGuestUsers();
            for (int i = 0; i < guestUsers.size(); i++) {
@@ -5310,6 +5313,7 @@ public class UserManagerService extends IUserManager.Stub {
                        && hasUserRestriction(UserManager.DISALLOW_CONFIG_WIFI_SHARED, guest.id)) {
                    setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, true, guest.id);
                    setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI_SHARED, false, guest.id);
                    forceWrite = true;
                }
            }
        }
@@ -5321,6 +5325,7 @@ public class UserManagerService extends IUserManager.Stub {
                        && (sysData.info.flags & UserInfo.FLAG_ADMIN) != 0) {
                    sysData.info.flags &= ~UserInfo.FLAG_ADMIN;
                    userIdsToWrite.add(sysData.info.id);
                    forceWrite = true;
                }
            }
        } else {
@@ -5331,6 +5336,7 @@ public class UserManagerService extends IUserManager.Stub {
                        && (sysData.info.flags & UserInfo.FLAG_ADMIN) == 0) {
                    sysData.info.flags ^= UserInfo.FLAG_ADMIN;
                    userIdsToWrite.add(sysData.info.id);
                    forceWrite = true;
                }
            }
        }