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

Commit 0f0a5bd6 authored by Aaron Liu's avatar Aaron Liu
Browse files

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
parent 6883edae
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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;
+24 −0
Original line number Diff line number Diff line
@@ -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