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

Commit 7c1f1cfc authored by Aaron Liu's avatar Aaron Liu
Browse files

Do not finish keyguard if method is swipe.

A continuation of the successful unlock flow for sim pin. We do not want
to finish keyguard if our method is swipe, which is indicated when
lockscreen disabled is false and lockpatternutils returns None security.

Fixes: 288099374
Test: unlock sim pin, sim puk for None.
Test: unlock sim pin, sim puk for Swipe.
Test: disable esim, sim puk for None. <--this will go to LS but seems
like a separate issue
Test: disable esim, sim pin for Swipe.

Change-Id: I04779b26fa1a5a671d0a31b23ba36affe4387aa4
parent 5866a4a2
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -782,9 +782,10 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                case SimPuk:
                case SimPuk:
                    // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home
                    // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home
                    SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId);
                    SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId);
                    if (securityMode == SecurityMode.None || mLockPatternUtils.isLockScreenDisabled(
                    boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled(
                            KeyguardUpdateMonitor.getCurrentUser())) {
                            KeyguardUpdateMonitor.getCurrentUser());
                        finish = true;
                    if (securityMode == SecurityMode.None || isLockscreenDisabled) {
                        finish = isLockscreenDisabled;
                        eventSubtype = BOUNCER_DISMISS_SIM;
                        eventSubtype = BOUNCER_DISMISS_SIM;
                        uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM;
                        uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM;
                    } else {
                    } else {
+24 −1
Original line number Original line Diff line number Diff line
@@ -62,12 +62,12 @@ import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.biometrics.SideFpsController;
import com.android.systemui.biometrics.SideFpsController;
import com.android.systemui.biometrics.SideFpsUiRequestSource;
import com.android.systemui.biometrics.SideFpsUiRequestSource;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
import com.android.systemui.classifier.FalsingA11yDelegate;
import com.android.systemui.classifier.FalsingA11yDelegate;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.flags.Flags;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter;
@@ -395,6 +395,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase {


        // WHEN a request is made from the SimPin screens to show the next security method
        // WHEN a request is made from the SimPin screens to show the next security method
        when(mKeyguardSecurityModel.getSecurityMode(TARGET_USER_ID)).thenReturn(SecurityMode.None);
        when(mKeyguardSecurityModel.getSecurityMode(TARGET_USER_ID)).thenReturn(SecurityMode.None);
        when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(true);
        mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish(
        mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish(
                /* authenticated= */true,
                /* authenticated= */true,
                TARGET_USER_ID,
                TARGET_USER_ID,
@@ -422,6 +423,28 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase {
        verify(mKeyguardUpdateMonitor, never()).getUserHasTrust(anyInt());
        verify(mKeyguardUpdateMonitor, never()).getUserHasTrust(anyInt());
    }
    }


    @Test
    public void showNextSecurityScreenOrFinish_SimPin_Swipe() {
        // GIVEN the current security method is SimPin
        when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(TARGET_USER_ID)).thenReturn(false);
        mKeyguardSecurityContainerController.showSecurityScreen(SecurityMode.SimPin);

        // WHEN a request is made from the SimPin screens to show the next security method
        when(mKeyguardSecurityModel.getSecurityMode(TARGET_USER_ID)).thenReturn(SecurityMode.None);
        // WHEN security method is SWIPE
        when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(false);
        mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish(
                /* authenticated= */true,
                TARGET_USER_ID,
                /* bypassSecondaryLockScreen= */true,
                SecurityMode.SimPin);

        // THEN the next security method of None will dismiss keyguard.
        verify(mViewMediatorCallback, never()).keyguardDone(anyBoolean(), anyInt());
    }


    @Test
    @Test
    public void onSwipeUp_whenFaceDetectionIsNotRunning_initiatesFaceAuth() {
    public void onSwipeUp_whenFaceDetectionIsNotRunning_initiatesFaceAuth() {
        KeyguardSecurityContainer.SwipeListener registeredSwipeListener =
        KeyguardSecurityContainer.SwipeListener registeredSwipeListener =