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

Commit 4d4a5ab0 authored by João Victor Mendes Freire's avatar João Victor Mendes Freire Committed by Android (Google) Code Review
Browse files

Merge "Fix guest user not being removed until boot"

parents fcccdd84 1cc5912b
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -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
            )
        }
    }

+6 −3
Original line number Diff line number Diff line
@@ -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)
        }