diff options
3 files changed, 28 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModel.kt index 7b0b23ffb2ff..3e3cbd0540a2 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModel.kt @@ -19,6 +19,7 @@ package com.android.systemui.keyguard.ui.viewmodel import android.graphics.Color import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor +import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER @@ -41,6 +42,7 @@ constructor( keyguardTransitionInteractor: KeyguardTransitionInteractor, private val dismissCallbackRegistry: DismissCallbackRegistry, alternateBouncerInteractor: Lazy<AlternateBouncerInteractor>, + private val primaryBouncerInteractor: PrimaryBouncerInteractor, ) { // When we're fully transitioned to the AlternateBouncer, the alpha of the scrim should be: private val alternateBouncerScrimAlpha = .66f @@ -68,10 +70,13 @@ constructor( fun onRemovedFromWindow() { statusBarKeyguardViewManager.hideAlternateBouncer(false) + primaryBouncerInteractor.setDismissAction(null, null) + dismissCallbackRegistry.notifyDismissCancelled() } fun onBackRequested() { statusBarKeyguardViewManager.hideAlternateBouncer(false) + primaryBouncerInteractor.setDismissAction(null, null) dismissCallbackRegistry.notifyDismissCancelled() } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt index 664a0bdedec4..2021400b326a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt @@ -21,6 +21,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.policy.IKeyguardDismissCallback import com.android.systemui.SysuiTestCase +import com.android.systemui.bouncer.domain.interactor.primaryBouncerInteractor import com.android.systemui.concurrency.fakeExecutor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues @@ -30,6 +31,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.plugins.ActivityStarter import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any @@ -62,13 +64,31 @@ class AlternateBouncerViewModelTest : SysuiTestCase() { @Test fun onRemovedFromWindow() = testScope.runTest { + kosmos.primaryBouncerInteractor.setDismissAction( + mock(ActivityStarter.OnDismissAction::class.java), + {}, + ) + assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNotNull() + + val dismissCallback = mock(IKeyguardDismissCallback::class.java) + kosmos.dismissCallbackRegistry.addCallback(dismissCallback) underTest.onRemovedFromWindow() + + kosmos.fakeExecutor.runAllReady() verify(statusBarKeyguardViewManager).hideAlternateBouncer(any()) + verify(dismissCallback).onDismissCancelled() + assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNull() } @Test fun onBackRequested() = testScope.runTest { + kosmos.primaryBouncerInteractor.setDismissAction( + mock(ActivityStarter.OnDismissAction::class.java), + {}, + ) + assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNotNull() + val dismissCallback = mock(IKeyguardDismissCallback::class.java) kosmos.dismissCallbackRegistry.addCallback(dismissCallback) @@ -76,6 +96,7 @@ class AlternateBouncerViewModelTest : SysuiTestCase() { kosmos.fakeExecutor.runAllReady() verify(statusBarKeyguardViewManager).hideAlternateBouncer(any()) verify(dismissCallback).onDismissCancelled() + assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNull() } @Test diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelKosmos.kt index 29583153ccc6..f1d87fe3abb7 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelKosmos.kt @@ -19,6 +19,7 @@ package com.android.systemui.keyguard.ui.viewmodel import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor +import com.android.systemui.bouncer.domain.interactor.primaryBouncerInteractor import com.android.systemui.keyguard.dismissCallbackRegistry import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.kosmos.Kosmos @@ -32,5 +33,6 @@ val Kosmos.alternateBouncerViewModel by Fixture { keyguardTransitionInteractor = keyguardTransitionInteractor, dismissCallbackRegistry = dismissCallbackRegistry, alternateBouncerInteractor = { alternateBouncerInteractor }, + primaryBouncerInteractor = primaryBouncerInteractor, ) } |