Merge "Ensure finish lockscreen when usersetup incomplete" into udc-qpr-dev

This commit is contained in:
Aaron Liu
2023-08-16 16:07:37 +00:00
committed by Android (Google) Code Review
2 changed files with 37 additions and 3 deletions

View File

@@ -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 {

View File

@@ -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() {