diff options
| author | 2023-10-19 12:44:14 +0000 | |
|---|---|---|
| committer | 2023-10-19 12:47:37 +0000 | |
| commit | e04b35130fcce3303ba93fd7241b1261a0b4546d (patch) | |
| tree | 7e7f5bc5ee684b708b707da8e6fbcb65999dc712 | |
| parent | db3dfa58a14c856b416438bf485faa576c707e5b (diff) | |
Don't update the primaryBouncerShow state if delegate is null
If the delegate is null, the primary bouncer can't actually show,
so we shouldn't update the primary bouncer repo states to "showing=true".
Instead, we'll log and exit early.
Test: atest PrimaryBouncerInteractorTest
Test: presubmit
Bug: 303755862
Change-Id: I743e0ec656f1580acb2a8e6a6011fa92d7b8611e
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) |