diff options
3 files changed, 54 insertions, 7 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt index 5436d7eee00c..36c9b0576464 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt @@ -27,8 +27,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 @@ -239,6 +241,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() } @@ -249,12 +255,46 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa 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() } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt index ef6ae0dd6427..b6a3b6aaba14 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt @@ -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 @@ -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 @@ -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() diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt index f47b2df607c1..78d44d4917fe 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt @@ -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 @@ -34,7 +34,7 @@ val Kosmos.lockscreenContentViewModel by touchHandling = keyguardTouchHandlingViewModel, shadeInteractor = shadeInteractor, unfoldTransitionInteractor = unfoldTransitionInteractor, - occlusionInteractor = sceneContainerOcclusionInteractor, deviceEntryInteractor = deviceEntryInteractor, + transitionInteractor = keyguardTransitionInteractor, ) } |