diff options
2 files changed, 29 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt index 20b7b2a91ade..82255a0c0d54 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractor.kt @@ -31,6 +31,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart /** * Distance over which the surface behind the keyguard is animated in during a Y-translation @@ -102,8 +103,11 @@ constructor( */ private val isNotificationLaunchAnimationRunningOnKeyguard = notificationLaunchInteractor.isLaunchAnimationRunning - .sample(transitionInteractor.finishedKeyguardState) - .map { it != KeyguardState.GONE } + .sample(transitionInteractor.finishedKeyguardState, ::Pair) + .map { (animationRunning, finishedState) -> + animationRunning && finishedState != KeyguardState.GONE + } + .onStart { emit(false) } /** * Whether we're animating the surface, or a notification launch animation is running (which diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt index 9ccf2121b8d2..f32e7757328f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt @@ -274,4 +274,27 @@ class KeyguardSurfaceBehindInteractorTest : SysuiTestCase() { runCurrent() assertThat(isAnimatingSurface).isFalse() } + + @Test + fun notificationLaunchFalse_isAnimatingSurfaceFalse() = + testScope.runTest { + val isAnimatingSurface by collectLastValue(underTest.isAnimatingSurface) + transitionRepository.sendTransitionStep( + TransitionStep( + from = KeyguardState.AOD, + to = KeyguardState.LOCKSCREEN, + transitionState = TransitionState.STARTED, + ) + ) + transitionRepository.sendTransitionStep( + TransitionStep( + from = KeyguardState.AOD, + to = KeyguardState.LOCKSCREEN, + transitionState = TransitionState.FINISHED, + ) + ) + kosmos.notificationLaunchAnimationInteractor.setIsLaunchAnimationRunning(false) + runCurrent() + assertThat(isAnimatingSurface).isFalse() + } } |