Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.android.systemui.doze.DozeMachine import com.android.systemui.doze.DozeTransitionCallback import com.android.systemui.doze.DozeTransitionListener import com.android.systemui.dreams.DreamOverlayCallbackController import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.keyguard.shared.model.BiometricUnlockMode import com.android.systemui.keyguard.shared.model.BiometricUnlockSource import com.android.systemui.keyguard.shared.model.DozeStateModel Loading Loading @@ -288,6 +289,7 @@ class KeyguardRepositoryImplTest : SysuiTestCase() { } @Test @DisableSceneContainer fun dozeAmount() = testScope.runTest { val values = mutableListOf<Float>() Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +82 −18 Original line number Diff line number Diff line Loading @@ -29,15 +29,21 @@ import com.android.systemui.common.ui.data.repository.fakeConfigurationRepositor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.keyguardRepository import com.android.systemui.keyguard.shared.model.CameraLaunchType import com.android.systemui.keyguard.shared.model.DozeStateModel import com.android.systemui.keyguard.shared.model.DozeTransitionModel import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionState.STARTED import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest Loading Loading @@ -67,12 +73,11 @@ class KeyguardInteractorTest : SysuiTestCase() { private val testScope = kosmos.testScope private val repository by lazy { kosmos.fakeKeyguardRepository } private val sceneInteractor by lazy { kosmos.sceneInteractor } private val fromGoneTransitionInteractor by lazy { kosmos.fromGoneTransitionInteractor } private val commandQueue by lazy { kosmos.fakeCommandQueue } private val configRepository by lazy { kosmos.fakeConfigurationRepository } private val bouncerRepository by lazy { kosmos.keyguardBouncerRepository } private val shadeRepository by lazy { kosmos.shadeRepository } private val powerInteractor by lazy { kosmos.powerInteractor } private val keyguardRepository by lazy { kosmos.keyguardRepository } private val keyguardTransitionRepository by lazy { kosmos.fakeKeyguardTransitionRepository } private val transitionState: MutableStateFlow<ObservableTransitionState> = Loading Loading @@ -178,8 +183,8 @@ class KeyguardInteractorTest : SysuiTestCase() { assertThat(dismissAlpha).isEqualTo(1f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading @@ -204,8 +209,8 @@ class KeyguardInteractorTest : SysuiTestCase() { assertThat(dismissAlpha.size).isEqualTo(1) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading Loading @@ -266,13 +271,13 @@ class KeyguardInteractorTest : SysuiTestCase() { keyguardTransitionRepository.sendTransitionSteps( listOf( TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0f, transitionState = TransitionState.STARTED, transitionState = STARTED, ), TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0.1f, transitionState = TransitionState.RUNNING, Loading Loading @@ -302,7 +307,7 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository.setLegacyShadeExpansion(0f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, testScope, ) Loading @@ -324,8 +329,8 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository.setLegacyShadeExpansion(0f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading @@ -346,8 +351,8 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository.setLegacyShadeExpansion(1f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading @@ -370,13 +375,13 @@ class KeyguardInteractorTest : SysuiTestCase() { keyguardTransitionRepository.sendTransitionSteps( listOf( TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0f, transitionState = TransitionState.STARTED, transitionState = STARTED, ), TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0.1f, transitionState = TransitionState.RUNNING, Loading Loading @@ -468,4 +473,63 @@ class KeyguardInteractorTest : SysuiTestCase() { runCurrent() assertThat(isAnimate).isFalse() } @Test @EnableSceneContainer fun dozeAmount_updatedByAodTransitionWhenAodEnabled() = testScope.runTest { val dozeAmount by collectLastValue(underTest.dozeAmount) keyguardRepository.setAodAvailable(true) sendTransitionStep(TransitionStep(to = AOD, value = 0f, transitionState = STARTED)) assertThat(dozeAmount).isEqualTo(0f) sendTransitionStep(TransitionStep(to = AOD, value = 0.5f, transitionState = RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(to = AOD, value = 1f, transitionState = FINISHED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(AOD, LOCKSCREEN, 0f, STARTED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(AOD, LOCKSCREEN, 0.5f, RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(AOD, LOCKSCREEN, 1f, FINISHED)) assertThat(dozeAmount).isEqualTo(0f) } @Test @EnableSceneContainer fun dozeAmount_updatedByDozeTransitionWhenAodDisabled() = testScope.runTest { val dozeAmount by collectLastValue(underTest.dozeAmount) keyguardRepository.setAodAvailable(false) sendTransitionStep(TransitionStep(to = DOZING, value = 0f, transitionState = STARTED)) assertThat(dozeAmount).isEqualTo(0f) sendTransitionStep(TransitionStep(to = DOZING, value = 0.5f, transitionState = RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(to = DOZING, value = 1f, transitionState = FINISHED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(DOZING, LOCKSCREEN, 0f, STARTED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(DOZING, LOCKSCREEN, 0.5f, RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(DOZING, LOCKSCREEN, 1f, FINISHED)) assertThat(dozeAmount).isEqualTo(0f) } private suspend fun sendTransitionStep(step: TransitionStep) { keyguardTransitionRepository.sendTransitionStep(step) testScope.runCurrent() } } packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt +35 −5 Original line number Diff line number Diff line Loading @@ -27,11 +27,18 @@ import com.android.systemui.doze.util.BurnInHelperWrapper import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.data.repository.FakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionState.STARTED import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.PowerInteractorFactory import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.data.repository.fakeShadeRepository import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.interactor.shadeLockscreenInteractor Loading Loading @@ -62,6 +69,7 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( val kosmos = testKosmos() val testScope = kosmos.testScope val keyguardRepository = kosmos.fakeKeyguardRepository val keyguardTransitionRepository by lazy { kosmos.fakeKeyguardTransitionRepository } val shadeRepository = kosmos.fakeShadeRepository val shadeTestUtil by lazy { kosmos.shadeTestUtil } Loading Loading @@ -132,8 +140,15 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( assertThat(burnInOffsets?.x).isEqualTo(0) // WHEN we're in the middle of the doze amount change if (SceneContainerFlag.isEnabled) { sendTransitionSteps( TransitionStep(to = DOZING, value = 0.0f, transitionState = STARTED), TransitionStep(to = DOZING, value = 0.5f, transitionState = RUNNING), ) } else { keyguardRepository.setDozeAmount(.50f) runCurrent() } // THEN burn in is updated (between 0 and the full offset) assertThat(burnInOffsets?.progress).isGreaterThan(0f) Loading @@ -144,8 +159,14 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( assertThat(burnInOffsets?.x).isLessThan(burnInXOffset) // WHEN we're fully dozing if (SceneContainerFlag.isEnabled) { sendTransitionSteps( TransitionStep(to = DOZING, value = 1.0f, transitionState = FINISHED) ) } else { keyguardRepository.setDozeAmount(1f) runCurrent() } // THEN burn in offsets are updated to final current values (for the given time) assertThat(burnInOffsets?.progress).isEqualTo(burnInProgress) Loading Loading @@ -217,7 +238,9 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( } private fun setAwake() { if (!SceneContainerFlag.isEnabled) { keyguardRepository.setDozeAmount(0f) } keyguardRepository.dozeTimeTick() bouncerRepository.setAlternateVisible(false) Loading @@ -225,4 +248,11 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( bouncerRepository.setPrimaryShow(false) powerInteractor.setAwakeForTest() } private suspend fun sendTransitionSteps(vararg steps: TransitionStep) { steps.forEach { step -> keyguardTransitionRepository.sendTransitionStep(step) testScope.runCurrent() } } } packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.systemui.jank.interactionJankMonitor import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.keyguardInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus Loading Loading @@ -107,6 +108,7 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest uiEventLogger, { kosmos.interactionJankMonitor }, JavaAdapter(testScope.backgroundScope), { kosmos.keyguardInteractor }, { kosmos.keyguardTransitionInteractor }, { kosmos.shadeInteractor }, { kosmos.deviceUnlockedInteractor }, Loading Loading @@ -139,6 +141,7 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest } @Test @DisableSceneContainer fun testSetDozeAmountInternal_onlySetsOnce() { val listener = mock(StatusBarStateController.StateListener::class.java) underTest.addCallback(listener) Loading Loading @@ -190,6 +193,7 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest } @Test @DisableSceneContainer fun testSetDozeAmount_immediatelyChangesDozeAmount_lockscreenTransitionFromAod() { // Put controller in AOD state underTest.setAndInstrumentDozeAmount(null, 1f, false) Loading packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt +27 −11 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.mapLatest Loading Loading @@ -486,7 +487,11 @@ constructor( override val isDreaming: MutableStateFlow<Boolean> = MutableStateFlow(false) override val linearDozeAmount: Flow<Float> = conflatedCallbackFlow { private val _preSceneLinearDozeAmount: Flow<Float> = if (SceneContainerFlag.isEnabled) { emptyFlow() } else { conflatedCallbackFlow { val callback = object : StatusBarStateController.StateListener { override fun onDozeAmountChanged(linear: Float, eased: Float) { Loading @@ -495,10 +500,21 @@ constructor( } statusBarStateController.addCallback(callback) trySendWithFailureLogging(statusBarStateController.dozeAmount, TAG, "initial dozeAmount") trySendWithFailureLogging( statusBarStateController.dozeAmount, TAG, "initial dozeAmount" ) awaitClose { statusBarStateController.removeCallback(callback) } } } override val linearDozeAmount: Flow<Float> get() { SceneContainerFlag.assertInLegacyMode() return _preSceneLinearDozeAmount } override val dozeTransitionModel: Flow<DozeTransitionModel> = conflatedCallbackFlow { val callback = Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.android.systemui.doze.DozeMachine import com.android.systemui.doze.DozeTransitionCallback import com.android.systemui.doze.DozeTransitionListener import com.android.systemui.dreams.DreamOverlayCallbackController import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.keyguard.shared.model.BiometricUnlockMode import com.android.systemui.keyguard.shared.model.BiometricUnlockSource import com.android.systemui.keyguard.shared.model.DozeStateModel Loading Loading @@ -288,6 +289,7 @@ class KeyguardRepositoryImplTest : SysuiTestCase() { } @Test @DisableSceneContainer fun dozeAmount() = testScope.runTest { val values = mutableListOf<Float>() Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +82 −18 Original line number Diff line number Diff line Loading @@ -29,15 +29,21 @@ import com.android.systemui.common.ui.data.repository.fakeConfigurationRepositor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.keyguardRepository import com.android.systemui.keyguard.shared.model.CameraLaunchType import com.android.systemui.keyguard.shared.model.DozeStateModel import com.android.systemui.keyguard.shared.model.DozeTransitionModel import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionState.STARTED import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest Loading Loading @@ -67,12 +73,11 @@ class KeyguardInteractorTest : SysuiTestCase() { private val testScope = kosmos.testScope private val repository by lazy { kosmos.fakeKeyguardRepository } private val sceneInteractor by lazy { kosmos.sceneInteractor } private val fromGoneTransitionInteractor by lazy { kosmos.fromGoneTransitionInteractor } private val commandQueue by lazy { kosmos.fakeCommandQueue } private val configRepository by lazy { kosmos.fakeConfigurationRepository } private val bouncerRepository by lazy { kosmos.keyguardBouncerRepository } private val shadeRepository by lazy { kosmos.shadeRepository } private val powerInteractor by lazy { kosmos.powerInteractor } private val keyguardRepository by lazy { kosmos.keyguardRepository } private val keyguardTransitionRepository by lazy { kosmos.fakeKeyguardTransitionRepository } private val transitionState: MutableStateFlow<ObservableTransitionState> = Loading Loading @@ -178,8 +183,8 @@ class KeyguardInteractorTest : SysuiTestCase() { assertThat(dismissAlpha).isEqualTo(1f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading @@ -204,8 +209,8 @@ class KeyguardInteractorTest : SysuiTestCase() { assertThat(dismissAlpha.size).isEqualTo(1) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading Loading @@ -266,13 +271,13 @@ class KeyguardInteractorTest : SysuiTestCase() { keyguardTransitionRepository.sendTransitionSteps( listOf( TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0f, transitionState = TransitionState.STARTED, transitionState = STARTED, ), TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0.1f, transitionState = TransitionState.RUNNING, Loading Loading @@ -302,7 +307,7 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository.setLegacyShadeExpansion(0f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, testScope, ) Loading @@ -324,8 +329,8 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository.setLegacyShadeExpansion(0f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading @@ -346,8 +351,8 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository.setLegacyShadeExpansion(1f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, from = AOD, to = LOCKSCREEN, testScope, ) Loading @@ -370,13 +375,13 @@ class KeyguardInteractorTest : SysuiTestCase() { keyguardTransitionRepository.sendTransitionSteps( listOf( TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0f, transitionState = TransitionState.STARTED, transitionState = STARTED, ), TransitionStep( from = KeyguardState.AOD, from = AOD, to = KeyguardState.GONE, value = 0.1f, transitionState = TransitionState.RUNNING, Loading Loading @@ -468,4 +473,63 @@ class KeyguardInteractorTest : SysuiTestCase() { runCurrent() assertThat(isAnimate).isFalse() } @Test @EnableSceneContainer fun dozeAmount_updatedByAodTransitionWhenAodEnabled() = testScope.runTest { val dozeAmount by collectLastValue(underTest.dozeAmount) keyguardRepository.setAodAvailable(true) sendTransitionStep(TransitionStep(to = AOD, value = 0f, transitionState = STARTED)) assertThat(dozeAmount).isEqualTo(0f) sendTransitionStep(TransitionStep(to = AOD, value = 0.5f, transitionState = RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(to = AOD, value = 1f, transitionState = FINISHED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(AOD, LOCKSCREEN, 0f, STARTED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(AOD, LOCKSCREEN, 0.5f, RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(AOD, LOCKSCREEN, 1f, FINISHED)) assertThat(dozeAmount).isEqualTo(0f) } @Test @EnableSceneContainer fun dozeAmount_updatedByDozeTransitionWhenAodDisabled() = testScope.runTest { val dozeAmount by collectLastValue(underTest.dozeAmount) keyguardRepository.setAodAvailable(false) sendTransitionStep(TransitionStep(to = DOZING, value = 0f, transitionState = STARTED)) assertThat(dozeAmount).isEqualTo(0f) sendTransitionStep(TransitionStep(to = DOZING, value = 0.5f, transitionState = RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(to = DOZING, value = 1f, transitionState = FINISHED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(DOZING, LOCKSCREEN, 0f, STARTED)) assertThat(dozeAmount).isEqualTo(1f) sendTransitionStep(TransitionStep(DOZING, LOCKSCREEN, 0.5f, RUNNING)) assertThat(dozeAmount).isEqualTo(0.5f) sendTransitionStep(TransitionStep(DOZING, LOCKSCREEN, 1f, FINISHED)) assertThat(dozeAmount).isEqualTo(0f) } private suspend fun sendTransitionStep(step: TransitionStep) { keyguardTransitionRepository.sendTransitionStep(step) testScope.runCurrent() } }
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt +35 −5 Original line number Diff line number Diff line Loading @@ -27,11 +27,18 @@ import com.android.systemui.doze.util.BurnInHelperWrapper import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.data.repository.FakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionState.STARTED import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.PowerInteractorFactory import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.data.repository.fakeShadeRepository import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.interactor.shadeLockscreenInteractor Loading Loading @@ -62,6 +69,7 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( val kosmos = testKosmos() val testScope = kosmos.testScope val keyguardRepository = kosmos.fakeKeyguardRepository val keyguardTransitionRepository by lazy { kosmos.fakeKeyguardTransitionRepository } val shadeRepository = kosmos.fakeShadeRepository val shadeTestUtil by lazy { kosmos.shadeTestUtil } Loading Loading @@ -132,8 +140,15 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( assertThat(burnInOffsets?.x).isEqualTo(0) // WHEN we're in the middle of the doze amount change if (SceneContainerFlag.isEnabled) { sendTransitionSteps( TransitionStep(to = DOZING, value = 0.0f, transitionState = STARTED), TransitionStep(to = DOZING, value = 0.5f, transitionState = RUNNING), ) } else { keyguardRepository.setDozeAmount(.50f) runCurrent() } // THEN burn in is updated (between 0 and the full offset) assertThat(burnInOffsets?.progress).isGreaterThan(0f) Loading @@ -144,8 +159,14 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( assertThat(burnInOffsets?.x).isLessThan(burnInXOffset) // WHEN we're fully dozing if (SceneContainerFlag.isEnabled) { sendTransitionSteps( TransitionStep(to = DOZING, value = 1.0f, transitionState = FINISHED) ) } else { keyguardRepository.setDozeAmount(1f) runCurrent() } // THEN burn in offsets are updated to final current values (for the given time) assertThat(burnInOffsets?.progress).isEqualTo(burnInProgress) Loading Loading @@ -217,7 +238,9 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( } private fun setAwake() { if (!SceneContainerFlag.isEnabled) { keyguardRepository.setDozeAmount(0f) } keyguardRepository.dozeTimeTick() bouncerRepository.setAlternateVisible(false) Loading @@ -225,4 +248,11 @@ class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase( bouncerRepository.setPrimaryShow(false) powerInteractor.setAwakeForTest() } private suspend fun sendTransitionSteps(vararg steps: TransitionStep) { steps.forEach { step -> keyguardTransitionRepository.sendTransitionStep(step) testScope.runCurrent() } } }
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.systemui.jank.interactionJankMonitor import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.keyguardInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus Loading Loading @@ -107,6 +108,7 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest uiEventLogger, { kosmos.interactionJankMonitor }, JavaAdapter(testScope.backgroundScope), { kosmos.keyguardInteractor }, { kosmos.keyguardTransitionInteractor }, { kosmos.shadeInteractor }, { kosmos.deviceUnlockedInteractor }, Loading Loading @@ -139,6 +141,7 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest } @Test @DisableSceneContainer fun testSetDozeAmountInternal_onlySetsOnce() { val listener = mock(StatusBarStateController.StateListener::class.java) underTest.addCallback(listener) Loading Loading @@ -190,6 +193,7 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest } @Test @DisableSceneContainer fun testSetDozeAmount_immediatelyChangesDozeAmount_lockscreenTransitionFromAod() { // Put controller in AOD state underTest.setAndInstrumentDozeAmount(null, 1f, false) Loading
packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt +27 −11 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.mapLatest Loading Loading @@ -486,7 +487,11 @@ constructor( override val isDreaming: MutableStateFlow<Boolean> = MutableStateFlow(false) override val linearDozeAmount: Flow<Float> = conflatedCallbackFlow { private val _preSceneLinearDozeAmount: Flow<Float> = if (SceneContainerFlag.isEnabled) { emptyFlow() } else { conflatedCallbackFlow { val callback = object : StatusBarStateController.StateListener { override fun onDozeAmountChanged(linear: Float, eased: Float) { Loading @@ -495,10 +500,21 @@ constructor( } statusBarStateController.addCallback(callback) trySendWithFailureLogging(statusBarStateController.dozeAmount, TAG, "initial dozeAmount") trySendWithFailureLogging( statusBarStateController.dozeAmount, TAG, "initial dozeAmount" ) awaitClose { statusBarStateController.removeCallback(callback) } } } override val linearDozeAmount: Flow<Float> get() { SceneContainerFlag.assertInLegacyMode() return _preSceneLinearDozeAmount } override val dozeTransitionModel: Flow<DozeTransitionModel> = conflatedCallbackFlow { val callback = Loading