Loading packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt +16 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 ) } } Loading packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt +6 −3 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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) } Loading @@ -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, Loading @@ -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) } Loading Loading @@ -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, Loading @@ -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) } Loading Loading
packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt +16 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 ) } } Loading
packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt +6 −3 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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) } Loading @@ -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, Loading @@ -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) } Loading Loading @@ -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, Loading @@ -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) } Loading