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

Commit 6d6befce authored by helen cheuk's avatar helen cheuk
Browse files

[Action Corner] Check if user setup is completed

Check if user setup is completed before starting to detect action corner

Bug: 421899683
Test: ActionCornerInteractorTest
Flag: com.android.systemui.shared.cursor_hot_corner
Change-Id: I90227b93acc7be87c2a3c8bfb6b5377847b6feef
parent 6f79e20d
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.shared.system.actioncorner.ActionCornerConstants.HOME
import com.android.systemui.shared.system.actioncorner.ActionCornerConstants.OVERVIEW
import com.android.systemui.statusbar.policy.data.repository.fakeUserSetupRepository
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.data.repository.userAwareSecureSettingsRepository
import com.google.common.truth.Truth.assertThat
@@ -58,6 +59,7 @@ import kotlin.test.Test
import org.junit.Before
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
import org.mockito.kotlin.verify

@SmallTest
@@ -81,12 +83,14 @@ class ActionCornerInteractorTest : SysuiTestCase() {
            shadeModeInteractor,
            shadeInteractor,
            actionCornerSettingRepository,
            fakeUserSetupRepository,
        )
    }

    @Before
    fun setUp() {
        kosmos.enableDualShade()
        kosmos.fakeUserSetupRepository.setUserSetUp(true)
        kosmos.underTest.activateIn(kosmos.testScope)
    }

@@ -176,4 +180,16 @@ class ActionCornerInteractorTest : SysuiTestCase() {
            assertThat(sceneInteractor.currentOverlays.value)
                .doesNotContain(Overlays.QuickSettingsShade)
        }

    @Test
    fun userNotSetUp_overviewActionConfigured_actionCornerActivated_actionNotTriggered() =
        kosmos.runTest {
            settingsRepository.setInt(
                ACTION_CORNER_BOTTOM_LEFT_ACTION,
                ACTION_CORNER_ACTION_OVERVIEW,
            )
            fakeUserSetupRepository.setUserSetUp(false)
            actionCornerRepository.addState(ActiveActionCorner(BOTTOM_LEFT, DEFAULT_DISPLAY))
            verify(launcherProxyService, never()).onActionCornerActivated(OVERVIEW, DEFAULT_DISPLAY)
        }
}
+13 −3
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import com.android.systemui.actioncorner.data.model.ActionCornerRegion.BOTTOM_LE
import com.android.systemui.actioncorner.data.model.ActionCornerRegion.BOTTOM_RIGHT
import com.android.systemui.actioncorner.data.model.ActionCornerRegion.TOP_LEFT
import com.android.systemui.actioncorner.data.model.ActionCornerRegion.TOP_RIGHT
import com.android.systemui.actioncorner.data.model.ActionCornerState
import com.android.systemui.actioncorner.data.model.ActionCornerState.ActiveActionCorner
import com.android.systemui.actioncorner.data.model.ActionType
import com.android.systemui.actioncorner.data.model.ActionType.HOME
import com.android.systemui.actioncorner.data.model.ActionType.NONE
@@ -39,10 +39,13 @@ import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode.Dual
import com.android.systemui.shared.system.actioncorner.ActionCornerConstants
import com.android.systemui.statusbar.policy.data.repository.UserSetupRepository
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.withContext

@SysUISingleton
@@ -55,11 +58,18 @@ constructor(
    private val shadeModeInteractor: ShadeModeInteractor,
    private val shadeInteractor: ShadeInteractor,
    private val actionCornerSettingRepository: ActionCornerSettingRepository,
    private val userSetupRepository: UserSetupRepository,
) : ExclusiveActivatable() {

    override suspend fun onActivated(): Nothing {
        repository.actionCornerState
            .filterIsInstance<ActionCornerState.ActiveActionCorner>()
        userSetupRepository.isUserSetUp
            .flatMapLatest {
                if (it) {
                    repository.actionCornerState.filterIsInstance<ActiveActionCorner>()
                } else {
                    emptyFlow()
                }
            }
            .collect {
                val action = getAction(it.region)
                when (action) {