Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt +2 −29 Original line number Diff line number Diff line Loading @@ -19,13 +19,13 @@ package com.android.systemui.keyguard.ui.viewmodel import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength import com.android.systemui.coroutines.collectValues import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository 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.DREAMING Loading Loading @@ -198,33 +198,6 @@ class DreamingToLockscreenTransitionViewModelTest : SysuiTestCase() { values.forEach { assertThat(it).isEqualTo(1f) } } @Test fun deviceEntryBackground_noUdfps_noUpdates() = testScope.runTest { fingerprintPropertyRepository.setProperties( sensorId = 0, strength = SensorStrength.STRONG, sensorType = FingerprintSensorType.REAR, sensorLocations = emptyMap(), ) val values by collectValues(underTest.deviceEntryBackgroundViewAlpha) keyguardTransitionRepository.sendTransitionSteps( listOf( step(0f, TransitionState.STARTED), step(0f), step(0.1f), step(0.2f), step(0.3f), step(1f), ), testScope, ) assertThat(values.size).isEqualTo(0) // no updates } @Test fun lockscreenTranslationY() = testScope.runTest { Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt +7 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewM import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.LockscreenToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGoneTransitionViewModel Loading Loading @@ -114,6 +115,12 @@ abstract class DeviceEntryIconTransitionModule { @IntoSet abstract fun goneToAod(impl: GoneToAodTransitionViewModel): DeviceEntryIconTransition @Binds @IntoSet abstract fun goneToLockscreen( impl: GoneToLockscreenTransitionViewModel ): DeviceEntryIconTransition @Binds @IntoSet abstract fun occludedToAod(impl: OccludedToAodTransitionViewModel): DeviceEntryIconTransition Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModel.kt +5 −15 Original line number Diff line number Diff line Loading @@ -29,8 +29,6 @@ import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.flatMapLatest /** * Breaks down AOD->LOCKSCREEN transition into discrete steps for corresponding views to consume. Loading Loading @@ -84,19 +82,11 @@ constructor( ) val deviceEntryBackgroundViewAlpha: Flow<Float> = deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfps -> if (isUdfps) { // fade in transitionAnimation.sharedFlow( duration = 250.milliseconds, onStep = { it }, onFinish = { 1f }, ) } else { // background view isn't visible, so return an empty flow emptyFlow() } } override val deviceEntryParentViewAlpha: Flow<Float> = lockscreenAlpha } packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt +41 −21 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onStart Loading @@ -33,6 +35,7 @@ class DeviceEntryBackgroundViewModel @Inject constructor( val context: Context, val deviceEntryIconViewModel: DeviceEntryIconViewModel, configurationInteractor: ConfigurationInteractor, lockscreenToAodTransitionViewModel: LockscreenToAodTransitionViewModel, aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel, Loading @@ -42,11 +45,17 @@ constructor( occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel, dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel, alternateBouncerToAodTransitionViewModel: AlternateBouncerToAodTransitionViewModel, goneToLockscreenTransitionViewModel: GoneToLockscreenTransitionViewModel, ) { val color: Flow<Int> = deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground -> if (useBackground) { configurationInteractor.onAnyConfigurationChange .map { Utils.getColorAttrDefaultColor(context, com.android.internal.R.attr.colorSurface) Utils.getColorAttrDefaultColor( context, com.android.internal.R.attr.colorSurface ) } .onStart { emit( Loading @@ -56,7 +65,13 @@ constructor( ) ) } } else { flowOf(0) } } val alpha: Flow<Float> = deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground -> if (useBackground) { setOf( lockscreenToAodTransitionViewModel.deviceEntryBackgroundViewAlpha, aodToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, Loading @@ -66,6 +81,11 @@ constructor( occludedToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, dreamingToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, alternateBouncerToAodTransitionViewModel.deviceEntryBackgroundViewAlpha, goneToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, ) .merge() } else { flowOf(0f) } } } packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModel.kt +1 −11 Original line number Diff line number Diff line Loading @@ -30,9 +30,7 @@ import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flatMapLatest /** * Breaks down DREAMING->LOCKSCREEN transition into discrete steps for corresponding views to Loading Loading @@ -107,14 +105,6 @@ constructor( onCancel = { 0f }, ) val deviceEntryBackgroundViewAlpha = deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfps -> if (isUdfps) { // immediately show; will fade in with deviceEntryParentViewAlpha transitionAnimation.immediatelyTransitionTo(1f) } else { emptyFlow() } } val deviceEntryBackgroundViewAlpha = transitionAnimation.immediatelyTransitionTo(1f) override val deviceEntryParentViewAlpha = lockscreenAlpha } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt +2 −29 Original line number Diff line number Diff line Loading @@ -19,13 +19,13 @@ package com.android.systemui.keyguard.ui.viewmodel import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength import com.android.systemui.coroutines.collectValues import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository 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.DREAMING Loading Loading @@ -198,33 +198,6 @@ class DreamingToLockscreenTransitionViewModelTest : SysuiTestCase() { values.forEach { assertThat(it).isEqualTo(1f) } } @Test fun deviceEntryBackground_noUdfps_noUpdates() = testScope.runTest { fingerprintPropertyRepository.setProperties( sensorId = 0, strength = SensorStrength.STRONG, sensorType = FingerprintSensorType.REAR, sensorLocations = emptyMap(), ) val values by collectValues(underTest.deviceEntryBackgroundViewAlpha) keyguardTransitionRepository.sendTransitionSteps( listOf( step(0f, TransitionState.STARTED), step(0f), step(0.1f), step(0.2f), step(0.3f), step(1f), ), testScope, ) assertThat(values.size).isEqualTo(0) // no updates } @Test fun lockscreenTranslationY() = testScope.runTest { Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt +7 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewM import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.LockscreenToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGoneTransitionViewModel Loading Loading @@ -114,6 +115,12 @@ abstract class DeviceEntryIconTransitionModule { @IntoSet abstract fun goneToAod(impl: GoneToAodTransitionViewModel): DeviceEntryIconTransition @Binds @IntoSet abstract fun goneToLockscreen( impl: GoneToLockscreenTransitionViewModel ): DeviceEntryIconTransition @Binds @IntoSet abstract fun occludedToAod(impl: OccludedToAodTransitionViewModel): DeviceEntryIconTransition Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModel.kt +5 −15 Original line number Diff line number Diff line Loading @@ -29,8 +29,6 @@ import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.flatMapLatest /** * Breaks down AOD->LOCKSCREEN transition into discrete steps for corresponding views to consume. Loading Loading @@ -84,19 +82,11 @@ constructor( ) val deviceEntryBackgroundViewAlpha: Flow<Float> = deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfps -> if (isUdfps) { // fade in transitionAnimation.sharedFlow( duration = 250.milliseconds, onStep = { it }, onFinish = { 1f }, ) } else { // background view isn't visible, so return an empty flow emptyFlow() } } override val deviceEntryParentViewAlpha: Flow<Float> = lockscreenAlpha }
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt +41 −21 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onStart Loading @@ -33,6 +35,7 @@ class DeviceEntryBackgroundViewModel @Inject constructor( val context: Context, val deviceEntryIconViewModel: DeviceEntryIconViewModel, configurationInteractor: ConfigurationInteractor, lockscreenToAodTransitionViewModel: LockscreenToAodTransitionViewModel, aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel, Loading @@ -42,11 +45,17 @@ constructor( occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel, dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel, alternateBouncerToAodTransitionViewModel: AlternateBouncerToAodTransitionViewModel, goneToLockscreenTransitionViewModel: GoneToLockscreenTransitionViewModel, ) { val color: Flow<Int> = deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground -> if (useBackground) { configurationInteractor.onAnyConfigurationChange .map { Utils.getColorAttrDefaultColor(context, com.android.internal.R.attr.colorSurface) Utils.getColorAttrDefaultColor( context, com.android.internal.R.attr.colorSurface ) } .onStart { emit( Loading @@ -56,7 +65,13 @@ constructor( ) ) } } else { flowOf(0) } } val alpha: Flow<Float> = deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground -> if (useBackground) { setOf( lockscreenToAodTransitionViewModel.deviceEntryBackgroundViewAlpha, aodToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, Loading @@ -66,6 +81,11 @@ constructor( occludedToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, dreamingToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, alternateBouncerToAodTransitionViewModel.deviceEntryBackgroundViewAlpha, goneToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha, ) .merge() } else { flowOf(0f) } } }
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModel.kt +1 −11 Original line number Diff line number Diff line Loading @@ -30,9 +30,7 @@ import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flatMapLatest /** * Breaks down DREAMING->LOCKSCREEN transition into discrete steps for corresponding views to Loading Loading @@ -107,14 +105,6 @@ constructor( onCancel = { 0f }, ) val deviceEntryBackgroundViewAlpha = deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfps -> if (isUdfps) { // immediately show; will fade in with deviceEntryParentViewAlpha transitionAnimation.immediatelyTransitionTo(1f) } else { emptyFlow() } } val deviceEntryBackgroundViewAlpha = transitionAnimation.immediatelyTransitionTo(1f) override val deviceEntryParentViewAlpha = lockscreenAlpha }