[Sim Bouncer] Show sim pin view.

Show sim pin view when sim is switched to a different locked sim.

Bug: 239799178
Test: Added a unit test and also tested by adding 2 esims and switching
between the two. I was able to reproduce the issue (the logs correspond
to the bug) and was able to see the expected behavior after making the
code change.

Change-Id: If7735ab4a6ae637ccfa479cdea65c3848a107d03
This commit is contained in:
Aaron Liu
2022-07-28 13:49:16 -07:00
parent 9737d33e4f
commit e7deb67ca5
2 changed files with 27 additions and 1 deletions

View File

@@ -635,13 +635,13 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
synchronized (KeyguardViewMediator.this) {
mSimWasLocked.append(slotId, true);
mPendingPinLock = true;
if (!mShowing) {
if (DEBUG_SIM_STATES) Log.d(TAG,
"INTENT_VALUE_ICC_LOCKED and keygaurd isn't "
+ "showing; need to show keyguard so user can enter sim pin");
doKeyguardLocked(null);
} else {
mPendingPinLock = true;
resetStateLocked();
}
}
@@ -2984,6 +2984,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
pw.print(" mPendingReset: "); pw.println(mPendingReset);
pw.print(" mPendingLock: "); pw.println(mPendingLock);
pw.print(" wakeAndUnlocking: "); pw.println(mWakeAndUnlocking);
pw.print(" mPendingPinLock: "); pw.println(mPendingPinLock);
}
/**

View File

@@ -185,6 +185,31 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
verify(mStatusBarKeyguardViewManager, atLeast(1)).show(null);
}
@Test
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public void restoreBouncerWhenSimLockedAndKeyguardIsGoingAway_initiallyNotShowing() {
// When showing and provisioned
mViewMediator.onSystemReady();
when(mUpdateMonitor.isDeviceProvisioned()).thenReturn(true);
mViewMediator.setShowingLocked(false);
// and a SIM becomes locked and requires a PIN
mViewMediator.mUpdateCallback.onSimStateChanged(
1 /* subId */,
0 /* slotId */,
TelephonyManager.SIM_STATE_PIN_REQUIRED);
// and the keyguard goes away
mViewMediator.setShowingLocked(false);
when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(false);
mViewMediator.mUpdateCallback.onKeyguardVisibilityChanged(false);
TestableLooper.get(this).processAllMessages();
// then make sure it comes back
verify(mStatusBarKeyguardViewManager, atLeast(1)).show(null);
}
@Test
public void testBouncerPrompt_deviceLockedByAdmin() {
// GIVEN no trust agents enabled and biometrics aren't enrolled