Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt +17 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.statusbar.sysuiStatusBarStateController import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -51,6 +52,7 @@ class AlternateBouncerToGoneTransitionViewModelTest : SysuiTestCase() { } private val testScope = kosmos.testScope private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController private val underTest by lazy { kosmos.alternateBouncerToGoneTransitionViewModel } @Test Loading Loading @@ -111,6 +113,21 @@ class AlternateBouncerToGoneTransitionViewModelTest : SysuiTestCase() { assertThat(alpha).isEqualTo(0f) } @Test fun notificationAlpha_leaveShadeOpen() = testScope.runTest { val values by collectValues(underTest.notificationAlpha(ViewStateAccessor())) runCurrent() sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(true) keyguardTransitionRepository.sendTransitionStep(step(0f, TransitionState.STARTED)) keyguardTransitionRepository.sendTransitionStep(step(1f)) assertThat(values.size).isEqualTo(2) values.forEach { assertThat(it).isEqualTo(1f) } } @Test fun lockscreenAlpha_zeroInitialAlpha() = testScope.runTest { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt +16 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.statusbar.sysuiStatusBarStateController import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -40,6 +41,7 @@ class LockscreenToGoneTransitionViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val repository = kosmos.fakeKeyguardTransitionRepository private val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController private val underTest = kosmos.lockscreenToGoneTransitionViewModel @Test Loading Loading @@ -90,6 +92,20 @@ class LockscreenToGoneTransitionViewModelTest : SysuiTestCase() { assertThat(alpha).isEqualTo(0f) } @Test fun notificationAlpha_leaveShadeOpen() = testScope.runTest { val values by collectValues(underTest.notificationAlpha(ViewStateAccessor())) sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(true) repository.sendTransitionStep(step(0f, TransitionState.STARTED)) repository.sendTransitionStep(step(1f)) assertThat(values.size).isEqualTo(2) values.forEach { assertThat(it).isEqualTo(1f) } } private fun step( value: Float, state: TransitionState = TransitionState.RUNNING Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModel.kt +22 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCE import com.android.systemui.keyguard.shared.model.ScrimAlpha import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition import com.android.systemui.statusbar.SysuiStatusBarStateController import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -40,6 +41,7 @@ class AlternateBouncerToGoneTransitionViewModel constructor( bouncerToGoneFlows: BouncerToGoneFlows, animationFlow: KeyguardTransitionAnimationFlow, private val statusBarStateController: SysuiStatusBarStateController, ) : DeviceEntryIconTransition { private val transitionAnimation = animationFlow.setup( Loading @@ -59,6 +61,26 @@ constructor( ) } fun notificationAlpha(viewState: ViewStateAccessor): Flow<Float> { var startAlpha = 1f var leaveShadeOpen = false return transitionAnimation.sharedFlow( duration = 200.milliseconds, onStart = { leaveShadeOpen = statusBarStateController.leaveOpenOnKeyguardHide() startAlpha = viewState.alpha() }, onStep = { if (leaveShadeOpen) { 1f } else { MathUtils.lerp(startAlpha, 0f, it) } }, ) } /** Scrim alpha values */ val scrimAlpha: Flow<ScrimAlpha> = bouncerToGoneFlows.scrimAlpha(TO_GONE_DURATION, ALTERNATE_BOUNCER) Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModel.kt +22 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow.FlowBuilder import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition import com.android.systemui.statusbar.SysuiStatusBarStateController import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -37,6 +38,7 @@ class LockscreenToGoneTransitionViewModel @Inject constructor( animationFlow: KeyguardTransitionAnimationFlow, private val statusBarStateController: SysuiStatusBarStateController, ) : DeviceEntryIconTransition { private val transitionAnimation: FlowBuilder = Loading @@ -54,6 +56,26 @@ constructor( onCancel = { 1f }, ) fun notificationAlpha(viewState: ViewStateAccessor): Flow<Float> { var startAlpha = 1f var leaveShadeOpen = false return transitionAnimation.sharedFlow( duration = 200.milliseconds, onStart = { leaveShadeOpen = statusBarStateController.leaveOpenOnKeyguardHide() startAlpha = viewState.alpha() }, onStep = { if (leaveShadeOpen) { 1f } else { MathUtils.lerp(startAlpha, 0f, it) } }, ) } fun lockscreenAlpha(viewState: ViewStateAccessor): Flow<Float> { var startAlpha = 1f return transitionAnimation.sharedFlow( Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt +2 −2 Original line number Diff line number Diff line Loading @@ -445,7 +445,7 @@ constructor( // All transition view models are mututally exclusive, and safe to merge val alphaTransitions = merge( alternateBouncerToGoneTransitionViewModel.lockscreenAlpha(viewState), alternateBouncerToGoneTransitionViewModel.notificationAlpha(viewState), aodToLockscreenTransitionViewModel.notificationAlpha, aodToOccludedTransitionViewModel.lockscreenAlpha(viewState), dozingToLockscreenTransitionViewModel.lockscreenAlpha, Loading @@ -455,7 +455,7 @@ constructor( goneToDreamingTransitionViewModel.lockscreenAlpha, goneToDozingTransitionViewModel.lockscreenAlpha, lockscreenToDreamingTransitionViewModel.lockscreenAlpha, lockscreenToGoneTransitionViewModel.lockscreenAlpha(viewState), lockscreenToGoneTransitionViewModel.notificationAlpha(viewState), lockscreenToOccludedTransitionViewModel.lockscreenAlpha, lockscreenToPrimaryBouncerTransitionViewModel.lockscreenAlpha, occludedToAodTransitionViewModel.lockscreenAlpha, Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt +17 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.statusbar.sysuiStatusBarStateController import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -51,6 +52,7 @@ class AlternateBouncerToGoneTransitionViewModelTest : SysuiTestCase() { } private val testScope = kosmos.testScope private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController private val underTest by lazy { kosmos.alternateBouncerToGoneTransitionViewModel } @Test Loading Loading @@ -111,6 +113,21 @@ class AlternateBouncerToGoneTransitionViewModelTest : SysuiTestCase() { assertThat(alpha).isEqualTo(0f) } @Test fun notificationAlpha_leaveShadeOpen() = testScope.runTest { val values by collectValues(underTest.notificationAlpha(ViewStateAccessor())) runCurrent() sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(true) keyguardTransitionRepository.sendTransitionStep(step(0f, TransitionState.STARTED)) keyguardTransitionRepository.sendTransitionStep(step(1f)) assertThat(values.size).isEqualTo(2) values.forEach { assertThat(it).isEqualTo(1f) } } @Test fun lockscreenAlpha_zeroInitialAlpha() = testScope.runTest { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt +16 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.kosmos.testScope import com.android.systemui.statusbar.sysuiStatusBarStateController import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -40,6 +41,7 @@ class LockscreenToGoneTransitionViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val repository = kosmos.fakeKeyguardTransitionRepository private val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController private val underTest = kosmos.lockscreenToGoneTransitionViewModel @Test Loading Loading @@ -90,6 +92,20 @@ class LockscreenToGoneTransitionViewModelTest : SysuiTestCase() { assertThat(alpha).isEqualTo(0f) } @Test fun notificationAlpha_leaveShadeOpen() = testScope.runTest { val values by collectValues(underTest.notificationAlpha(ViewStateAccessor())) sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(true) repository.sendTransitionStep(step(0f, TransitionState.STARTED)) repository.sendTransitionStep(step(1f)) assertThat(values.size).isEqualTo(2) values.forEach { assertThat(it).isEqualTo(1f) } } private fun step( value: Float, state: TransitionState = TransitionState.RUNNING Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModel.kt +22 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCE import com.android.systemui.keyguard.shared.model.ScrimAlpha import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition import com.android.systemui.statusbar.SysuiStatusBarStateController import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -40,6 +41,7 @@ class AlternateBouncerToGoneTransitionViewModel constructor( bouncerToGoneFlows: BouncerToGoneFlows, animationFlow: KeyguardTransitionAnimationFlow, private val statusBarStateController: SysuiStatusBarStateController, ) : DeviceEntryIconTransition { private val transitionAnimation = animationFlow.setup( Loading @@ -59,6 +61,26 @@ constructor( ) } fun notificationAlpha(viewState: ViewStateAccessor): Flow<Float> { var startAlpha = 1f var leaveShadeOpen = false return transitionAnimation.sharedFlow( duration = 200.milliseconds, onStart = { leaveShadeOpen = statusBarStateController.leaveOpenOnKeyguardHide() startAlpha = viewState.alpha() }, onStep = { if (leaveShadeOpen) { 1f } else { MathUtils.lerp(startAlpha, 0f, it) } }, ) } /** Scrim alpha values */ val scrimAlpha: Flow<ScrimAlpha> = bouncerToGoneFlows.scrimAlpha(TO_GONE_DURATION, ALTERNATE_BOUNCER) Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModel.kt +22 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow.FlowBuilder import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition import com.android.systemui.statusbar.SysuiStatusBarStateController import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi Loading @@ -37,6 +38,7 @@ class LockscreenToGoneTransitionViewModel @Inject constructor( animationFlow: KeyguardTransitionAnimationFlow, private val statusBarStateController: SysuiStatusBarStateController, ) : DeviceEntryIconTransition { private val transitionAnimation: FlowBuilder = Loading @@ -54,6 +56,26 @@ constructor( onCancel = { 1f }, ) fun notificationAlpha(viewState: ViewStateAccessor): Flow<Float> { var startAlpha = 1f var leaveShadeOpen = false return transitionAnimation.sharedFlow( duration = 200.milliseconds, onStart = { leaveShadeOpen = statusBarStateController.leaveOpenOnKeyguardHide() startAlpha = viewState.alpha() }, onStep = { if (leaveShadeOpen) { 1f } else { MathUtils.lerp(startAlpha, 0f, it) } }, ) } fun lockscreenAlpha(viewState: ViewStateAccessor): Flow<Float> { var startAlpha = 1f return transitionAnimation.sharedFlow( Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt +2 −2 Original line number Diff line number Diff line Loading @@ -445,7 +445,7 @@ constructor( // All transition view models are mututally exclusive, and safe to merge val alphaTransitions = merge( alternateBouncerToGoneTransitionViewModel.lockscreenAlpha(viewState), alternateBouncerToGoneTransitionViewModel.notificationAlpha(viewState), aodToLockscreenTransitionViewModel.notificationAlpha, aodToOccludedTransitionViewModel.lockscreenAlpha(viewState), dozingToLockscreenTransitionViewModel.lockscreenAlpha, Loading @@ -455,7 +455,7 @@ constructor( goneToDreamingTransitionViewModel.lockscreenAlpha, goneToDozingTransitionViewModel.lockscreenAlpha, lockscreenToDreamingTransitionViewModel.lockscreenAlpha, lockscreenToGoneTransitionViewModel.lockscreenAlpha(viewState), lockscreenToGoneTransitionViewModel.notificationAlpha(viewState), lockscreenToOccludedTransitionViewModel.lockscreenAlpha, lockscreenToPrimaryBouncerTransitionViewModel.lockscreenAlpha, occludedToAodTransitionViewModel.lockscreenAlpha, Loading