Loading packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/AlternateBouncerInteractorTest.kt +16 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.bouncer.domain.interactor package com.android.systemui.bouncer.domain.interactor import android.platform.test.annotations.EnableFlags import android.security.Flags.FLAG_SECURE_LOCK_DEVICE import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase Loading @@ -31,9 +33,11 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.securelockdevice.data.repository.fakeSecureLockDeviceRepository import com.android.systemui.testKosmos import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue Loading Loading @@ -86,6 +90,18 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { assertThat(canShowAlternateBouncer).isFalse() assertThat(canShowAlternateBouncer).isFalse() } } @EnableFlags(FLAG_SECURE_LOCK_DEVICE) @Test fun canShowAlternateBouncerForFingerprint_falseDuringSecureLockDevice() = kosmos.testScope.runTest { kosmos.givenAlternateBouncerSupported() val canShowAlternateBouncer by collectLastValue(underTest.canShowAlternateBouncer) kosmos.fakeSecureLockDeviceRepository.onSecureLockDeviceEnabled() runCurrent() assertThat(canShowAlternateBouncer).isFalse() } @Test @Test fun hide_wasPreviouslyShowing() { fun hide_wasPreviouslyShowing() { kosmos.keyguardBouncerRepository.setAlternateVisible(true) kosmos.keyguardBouncerRepository.setAlternateVisible(true) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -44,6 +44,7 @@ import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.res.R import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor import com.android.systemui.shade.pulsingGestureListener import com.android.systemui.shade.pulsingGestureListener import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager Loading Loading @@ -443,6 +444,7 @@ class KeyguardTouchHandlingInteractorTest : SysuiTestCase() { powerManager = powerManager, powerManager = powerManager, systemClock = kosmos.fakeSystemClock, systemClock = kosmos.fakeSystemClock, pointerDeviceRepository = kosmos.pointerDeviceRepository, pointerDeviceRepository = kosmos.pointerDeviceRepository, secureLockDeviceInteractor = { kosmos.secureLockDeviceInteractor }, ) ) setUpState() setUpState() } } Loading packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/AlternateBouncerInteractor.kt +9 −3 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.securelockdevice.domain.interactor.SecureLockDeviceInteractor import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import dagger.Lazy import dagger.Lazy import javax.inject.Inject import javax.inject.Inject Loading Loading @@ -60,6 +61,7 @@ constructor( keyguardTransitionInteractor: Lazy<KeyguardTransitionInteractor>, keyguardTransitionInteractor: Lazy<KeyguardTransitionInteractor>, displayStateInteractor: Lazy<DisplayStateInteractor>, displayStateInteractor: Lazy<DisplayStateInteractor>, sceneInteractor: Lazy<SceneInteractor>, sceneInteractor: Lazy<SceneInteractor>, secureLockDeviceInteractor: Lazy<SecureLockDeviceInteractor>, @Application scope: CoroutineScope, @Application scope: CoroutineScope, ) { ) { private var receivedDownTouch = false private var receivedDownTouch = false Loading Loading @@ -105,10 +107,14 @@ constructor( combine( combine( keyguardTransitionInteractor.get().currentKeyguardState, keyguardTransitionInteractor.get().currentKeyguardState, sceneInteractor.get().currentScene, sceneInteractor.get().currentScene, ::Pair, secureLockDeviceInteractor.get().isSecureLockDeviceEnabled, ::Triple, ) ) .flatMapLatest { (currentKeyguardState, transitionState) -> .flatMapLatest { if (currentKeyguardState == KeyguardState.GONE) { (currentKeyguardState, transitionState, secureLockDeviceEnabled) -> if (secureLockDeviceEnabled) { flowOf(false) } else if (currentKeyguardState == KeyguardState.GONE) { flowOf(false) flowOf(false) } else if ( } else if ( SceneContainerFlag.isEnabled && transitionState == Scenes.Gone SceneContainerFlag.isEnabled && transitionState == Scenes.Gone Loading packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractor.kt +16 −4 Original line number Original line Diff line number Diff line Loading @@ -40,12 +40,14 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.res.R import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.securelockdevice.domain.interactor.SecureLockDeviceInteractor import com.android.systemui.shade.PulsingGestureListener import com.android.systemui.shade.PulsingGestureListener import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper import com.android.systemui.util.time.SystemClock import com.android.systemui.util.time.SystemClock import dagger.Lazy import javax.inject.Inject import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.Job Loading Loading @@ -83,6 +85,7 @@ constructor( private val powerManager: PowerManager, private val powerManager: PowerManager, private val systemClock: SystemClock, private val systemClock: SystemClock, private val pointerDeviceRepository: PointerDeviceRepository, private val pointerDeviceRepository: PointerDeviceRepository, secureLockDeviceInteractor: Lazy<SecureLockDeviceInteractor>, ) { ) { private val _udfpsAccessibilityOverlayBounds: MutableStateFlow<Rect?> = MutableStateFlow(null) private val _udfpsAccessibilityOverlayBounds: MutableStateFlow<Rect?> = MutableStateFlow(null) Loading @@ -100,8 +103,14 @@ constructor( combine( combine( transitionInteractor.isFinishedIn(KeyguardState.LOCKSCREEN), transitionInteractor.isFinishedIn(KeyguardState.LOCKSCREEN), repository.isQuickSettingsVisible, repository.isQuickSettingsVisible, ) { isFullyTransitionedToLockScreen, isQuickSettingsVisible -> secureLockDeviceInteractor.get().isSecureLockDeviceEnabled, isFullyTransitionedToLockScreen && !isQuickSettingsVisible ) { isFullyTransitionedToLockScreen, isQuickSettingsVisible, isSecureLockDeviceEnabled -> isFullyTransitionedToLockScreen && !isQuickSettingsVisible && !isSecureLockDeviceEnabled } } } else { } else { flowOf(false) flowOf(false) Loading @@ -119,13 +128,16 @@ constructor( transitionInteractor.transitionValue(KeyguardState.LOCKSCREEN), transitionInteractor.transitionValue(KeyguardState.LOCKSCREEN), repository.isQuickSettingsVisible, repository.isQuickSettingsVisible, isDoubleTapSettingEnabled(), isDoubleTapSettingEnabled(), secureLockDeviceInteractor.get().isSecureLockDeviceEnabled, ) { ) { isFullyTransitionedToLockScreen, isFullyTransitionedToLockScreen, isQuickSettingsVisible, isQuickSettingsVisible, isDoubleTapSettingEnabled -> isDoubleTapSettingEnabled, isSecureLockDeviceEnabled -> isFullyTransitionedToLockScreen == 1f && isFullyTransitionedToLockScreen == 1f && !isQuickSettingsVisible && !isQuickSettingsVisible && isDoubleTapSettingEnabled isDoubleTapSettingEnabled && !isSecureLockDeviceEnabled } } } else { } else { flowOf(false) flowOf(false) Loading packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/domain/interactor/AlternateBouncerInteractorKosmos.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInterac import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor val Kosmos.alternateBouncerInteractor: AlternateBouncerInteractor by val Kosmos.alternateBouncerInteractor: AlternateBouncerInteractor by Kosmos.Fixture { Kosmos.Fixture { Loading @@ -37,6 +38,7 @@ val Kosmos.alternateBouncerInteractor: AlternateBouncerInteractor by scope = testScope.backgroundScope, scope = testScope.backgroundScope, sceneInteractor = { sceneInteractor }, sceneInteractor = { sceneInteractor }, displayStateInteractor = { displayStateInteractor }, displayStateInteractor = { displayStateInteractor }, secureLockDeviceInteractor = { secureLockDeviceInteractor }, ) ) } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/AlternateBouncerInteractorTest.kt +16 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.bouncer.domain.interactor package com.android.systemui.bouncer.domain.interactor import android.platform.test.annotations.EnableFlags import android.security.Flags.FLAG_SECURE_LOCK_DEVICE import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase Loading @@ -31,9 +33,11 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.securelockdevice.data.repository.fakeSecureLockDeviceRepository import com.android.systemui.testKosmos import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue Loading Loading @@ -86,6 +90,18 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { assertThat(canShowAlternateBouncer).isFalse() assertThat(canShowAlternateBouncer).isFalse() } } @EnableFlags(FLAG_SECURE_LOCK_DEVICE) @Test fun canShowAlternateBouncerForFingerprint_falseDuringSecureLockDevice() = kosmos.testScope.runTest { kosmos.givenAlternateBouncerSupported() val canShowAlternateBouncer by collectLastValue(underTest.canShowAlternateBouncer) kosmos.fakeSecureLockDeviceRepository.onSecureLockDeviceEnabled() runCurrent() assertThat(canShowAlternateBouncer).isFalse() } @Test @Test fun hide_wasPreviouslyShowing() { fun hide_wasPreviouslyShowing() { kosmos.keyguardBouncerRepository.setAlternateVisible(true) kosmos.keyguardBouncerRepository.setAlternateVisible(true) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -44,6 +44,7 @@ import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.res.R import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor import com.android.systemui.shade.pulsingGestureListener import com.android.systemui.shade.pulsingGestureListener import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager Loading Loading @@ -443,6 +444,7 @@ class KeyguardTouchHandlingInteractorTest : SysuiTestCase() { powerManager = powerManager, powerManager = powerManager, systemClock = kosmos.fakeSystemClock, systemClock = kosmos.fakeSystemClock, pointerDeviceRepository = kosmos.pointerDeviceRepository, pointerDeviceRepository = kosmos.pointerDeviceRepository, secureLockDeviceInteractor = { kosmos.secureLockDeviceInteractor }, ) ) setUpState() setUpState() } } Loading
packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/AlternateBouncerInteractor.kt +9 −3 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.securelockdevice.domain.interactor.SecureLockDeviceInteractor import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import dagger.Lazy import dagger.Lazy import javax.inject.Inject import javax.inject.Inject Loading Loading @@ -60,6 +61,7 @@ constructor( keyguardTransitionInteractor: Lazy<KeyguardTransitionInteractor>, keyguardTransitionInteractor: Lazy<KeyguardTransitionInteractor>, displayStateInteractor: Lazy<DisplayStateInteractor>, displayStateInteractor: Lazy<DisplayStateInteractor>, sceneInteractor: Lazy<SceneInteractor>, sceneInteractor: Lazy<SceneInteractor>, secureLockDeviceInteractor: Lazy<SecureLockDeviceInteractor>, @Application scope: CoroutineScope, @Application scope: CoroutineScope, ) { ) { private var receivedDownTouch = false private var receivedDownTouch = false Loading Loading @@ -105,10 +107,14 @@ constructor( combine( combine( keyguardTransitionInteractor.get().currentKeyguardState, keyguardTransitionInteractor.get().currentKeyguardState, sceneInteractor.get().currentScene, sceneInteractor.get().currentScene, ::Pair, secureLockDeviceInteractor.get().isSecureLockDeviceEnabled, ::Triple, ) ) .flatMapLatest { (currentKeyguardState, transitionState) -> .flatMapLatest { if (currentKeyguardState == KeyguardState.GONE) { (currentKeyguardState, transitionState, secureLockDeviceEnabled) -> if (secureLockDeviceEnabled) { flowOf(false) } else if (currentKeyguardState == KeyguardState.GONE) { flowOf(false) flowOf(false) } else if ( } else if ( SceneContainerFlag.isEnabled && transitionState == Scenes.Gone SceneContainerFlag.isEnabled && transitionState == Scenes.Gone Loading
packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractor.kt +16 −4 Original line number Original line Diff line number Diff line Loading @@ -40,12 +40,14 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.res.R import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.securelockdevice.domain.interactor.SecureLockDeviceInteractor import com.android.systemui.shade.PulsingGestureListener import com.android.systemui.shade.PulsingGestureListener import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper import com.android.systemui.util.time.SystemClock import com.android.systemui.util.time.SystemClock import dagger.Lazy import javax.inject.Inject import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.Job Loading Loading @@ -83,6 +85,7 @@ constructor( private val powerManager: PowerManager, private val powerManager: PowerManager, private val systemClock: SystemClock, private val systemClock: SystemClock, private val pointerDeviceRepository: PointerDeviceRepository, private val pointerDeviceRepository: PointerDeviceRepository, secureLockDeviceInteractor: Lazy<SecureLockDeviceInteractor>, ) { ) { private val _udfpsAccessibilityOverlayBounds: MutableStateFlow<Rect?> = MutableStateFlow(null) private val _udfpsAccessibilityOverlayBounds: MutableStateFlow<Rect?> = MutableStateFlow(null) Loading @@ -100,8 +103,14 @@ constructor( combine( combine( transitionInteractor.isFinishedIn(KeyguardState.LOCKSCREEN), transitionInteractor.isFinishedIn(KeyguardState.LOCKSCREEN), repository.isQuickSettingsVisible, repository.isQuickSettingsVisible, ) { isFullyTransitionedToLockScreen, isQuickSettingsVisible -> secureLockDeviceInteractor.get().isSecureLockDeviceEnabled, isFullyTransitionedToLockScreen && !isQuickSettingsVisible ) { isFullyTransitionedToLockScreen, isQuickSettingsVisible, isSecureLockDeviceEnabled -> isFullyTransitionedToLockScreen && !isQuickSettingsVisible && !isSecureLockDeviceEnabled } } } else { } else { flowOf(false) flowOf(false) Loading @@ -119,13 +128,16 @@ constructor( transitionInteractor.transitionValue(KeyguardState.LOCKSCREEN), transitionInteractor.transitionValue(KeyguardState.LOCKSCREEN), repository.isQuickSettingsVisible, repository.isQuickSettingsVisible, isDoubleTapSettingEnabled(), isDoubleTapSettingEnabled(), secureLockDeviceInteractor.get().isSecureLockDeviceEnabled, ) { ) { isFullyTransitionedToLockScreen, isFullyTransitionedToLockScreen, isQuickSettingsVisible, isQuickSettingsVisible, isDoubleTapSettingEnabled -> isDoubleTapSettingEnabled, isSecureLockDeviceEnabled -> isFullyTransitionedToLockScreen == 1f && isFullyTransitionedToLockScreen == 1f && !isQuickSettingsVisible && !isQuickSettingsVisible && isDoubleTapSettingEnabled isDoubleTapSettingEnabled && !isSecureLockDeviceEnabled } } } else { } else { flowOf(false) flowOf(false) Loading
packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/domain/interactor/AlternateBouncerInteractorKosmos.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInterac import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor val Kosmos.alternateBouncerInteractor: AlternateBouncerInteractor by val Kosmos.alternateBouncerInteractor: AlternateBouncerInteractor by Kosmos.Fixture { Kosmos.Fixture { Loading @@ -37,6 +38,7 @@ val Kosmos.alternateBouncerInteractor: AlternateBouncerInteractor by scope = testScope.backgroundScope, scope = testScope.backgroundScope, sceneInteractor = { sceneInteractor }, sceneInteractor = { sceneInteractor }, displayStateInteractor = { displayStateInteractor }, displayStateInteractor = { displayStateInteractor }, secureLockDeviceInteractor = { secureLockDeviceInteractor }, ) ) } } Loading