Loading packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -753,7 +753,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard case SimPuk: // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); if (securityMode == SecurityMode.None && mLockPatternUtils.isLockScreenDisabled( if (securityMode == SecurityMode.None || mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser())) { finish = true; eventSubtype = BOUNCER_DISMISS_SIM; Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java +39 −0 Original line number Diff line number Diff line Loading @@ -392,6 +392,45 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { .isEqualTo(SecurityMode.PIN); } @Test public void showNextSecurityScreenOrFinish_DeviceNotSecure() { // 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); mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish( /* authenticated= */true, TARGET_USER_ID, /* bypassSecondaryLockScreen= */true, SecurityMode.SimPin); // THEN the next security method of None will dismiss keyguard. verify(mViewMediatorCallback).keyguardDone(anyBoolean(), anyInt()); } @Test public void showNextSecurityScreenOrFinish_DeviceNotSecure_prevent_bypass_on() { when(mFeatureFlags.isEnabled(Flags.PREVENT_BYPASS_KEYGUARD)).thenReturn(true); // 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); mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish( /* authenticated= */true, TARGET_USER_ID, /* bypassSecondaryLockScreen= */true, SecurityMode.SimPin); // THEN the next security method of None will dismiss keyguard. verify(mViewMediatorCallback).keyguardDone(anyBoolean(), anyInt()); } @Test public void showNextSecurityScreenOrFinish_ignoresCallWhenSecurityMethodHasChanged() { //GIVEN current security mode has been set to PIN Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -753,7 +753,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard case SimPuk: // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); if (securityMode == SecurityMode.None && mLockPatternUtils.isLockScreenDisabled( if (securityMode == SecurityMode.None || mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser())) { finish = true; eventSubtype = BOUNCER_DISMISS_SIM; Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java +39 −0 Original line number Diff line number Diff line Loading @@ -392,6 +392,45 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { .isEqualTo(SecurityMode.PIN); } @Test public void showNextSecurityScreenOrFinish_DeviceNotSecure() { // 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); mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish( /* authenticated= */true, TARGET_USER_ID, /* bypassSecondaryLockScreen= */true, SecurityMode.SimPin); // THEN the next security method of None will dismiss keyguard. verify(mViewMediatorCallback).keyguardDone(anyBoolean(), anyInt()); } @Test public void showNextSecurityScreenOrFinish_DeviceNotSecure_prevent_bypass_on() { when(mFeatureFlags.isEnabled(Flags.PREVENT_BYPASS_KEYGUARD)).thenReturn(true); // 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); mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish( /* authenticated= */true, TARGET_USER_ID, /* bypassSecondaryLockScreen= */true, SecurityMode.SimPin); // THEN the next security method of None will dismiss keyguard. verify(mViewMediatorCallback).keyguardDone(anyBoolean(), anyInt()); } @Test public void showNextSecurityScreenOrFinish_ignoresCallWhenSecurityMethodHasChanged() { //GIVEN current security mode has been set to PIN Loading