diff options
2 files changed, 25 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 27b8406e3bf9..dc882267d41d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -630,8 +630,12 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb protected void showBouncerOrKeyguard(boolean hideBouncerWhenShowing) { if (needsFullscreenBouncer() && !mDozing) { // The keyguard might be showing (already). So we need to hide it. - mCentralSurfaces.hideKeyguard(); - mPrimaryBouncerInteractor.show(true); + if (!primaryBouncerIsShowing()) { + mCentralSurfaces.hideKeyguard(); + mPrimaryBouncerInteractor.show(true); + } else { + Log.e(TAG, "Attempted to show the sim bouncer when it is already showing."); + } } else { mCentralSurfaces.showKeyguard(); if (hideBouncerWhenShowing) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index 0da736003e22..13ba627c0ab4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -974,4 +974,23 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { verify(mKeyguardMessageAreaController).setIsVisible(eq(false)); verify(mKeyguardMessageAreaController).setMessage(eq("")); } + + @Test + public void testShowBouncerOrKeyguard_needsFullScreen() { + when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn( + KeyguardSecurityModel.SecurityMode.SimPin); + mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false); + verify(mCentralSurfaces).hideKeyguard(); + verify(mPrimaryBouncerInteractor).show(true); + } + + @Test + public void testShowBouncerOrKeyguard_needsFullScreen_bouncerAlreadyShowing() { + when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn( + KeyguardSecurityModel.SecurityMode.SimPin); + when(mPrimaryBouncerInteractor.isFullyShowing()).thenReturn(true); + mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false); + verify(mCentralSurfaces, never()).hideKeyguard(); + verify(mPrimaryBouncerInteractor, never()).show(true); + } } |