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

Commit fcb9745a authored by Aaron Liu's avatar Aaron Liu
Browse files

Remove dialog when user is switched.

Fixes: 278974119
Test: switch users and observe that we end up on lockscreen.

Change-Id: I6c87f6f82b631d9730940615e3af4618b8a9ffd5
parent 0973118d
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@

package com.android.systemui.user.ui.viewmodel

import com.android.systemui.res.R
import com.android.systemui.common.shared.model.Text
import com.android.systemui.common.ui.drawable.CircularDrawable
import com.android.systemui.dagger.SysUISingleton
@@ -64,6 +63,7 @@ constructor(

    private val hasCancelButtonBeenClicked = MutableStateFlow(false)
    private val isFinishRequiredDueToExecutedAction = MutableStateFlow(false)
    private val userSwitched = MutableStateFlow(false)

    /**
     * Whether the observer should finish the experience. Once consumed, [onFinished] must be called
@@ -85,6 +85,7 @@ constructor(
    fun onFinished() {
        hasCancelButtonBeenClicked.value = false
        isFinishRequiredDueToExecutedAction.value = false
        userSwitched.value = false
    }

    /** Notifies that the user has clicked the "open menu" button. */
@@ -117,8 +118,9 @@ constructor(
            hasCancelButtonBeenClicked,
            // If an executed action told us to finish, we should finish,
            isFinishRequiredDueToExecutedAction,
        ) { cancelButtonClicked, executedActionFinish ->
            cancelButtonClicked || executedActionFinish
            userSwitched,
        ) { cancelButtonClicked, executedActionFinish, userSwitched ->
            cancelButtonClicked || executedActionFinish || userSwitched
        }

    private fun toViewModel(
@@ -187,7 +189,10 @@ constructor(
        return if (!model.isSelectable) {
            null
        } else {
            { userInteractor.selectUser(model.id) }
            {
                userInteractor.selectUser(model.id)
                userSwitched.value = true
            }
        }
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.systemui.GuestResetOrExitSessionReceiver
import com.android.systemui.GuestResumeSessionReceiver
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.shared.model.Text
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
@@ -346,6 +347,24 @@ class UserSwitcherViewModelTest : SysuiTestCase() {
            job.cancel()
        }

    @Test
    fun isFinishRequested_finishesWhenUserButtonIsClicked() =
        testScope.runTest {
            setUsers(count = 2)
            val isFinishRequested = mutableListOf<Boolean>()
            val job =
                launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }

            val userViewModels = collectLastValue(underTest.users)
            assertThat(isFinishRequested.last()).isFalse()

            userViewModels.invoke()?.firstOrNull()?.onClicked?.invoke()

            assertThat(isFinishRequested.last()).isTrue()

            job.cancel()
        }

    @Test
    fun guestSelected_nameIsExitGuest() =
        testScope.runTest {