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
This commit is contained in:
Yasin Kilicdere
2023-06-27 12:59:16 +01:00
parent bf7b928f0c
commit 2d3fed86d1

View File

@@ -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;