Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt +0 −21 Original line number Diff line number Diff line Loading @@ -91,27 +91,6 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { assertThat(bgViewAlpha).isEqualTo(1f) } @Test fun deviceEntryBackgroundViewAlpha_rearFpEnrolled_noUpdates() = testScope.runTest { fingerprintPropertyRepository.supportsRearFps() val bgViewAlpha by collectLastValue(underTest.deviceEntryBackgroundViewAlpha) keyguardTransitionRepository.sendTransitionStep(step(0f, TransitionState.STARTED)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(0.5f)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(.75f)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(1f)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(1f, TransitionState.FINISHED)) assertThat(bgViewAlpha).isNull() } private fun step( value: Float, state: TransitionState = TransitionState.RUNNING Loading packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt +1 −0 Original line number Diff line number Diff line Loading @@ -252,5 +252,6 @@ constructor( val TO_LOCKSCREEN_DURATION = 500.milliseconds val TO_GONE_DURATION = DEFAULT_DURATION val TO_OCCLUDED_DURATION = DEFAULT_DURATION val TO_PRIMARY_BOUNCER_DURATION = DEFAULT_DURATION } } packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt +1 −0 Original line number Diff line number Diff line Loading @@ -231,6 +231,7 @@ constructor( private val DEFAULT_DURATION = 500.milliseconds val TO_GLANCEABLE_HUB_DURATION = 1.seconds val TO_LOCKSCREEN_DURATION = 1167.milliseconds val TO_AOD_DURATION = 300.milliseconds val TO_GONE_DURATION = DEFAULT_DURATION } } packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt +12 −0 Original line number Diff line number Diff line Loading @@ -22,10 +22,12 @@ import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToPrimaryBounc import com.android.systemui.keyguard.ui.viewmodel.AodToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DreamingToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToDozingTransitionViewModel Loading Loading @@ -87,6 +89,12 @@ abstract class DeviceEntryIconTransitionModule { @IntoSet abstract fun aodToOccluded(impl: AodToOccludedTransitionViewModel): DeviceEntryIconTransition @Binds @IntoSet abstract fun aodToPrimaryBouncer( impl: AodToPrimaryBouncerTransitionViewModel ): DeviceEntryIconTransition @Binds @IntoSet abstract fun dozingToGone(impl: DozingToGoneTransitionViewModel): DeviceEntryIconTransition Loading @@ -109,6 +117,10 @@ abstract class DeviceEntryIconTransitionModule { impl: DozingToPrimaryBouncerTransitionViewModel ): DeviceEntryIconTransition @Binds @IntoSet abstract fun dreamingToAod(impl: DreamingToAodTransitionViewModel): DeviceEntryIconTransition @Binds @IntoSet abstract fun dreamingToLockscreen( Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModel.kt 0 → 100644 +48 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.keyguard.ui.viewmodel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.domain.interactor.FromAodTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow /** * Breaks down AOD->PRIMARY BOUNCER transition into discrete steps for corresponding views to * consume. */ @ExperimentalCoroutinesApi @SysUISingleton class AodToPrimaryBouncerTransitionViewModel @Inject constructor( animationFlow: KeyguardTransitionAnimationFlow, ) : DeviceEntryIconTransition { private val transitionAnimation = animationFlow.setup( duration = FromAodTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION, from = KeyguardState.AOD, to = KeyguardState.PRIMARY_BOUNCER, ) override val deviceEntryParentViewAlpha: Flow<Float> = transitionAnimation.immediatelyTransitionTo(0f) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt +0 −21 Original line number Diff line number Diff line Loading @@ -91,27 +91,6 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { assertThat(bgViewAlpha).isEqualTo(1f) } @Test fun deviceEntryBackgroundViewAlpha_rearFpEnrolled_noUpdates() = testScope.runTest { fingerprintPropertyRepository.supportsRearFps() val bgViewAlpha by collectLastValue(underTest.deviceEntryBackgroundViewAlpha) keyguardTransitionRepository.sendTransitionStep(step(0f, TransitionState.STARTED)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(0.5f)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(.75f)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(1f)) assertThat(bgViewAlpha).isNull() keyguardTransitionRepository.sendTransitionStep(step(1f, TransitionState.FINISHED)) assertThat(bgViewAlpha).isNull() } private fun step( value: Float, state: TransitionState = TransitionState.RUNNING Loading
packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt +1 −0 Original line number Diff line number Diff line Loading @@ -252,5 +252,6 @@ constructor( val TO_LOCKSCREEN_DURATION = 500.milliseconds val TO_GONE_DURATION = DEFAULT_DURATION val TO_OCCLUDED_DURATION = DEFAULT_DURATION val TO_PRIMARY_BOUNCER_DURATION = DEFAULT_DURATION } }
packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt +1 −0 Original line number Diff line number Diff line Loading @@ -231,6 +231,7 @@ constructor( private val DEFAULT_DURATION = 500.milliseconds val TO_GLANCEABLE_HUB_DURATION = 1.seconds val TO_LOCKSCREEN_DURATION = 1167.milliseconds val TO_AOD_DURATION = 300.milliseconds val TO_GONE_DURATION = DEFAULT_DURATION } }
packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt +12 −0 Original line number Diff line number Diff line Loading @@ -22,10 +22,12 @@ import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToPrimaryBounc import com.android.systemui.keyguard.ui.viewmodel.AodToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DozingToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DreamingToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.GoneToDozingTransitionViewModel Loading Loading @@ -87,6 +89,12 @@ abstract class DeviceEntryIconTransitionModule { @IntoSet abstract fun aodToOccluded(impl: AodToOccludedTransitionViewModel): DeviceEntryIconTransition @Binds @IntoSet abstract fun aodToPrimaryBouncer( impl: AodToPrimaryBouncerTransitionViewModel ): DeviceEntryIconTransition @Binds @IntoSet abstract fun dozingToGone(impl: DozingToGoneTransitionViewModel): DeviceEntryIconTransition Loading @@ -109,6 +117,10 @@ abstract class DeviceEntryIconTransitionModule { impl: DozingToPrimaryBouncerTransitionViewModel ): DeviceEntryIconTransition @Binds @IntoSet abstract fun dreamingToAod(impl: DreamingToAodTransitionViewModel): DeviceEntryIconTransition @Binds @IntoSet abstract fun dreamingToLockscreen( Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModel.kt 0 → 100644 +48 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.keyguard.ui.viewmodel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.domain.interactor.FromAodTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow /** * Breaks down AOD->PRIMARY BOUNCER transition into discrete steps for corresponding views to * consume. */ @ExperimentalCoroutinesApi @SysUISingleton class AodToPrimaryBouncerTransitionViewModel @Inject constructor( animationFlow: KeyguardTransitionAnimationFlow, ) : DeviceEntryIconTransition { private val transitionAnimation = animationFlow.setup( duration = FromAodTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION, from = KeyguardState.AOD, to = KeyguardState.PRIMARY_BOUNCER, ) override val deviceEntryParentViewAlpha: Flow<Float> = transitionAnimation.immediatelyTransitionTo(0f) }