diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt index 07e5cf9d9df27..f9d14cd1b7ca2 100644 --- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt @@ -208,7 +208,12 @@ constructor( if (newGuestId == UserHandle.USER_NULL) { Log.e(TAG, "Could not create new guest, switching back to system user") switchUser(UserHandle.USER_SYSTEM) - withContext(backgroundDispatcher) { manager.removeUser(currentUser.id) } + withContext(backgroundDispatcher) { + manager.removeUserWhenPossible( + UserHandle.of(currentUser.id), + /* overrideDevicePolicy= */ false + ) + } try { WindowManagerGlobal.getWindowManagerService().lockNow(/* options= */ null) } catch (e: RemoteException) { @@ -222,13 +227,21 @@ constructor( switchUser(newGuestId) - withContext(backgroundDispatcher) { manager.removeUser(currentUser.id) } + withContext(backgroundDispatcher) { + manager.removeUserWhenPossible( + UserHandle.of(currentUser.id), + /* overrideDevicePolicy= */ false + ) + } } else { if (repository.isGuestUserAutoCreated) { repository.isGuestUserResetting = true } switchUser(targetUserId) - manager.removeUser(currentUser.id) + manager.removeUserWhenPossible( + UserHandle.of(currentUser.id), + /* overrideDevicePolicy= */ false + ) } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt index 120bf791c4625..e49652148f3a8 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt @@ -219,6 +219,7 @@ class GuestUserInteractorTest : SysuiTestCase() { repository.setUserInfos(listOf(NON_GUEST_USER_INFO, EPHEMERAL_GUEST_USER_INFO)) repository.setSelectedUserInfo(EPHEMERAL_GUEST_USER_INFO) val targetUserId = NON_GUEST_USER_INFO.id + val ephemeralGuestUserHandle = UserHandle.of(EPHEMERAL_GUEST_USER_INFO.id) underTest.exit( guestUserId = GUEST_USER_INFO.id, @@ -230,7 +231,7 @@ class GuestUserInteractorTest : SysuiTestCase() { ) verify(manager).markGuestForDeletion(EPHEMERAL_GUEST_USER_INFO.id) - verify(manager).removeUser(EPHEMERAL_GUEST_USER_INFO.id) + verify(manager).removeUserWhenPossible(ephemeralGuestUserHandle, false) verify(switchUser).invoke(targetUserId) } @@ -240,6 +241,7 @@ class GuestUserInteractorTest : SysuiTestCase() { whenever(manager.markGuestForDeletion(anyInt())).thenReturn(true) repository.setSelectedUserInfo(GUEST_USER_INFO) val targetUserId = NON_GUEST_USER_INFO.id + val guestUserHandle = UserHandle.of(GUEST_USER_INFO.id) underTest.exit( guestUserId = GUEST_USER_INFO.id, @@ -251,7 +253,7 @@ class GuestUserInteractorTest : SysuiTestCase() { ) verify(manager).markGuestForDeletion(GUEST_USER_INFO.id) - verify(manager).removeUser(GUEST_USER_INFO.id) + verify(manager).removeUserWhenPossible(guestUserHandle, false) verify(switchUser).invoke(targetUserId) } @@ -296,6 +298,7 @@ class GuestUserInteractorTest : SysuiTestCase() { repository.setSelectedUserInfo(GUEST_USER_INFO) val targetUserId = NON_GUEST_USER_INFO.id + val guestUserHandle = UserHandle.of(GUEST_USER_INFO.id) underTest.remove( guestUserId = GUEST_USER_INFO.id, targetUserId = targetUserId, @@ -305,7 +308,7 @@ class GuestUserInteractorTest : SysuiTestCase() { ) verify(manager).markGuestForDeletion(GUEST_USER_INFO.id) - verify(manager).removeUser(GUEST_USER_INFO.id) + verify(manager).removeUserWhenPossible(guestUserHandle, false) verify(switchUser).invoke(targetUserId) }