diff options
2 files changed, 31 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt index 2bd62587834d..21578f491de7 100644 --- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt @@ -146,6 +146,16 @@ constructor( /** Show the bouncer if necessary and set the relevant states. */ @JvmOverloads fun show(isScrimmed: Boolean) { + if (primaryBouncerView.delegate == null) { + Log.d( + TAG, + "PrimaryBouncerInteractor#show is being called before the " + + "primaryBouncerDelegate is set. Let's exit early so we don't set the wrong " + + "primaryBouncer state." + ) + return + } + // Reset some states as we show the bouncer. repository.setKeyguardAuthenticatedBiometrics(null) repository.setPrimaryStartingToHide(false) diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt index 9373ada75003..f6b284fffa3d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt @@ -111,6 +111,27 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() { } @Test + fun show_nullDelegate() { + testScope.run { + whenever(bouncerView.delegate).thenReturn(null) + mainHandler.setMode(FakeHandler.Mode.QUEUEING) + + // WHEN bouncer show is requested + underTest.show(true) + + // WHEN all queued messages are dispatched + mainHandler.dispatchQueuedMessages() + + // THEN primary bouncer state doesn't update to show since delegate was null + verify(repository, never()).setPrimaryShow(true) + verify(repository, never()).setPrimaryShowingSoon(false) + verify(mPrimaryBouncerCallbackInteractor, never()).dispatchStartingToShow() + verify(mPrimaryBouncerCallbackInteractor, never()) + .dispatchVisibilityChanged(View.VISIBLE) + } + } + + @Test fun testShow_isScrimmed() { underTest.show(true) verify(repository).setKeyguardAuthenticatedBiometrics(null) |