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

Commit 542ba234 authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Issue resets to the SIM bouncer (take #2)" into main

parents 8ba97871 d8b49d5f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2985,7 +2985,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
                @Override
                public void onFalse() {
                    // Hides quick settings, bouncer, and quick-quick settings.
                    mStatusBarKeyguardViewManager.reset(true);
                    mStatusBarKeyguardViewManager.reset(true, /* isFalsingReset= */true);
                }
            };

+11 −4
Original line number Diff line number Diff line
@@ -708,7 +708,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
     * Shows the notification keyguard or the bouncer depending on
     * {@link #needsFullscreenBouncer()}.
     */
    protected void showBouncerOrKeyguard(boolean hideBouncerWhenShowing) {
    protected void showBouncerOrKeyguard(boolean hideBouncerWhenShowing, boolean isFalsingReset) {
        boolean isDozing = mDozing;
        if (Flags.simPinRaceConditionOnRestart()) {
            KeyguardState toState = mKeyguardTransitionInteractor.getTransitionState().getValue()
@@ -734,8 +734,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
                        mPrimaryBouncerInteractor.show(/* isScrimmed= */ true);
                    }
                }
            } else {
                Log.e(TAG, "Attempted to show the sim bouncer when it is already showing.");
            } else if (!isFalsingReset) {
                // Falsing resets can cause this to flicker, so don't reset in this case
                Log.i(TAG, "Sim bouncer is already showing, issuing a refresh");
                mPrimaryBouncerInteractor.show(/* isScrimmed= */ true);

            }
        } else {
            mCentralSurfaces.showKeyguard();
@@ -957,6 +960,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb

    @Override
    public void reset(boolean hideBouncerWhenShowing) {
        reset(hideBouncerWhenShowing, /* isFalsingReset= */false);
    }

    public void reset(boolean hideBouncerWhenShowing, boolean isFalsingReset) {
        if (mKeyguardStateController.isShowing() && !bouncerIsAnimatingAway()) {
            final boolean isOccluded = mKeyguardStateController.isOccluded();
            // Hide quick settings.
@@ -968,7 +975,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
                    hideBouncer(false /* destroyView */);
                }
            } else {
                showBouncerOrKeyguard(hideBouncerWhenShowing);
                showBouncerOrKeyguard(hideBouncerWhenShowing, isFalsingReset);
            }
            if (hideBouncerWhenShowing) {
                hideAlternateBouncer(true);
+18 −3
Original line number Diff line number Diff line
@@ -1068,7 +1068,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
    public void testShowBouncerOrKeyguard_needsFullScreen() {
        when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(
                KeyguardSecurityModel.SecurityMode.SimPin);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false, false);
        verify(mCentralSurfaces).hideKeyguard();
        verify(mPrimaryBouncerInteractor).show(true);
    }
@@ -1084,7 +1084,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
                .thenReturn(KeyguardState.LOCKSCREEN);

        reset(mCentralSurfaces);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false, false);
        verify(mPrimaryBouncerInteractor).show(true);
        verify(mCentralSurfaces).showKeyguard();
    }
@@ -1092,11 +1092,26 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
    @Test
    @DisableSceneContainer
    public void testShowBouncerOrKeyguard_needsFullScreen_bouncerAlreadyShowing() {
        boolean isFalsingReset = false;
        when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(
                KeyguardSecurityModel.SecurityMode.SimPin);
        when(mPrimaryBouncerInteractor.isFullyShowing()).thenReturn(true);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false, isFalsingReset);
        verify(mCentralSurfaces, never()).hideKeyguard();
        verify(mPrimaryBouncerInteractor).show(true);
    }

    @Test
    @DisableSceneContainer
    public void testShowBouncerOrKeyguard_needsFullScreen_bouncerAlreadyShowing_onFalsing() {
        boolean isFalsingReset = true;
        when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(
                KeyguardSecurityModel.SecurityMode.SimPin);
        when(mPrimaryBouncerInteractor.isFullyShowing()).thenReturn(true);
        mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false, isFalsingReset);
        verify(mCentralSurfaces, never()).hideKeyguard();

        // Do not refresh the full screen bouncer if the call is from falsing
        verify(mPrimaryBouncerInteractor, never()).show(true);
    }