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

Commit 2d3fed86 authored by Yasin Kilicdere's avatar Yasin Kilicdere
Browse files

After deleting guest user, switch back to previous instead of user0.

In Setting, after deleting or exiting the guest user, or failure to
reset the guest user involves switching back to user0, which is not
possible with HSUM (headless system user mode). With this CL we're
now switching back to previous foreground user instead of system user.

Bug: 283106632
Test: manual
Change-Id: Id60063cca75d9fded7dfe0b7d7a4b871d67c4b0c
parent bf7b928f
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -977,10 +977,10 @@ public class UserSettings extends SettingsPreferenceFragment
            return;
        }
        try {
            getContext().getSystemService(UserManager.class)
                    .removeUserWhenPossible(UserHandle.of(UserHandle.myUserId()),
                            /* overrideDevicePolicy= */ false);
            ActivityManager.getService().switchUser(UserHandle.USER_SYSTEM);
            mUserManager.removeUserWhenPossible(
                    UserHandle.of(UserHandle.myUserId()), /* overrideDevicePolicy= */ false);
            ActivityManager.getService().switchUser(
                    mUserManager.getPreviousForegroundUser().getIdentifier());
        } catch (RemoteException re) {
            Log.e(TAG, "Unable to remove self user");
        }
@@ -1099,7 +1099,7 @@ public class UserSettings extends SettingsPreferenceFragment
        }
        mMetricsFeatureProvider.action(getActivity(),
                SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED);
        switchToUserId(UserHandle.USER_SYSTEM);
        switchToUserId(mUserManager.getPreviousForegroundUser().getIdentifier());
    }

    private int createGuest() {
@@ -1139,8 +1139,8 @@ public class UserSettings extends SettingsPreferenceFragment
            // Create a new guest in the foreground, and then immediately switch to it
            int newGuestUserId = createGuest();
            if (newGuestUserId == UserHandle.USER_NULL) {
                Log.e(TAG, "Could not create new guest, switching back to system user");
                switchToUserId(UserHandle.USER_SYSTEM);
                Log.e(TAG, "Could not create new guest, switching back to previous user");
                switchToUserId(mUserManager.getPreviousForegroundUser().getIdentifier());
                mUserManager.removeUser(oldGuestUserId);
                WindowManagerGlobal.getWindowManagerService().lockNow(/* options= */ null);
                return;