Loading packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +9 −3 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.user.domain.interactor.UserInteractor; Loading Loading @@ -411,6 +412,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final UserInteractor mUserInteractor; private final Provider<AuthenticationInteractor> mAuthenticationInteractor; private final Provider<JavaAdapter> mJavaAdapter; private final DeviceProvisionedController mDeviceProvisionedController; @Nullable private Job mSceneTransitionCollectionJob; @Inject Loading Loading @@ -439,6 +441,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard BouncerMessageInteractor bouncerMessageInteractor, Provider<JavaAdapter> javaAdapter, UserInteractor userInteractor, DeviceProvisionedController deviceProvisionedController, FaceAuthAccessibilityDelegate faceAuthAccessibilityDelegate, KeyguardTransitionInteractor keyguardTransitionInteractor, Provider<AuthenticationInteractor> authenticationInteractor Loading Loading @@ -473,6 +476,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mAuthenticationInteractor = authenticationInteractor; mJavaAdapter = javaAdapter; mKeyguardTransitionInteractor = keyguardTransitionInteractor; mDeviceProvisionedController = deviceProvisionedController; } @Override Loading Loading @@ -857,9 +861,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser()); if (securityMode == SecurityMode.None || isLockscreenDisabled) { finish = isLockscreenDisabled; KeyguardUpdateMonitor.getCurrentUser()) || !mDeviceProvisionedController.isUserSetup(targetUserId); if (securityMode == SecurityMode.None && isLockscreenDisabled) { finish = true; eventSubtype = BOUNCER_DISMISS_SIM; uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM; } else { Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt +28 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import com.android.systemui.scene.shared.model.ObservableTransitionState import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.policy.UserSwitcherController import com.android.systemui.user.domain.interactor.UserInteractor Loading Loading @@ -135,6 +136,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { @Mock private lateinit var audioManager: AudioManager @Mock private lateinit var userInteractor: UserInteractor @Mock private lateinit var faceAuthAccessibilityDelegate: FaceAuthAccessibilityDelegate @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Captor private lateinit var swipeListenerArgumentCaptor: Loading Loading @@ -184,6 +186,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { whenever(keyguardPasswordView.windowInsetsController).thenReturn(windowInsetsController) whenever(keyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(SecurityMode.PIN) whenever(keyguardStateController.canDismissLockScreen()).thenReturn(true) whenever(deviceProvisionedController.isUserSetup(anyInt())).thenReturn(true) featureFlags = FakeFeatureFlags() featureFlags.set(Flags.REVAMPED_BOUNCER_MESSAGES, true) Loading Loading @@ -251,6 +254,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { mock(), { JavaAdapter(sceneTestUtils.testScope.backgroundScope) }, userInteractor, deviceProvisionedController, faceAuthAccessibilityDelegate, keyguardTransitionInteractor, { authenticationInteractor }, Loading Loading @@ -507,6 +511,30 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { // THEN the next security method of None will dismiss keyguard. verify(viewMediatorCallback, never()).keyguardDone(anyBoolean(), anyInt()) } @Test fun showNextSecurityScreenOrFinish_SimPin_Swipe_userNotSetup() { // 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.None) // WHEN security method is SWIPE whenever(lockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(false) whenever(deviceProvisionedController.isUserSetup(anyInt())).thenReturn(false) underTest.showNextSecurityScreenOrFinish( /* authenticated= */ true, TARGET_USER_ID, /* bypassSecondaryLockScreen= */ true, SecurityMode.SimPin ) // THEN the next security method of None will dismiss keyguard. verify(viewMediatorCallback).keyguardDone(anyBoolean(), anyInt()) } @Test fun onSwipeUp_whenFaceDetectionIsNotRunning_initiatesFaceAuth() { Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +9 −3 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.user.domain.interactor.UserInteractor; Loading Loading @@ -411,6 +412,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final UserInteractor mUserInteractor; private final Provider<AuthenticationInteractor> mAuthenticationInteractor; private final Provider<JavaAdapter> mJavaAdapter; private final DeviceProvisionedController mDeviceProvisionedController; @Nullable private Job mSceneTransitionCollectionJob; @Inject Loading Loading @@ -439,6 +441,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard BouncerMessageInteractor bouncerMessageInteractor, Provider<JavaAdapter> javaAdapter, UserInteractor userInteractor, DeviceProvisionedController deviceProvisionedController, FaceAuthAccessibilityDelegate faceAuthAccessibilityDelegate, KeyguardTransitionInteractor keyguardTransitionInteractor, Provider<AuthenticationInteractor> authenticationInteractor Loading Loading @@ -473,6 +476,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mAuthenticationInteractor = authenticationInteractor; mJavaAdapter = javaAdapter; mKeyguardTransitionInteractor = keyguardTransitionInteractor; mDeviceProvisionedController = deviceProvisionedController; } @Override Loading Loading @@ -857,9 +861,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser()); if (securityMode == SecurityMode.None || isLockscreenDisabled) { finish = isLockscreenDisabled; KeyguardUpdateMonitor.getCurrentUser()) || !mDeviceProvisionedController.isUserSetup(targetUserId); if (securityMode == SecurityMode.None && isLockscreenDisabled) { finish = true; eventSubtype = BOUNCER_DISMISS_SIM; uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM; } else { Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt +28 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ import com.android.systemui.scene.shared.model.ObservableTransitionState import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.policy.UserSwitcherController import com.android.systemui.user.domain.interactor.UserInteractor Loading Loading @@ -135,6 +136,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { @Mock private lateinit var audioManager: AudioManager @Mock private lateinit var userInteractor: UserInteractor @Mock private lateinit var faceAuthAccessibilityDelegate: FaceAuthAccessibilityDelegate @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Captor private lateinit var swipeListenerArgumentCaptor: Loading Loading @@ -184,6 +186,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { whenever(keyguardPasswordView.windowInsetsController).thenReturn(windowInsetsController) whenever(keyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(SecurityMode.PIN) whenever(keyguardStateController.canDismissLockScreen()).thenReturn(true) whenever(deviceProvisionedController.isUserSetup(anyInt())).thenReturn(true) featureFlags = FakeFeatureFlags() featureFlags.set(Flags.REVAMPED_BOUNCER_MESSAGES, true) Loading Loading @@ -251,6 +254,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { mock(), { JavaAdapter(sceneTestUtils.testScope.backgroundScope) }, userInteractor, deviceProvisionedController, faceAuthAccessibilityDelegate, keyguardTransitionInteractor, { authenticationInteractor }, Loading Loading @@ -507,6 +511,30 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { // THEN the next security method of None will dismiss keyguard. verify(viewMediatorCallback, never()).keyguardDone(anyBoolean(), anyInt()) } @Test fun showNextSecurityScreenOrFinish_SimPin_Swipe_userNotSetup() { // 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.None) // WHEN security method is SWIPE whenever(lockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(false) whenever(deviceProvisionedController.isUserSetup(anyInt())).thenReturn(false) underTest.showNextSecurityScreenOrFinish( /* authenticated= */ true, TARGET_USER_ID, /* bypassSecondaryLockScreen= */ true, SecurityMode.SimPin ) // THEN the next security method of None will dismiss keyguard. verify(viewMediatorCallback).keyguardDone(anyBoolean(), anyInt()) } @Test fun onSwipeUp_whenFaceDetectionIsNotRunning_initiatesFaceAuth() { Loading