Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e04b3513 authored by Beverly's avatar Beverly
Browse files

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
parent db3dfa58
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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)
+21 −0
Original line number Diff line number Diff line
@@ -110,6 +110,27 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
        resources = context.orCreateTestableResources
    }

    @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)