Do not finish lockscreen for multiple sims.

Currently, in the logic, if the lockscreen is disabled, we finish
lockscreen instead of proceeding ot the second sim. I have removed this
logic. We are expecting the security mode to be SimPin/SimPuk if we are
expecting an additional sim. We also do not want to finish if the
security mode is supposed to be secure.

Fixes: 282107332
Test: added a unit test.
Test: test 2 esim cards and restart with none security.
Test: test 2 esim cards and restart with swipe security.
Test: test 2 esim cards and restart with pin security.
Test: test 2 esim cards and restart with pin security from sim-puk to sim-
pin.

Change-Id: I519fcb995a5915100bd97faaa9618d573c64bcc2
This commit is contained in:
Aaron Liu
2023-08-03 11:20:37 -07:00
parent 6883edae21
commit 0f0a5bd651
2 changed files with 26 additions and 1 deletions

View File

@@ -826,7 +826,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId);
boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled(
KeyguardUpdateMonitor.getCurrentUser());
if (securityMode == SecurityMode.None || isLockscreenDisabled) {
if (securityMode == SecurityMode.None) {
finish = isLockscreenDisabled;
eventSubtype = BOUNCER_DISMISS_SIM;
uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM;

View File

@@ -483,6 +483,30 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
verify(viewMediatorCallback, never()).keyguardDone(anyBoolean(), anyInt())
}
@Test
fun showNextSecurityScreenOrFinish_SimPinToAnotherSimPin_None() {
// GIVEN the current security method is SimPin
whenever(keyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(false)
whenever(keyguardUpdateMonitor.getUserUnlockedWithBiometric(TARGET_USER_ID))
.thenReturn(false)
underTest.showSecurityScreen(SecurityMode.SimPin)
// WHEN a request is made from the SimPin screens to show the next security method
whenever(keyguardSecurityModel.getSecurityMode(TARGET_USER_ID))
.thenReturn(SecurityMode.SimPin)
whenever(lockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(true)
underTest.showNextSecurityScreenOrFinish(
/* authenticated= */ true,
TARGET_USER_ID,
/* bypassSecondaryLockScreen= */ true,
SecurityMode.SimPin
)
// THEN the next security method of None will dismiss keyguard.
verify(viewMediatorCallback, never()).keyguardDone(anyBoolean(), anyInt())
}
@Test
fun onSwipeUp_whenFaceDetectionIsNotRunning_initiatesFaceAuth() {
val registeredSwipeListener = registeredSwipeListener