From 2d3fed86d144bdec04a81e6fa370ad0f2ae64b06 Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Tue, 27 Jun 2023 12:59:16 +0100 Subject: [PATCH] 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 --- src/com/android/settings/users/UserSettings.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index d9fbc423f8d..93b7c781517 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -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;