Ensure finish lockscreen when usersetup incomplete
Ensure that when the usersetup for the user is not complete, we do not want to go to lockscreen, even if lockscreen is not disabled. Bug: 222446076 Test: add Unit test, Test: Wipe device, auth sim pin in setup, observe that lockscreen is not there. Test: multiple locked sim pin with none and swipe security methods Change-Id: I8e33db8eb6e2c917966cab3d6a4f982670473040
This commit is contained in:
@@ -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;
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -473,6 +476,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
|
||||
mAuthenticationInteractor = authenticationInteractor;
|
||||
mJavaAdapter = javaAdapter;
|
||||
mKeyguardTransitionInteractor = keyguardTransitionInteractor;
|
||||
mDeviceProvisionedController = deviceProvisionedController;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
@@ -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:
|
||||
@@ -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)
|
||||
@@ -251,6 +254,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
|
||||
mock(),
|
||||
{ JavaAdapter(sceneTestUtils.testScope.backgroundScope) },
|
||||
userInteractor,
|
||||
deviceProvisionedController,
|
||||
faceAuthAccessibilityDelegate,
|
||||
keyguardTransitionInteractor,
|
||||
{ authenticationInteractor },
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user