Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt +40 −0 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.data.repository.fakeKeyguardClockRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository import com.android.systemui.keyguard.shared.model.ClockSize import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn Loading Loading @@ -236,6 +238,10 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa val isContentVisible by collectLastValue(underTest.isContentVisible) keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null) fakeKeyguardTransitionRepository.transitionTo( KeyguardState.LOCKSCREEN, KeyguardState.OCCLUDED, ) runCurrent() assertThat(isContentVisible).isFalse() } Loading @@ -243,15 +249,49 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa @Test fun isContentVisible_whenOccluded_notVisible_evenIfShadeShown() = with(kosmos) { testScope.runTest { val isContentVisible by collectLastValue(underTest.isContentVisible) keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null) fakeKeyguardTransitionRepository.transitionTo( KeyguardState.LOCKSCREEN, KeyguardState.OCCLUDED, ) runCurrent() sceneInteractor.snapToScene(Scenes.Shade, "") runCurrent() assertThat(isContentVisible).isFalse() } } @Test fun isContentVisible_whenOccluded_notVisibleInOccluded_visibleInAod() = with(kosmos) { testScope.runTest { val isContentVisible by collectLastValue(underTest.isContentVisible) keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null) fakeKeyguardTransitionRepository.transitionTo( KeyguardState.LOCKSCREEN, KeyguardState.OCCLUDED, ) runCurrent() sceneInteractor.snapToScene(Scenes.Shade, "") runCurrent() assertThat(isContentVisible).isFalse() fakeKeyguardTransitionRepository.transitionTo( KeyguardState.OCCLUDED, KeyguardState.AOD, ) runCurrent() sceneInteractor.snapToScene(Scenes.Lockscreen, "") runCurrent() assertThat(isContentVisible).isTrue() } } Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt +12 −5 Original line number Diff line number Diff line Loading @@ -24,10 +24,11 @@ import com.android.systemui.customization.R as customR import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.ClockSize import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor import dagger.assisted.AssistedFactory Loading @@ -54,8 +55,8 @@ constructor( val touchHandling: KeyguardTouchHandlingViewModel, private val shadeInteractor: ShadeInteractor, private val unfoldTransitionInteractor: UnfoldTransitionInteractor, private val occlusionInteractor: SceneContainerOcclusionInteractor, private val deviceEntryInteractor: DeviceEntryInteractor, private val transitionInteractor: KeyguardTransitionInteractor, ) : ExclusiveActivatable() { @VisibleForTesting val clockSize = clockInteractor.clockSize Loading Loading @@ -89,9 +90,15 @@ constructor( } launch { occlusionInteractor.isOccludingActivityShown .map { !it } .collect { _isContentVisible.value = it } transitionInteractor .transitionValue(KeyguardState.OCCLUDED) .map { it > 0f } .collect { fullyOrPartiallyOccluded -> // Content is visible unless we're OCCLUDED. Currently, we don't have nice // animations into and out of OCCLUDED, so the lockscreen/AOD content is // hidden immediately upon entering/exiting OCCLUDED. _isContentVisible.value = !fullyOrPartiallyOccluded } } awaitCancellation() Loading packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt +2 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ import com.android.systemui.biometrics.authController import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.keyguard.domain.interactor.keyguardBlueprintInteractor import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor Loading @@ -34,7 +34,7 @@ val Kosmos.lockscreenContentViewModel by touchHandling = keyguardTouchHandlingViewModel, shadeInteractor = shadeInteractor, unfoldTransitionInteractor = unfoldTransitionInteractor, occlusionInteractor = sceneContainerOcclusionInteractor, deviceEntryInteractor = deviceEntryInteractor, transitionInteractor = keyguardTransitionInteractor, ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt +40 −0 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.data.repository.fakeKeyguardClockRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository import com.android.systemui.keyguard.shared.model.ClockSize import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn Loading Loading @@ -236,6 +238,10 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa val isContentVisible by collectLastValue(underTest.isContentVisible) keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null) fakeKeyguardTransitionRepository.transitionTo( KeyguardState.LOCKSCREEN, KeyguardState.OCCLUDED, ) runCurrent() assertThat(isContentVisible).isFalse() } Loading @@ -243,15 +249,49 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa @Test fun isContentVisible_whenOccluded_notVisible_evenIfShadeShown() = with(kosmos) { testScope.runTest { val isContentVisible by collectLastValue(underTest.isContentVisible) keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null) fakeKeyguardTransitionRepository.transitionTo( KeyguardState.LOCKSCREEN, KeyguardState.OCCLUDED, ) runCurrent() sceneInteractor.snapToScene(Scenes.Shade, "") runCurrent() assertThat(isContentVisible).isFalse() } } @Test fun isContentVisible_whenOccluded_notVisibleInOccluded_visibleInAod() = with(kosmos) { testScope.runTest { val isContentVisible by collectLastValue(underTest.isContentVisible) keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null) fakeKeyguardTransitionRepository.transitionTo( KeyguardState.LOCKSCREEN, KeyguardState.OCCLUDED, ) runCurrent() sceneInteractor.snapToScene(Scenes.Shade, "") runCurrent() assertThat(isContentVisible).isFalse() fakeKeyguardTransitionRepository.transitionTo( KeyguardState.OCCLUDED, KeyguardState.AOD, ) runCurrent() sceneInteractor.snapToScene(Scenes.Lockscreen, "") runCurrent() assertThat(isContentVisible).isTrue() } } Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt +12 −5 Original line number Diff line number Diff line Loading @@ -24,10 +24,11 @@ import com.android.systemui.customization.R as customR import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.ClockSize import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor import dagger.assisted.AssistedFactory Loading @@ -54,8 +55,8 @@ constructor( val touchHandling: KeyguardTouchHandlingViewModel, private val shadeInteractor: ShadeInteractor, private val unfoldTransitionInteractor: UnfoldTransitionInteractor, private val occlusionInteractor: SceneContainerOcclusionInteractor, private val deviceEntryInteractor: DeviceEntryInteractor, private val transitionInteractor: KeyguardTransitionInteractor, ) : ExclusiveActivatable() { @VisibleForTesting val clockSize = clockInteractor.clockSize Loading Loading @@ -89,9 +90,15 @@ constructor( } launch { occlusionInteractor.isOccludingActivityShown .map { !it } .collect { _isContentVisible.value = it } transitionInteractor .transitionValue(KeyguardState.OCCLUDED) .map { it > 0f } .collect { fullyOrPartiallyOccluded -> // Content is visible unless we're OCCLUDED. Currently, we don't have nice // animations into and out of OCCLUDED, so the lockscreen/AOD content is // hidden immediately upon entering/exiting OCCLUDED. _isContentVisible.value = !fullyOrPartiallyOccluded } } awaitCancellation() Loading
packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt +2 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ import com.android.systemui.biometrics.authController import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.keyguard.domain.interactor.keyguardBlueprintInteractor import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor Loading @@ -34,7 +34,7 @@ val Kosmos.lockscreenContentViewModel by touchHandling = keyguardTouchHandlingViewModel, shadeInteractor = shadeInteractor, unfoldTransitionInteractor = unfoldTransitionInteractor, occlusionInteractor = sceneContainerOcclusionInteractor, deviceEntryInteractor = deviceEntryInteractor, transitionInteractor = keyguardTransitionInteractor, ) }