From 11ba18ad94b6487d894ef9922e1b34cf3530cfc6 Mon Sep 17 00:00:00 2001 From: Rubin Xu Date: Thu, 11 Feb 2021 12:40:09 +0000 Subject: [PATCH] Use InternalActivity when ForceVerifyPath is set ConfirmLockPassword enforces that ForceVerifyPath can only be set when caller is launching InternalActivity, so the builder needs to launch that activity instead. This is regressed from Idf6fcb43f7497323d089eb9c37125294e7a7f5dc Bug: 179172552 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.password Change-Id: I8e03fc69c4748d09f17c29edaa77594e233f79ea --- .../password/ChooseLockSettingsHelper.java | 4 +- .../ChooseLockSettingsHelperTest.java | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/password/ChooseLockSettingsHelper.java b/src/com/android/settings/password/ChooseLockSettingsHelper.java index 13d39120fae..29330f54872 100644 --- a/src/com/android/settings/password/ChooseLockSettingsHelper.java +++ b/src/com/android/settings/password/ChooseLockSettingsHelper.java @@ -312,7 +312,7 @@ public final class ChooseLockSettingsHelper { switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(effectiveUserId)) { case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: launched = launchConfirmationActivity(request, title, header, description, - returnCredentials + returnCredentials || forceVerifyPath ? ConfirmLockPattern.InternalActivity.class : ConfirmLockPattern.class, returnCredentials, external, forceVerifyPath, userId, alternateButton, allowAnyUser, @@ -325,7 +325,7 @@ public final class ChooseLockSettingsHelper { case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX: case DevicePolicyManager.PASSWORD_QUALITY_MANAGED: launched = launchConfirmationActivity(request, title, header, description, - returnCredentials + returnCredentials || forceVerifyPath ? ConfirmLockPassword.InternalActivity.class : ConfirmLockPassword.class, returnCredentials, external, forceVerifyPath, userId, alternateButton, allowAnyUser, diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java index d082bded9ab..053bbe0ffdd 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java @@ -120,6 +120,46 @@ public class ChooseLockSettingsHelperTest { .isEqualTo(ThemeHelper.THEME_GLIF_V2); } + @Test + public void launchConfirmPattern_ForceVerify_shouldLaunchInternalActivity() { + final Activity activity = Robolectric.setupActivity(Activity.class); + + ChooseLockSettingsHelper.Builder builder = new ChooseLockSettingsHelper.Builder(activity); + builder.setRequestCode(100) + .setForceVerifyPath(true); + ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(builder); + when(helper.mLockPatternUtils.getKeyguardStoredPasswordQuality(anyInt())) + .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); + helper.launch(); + + ShadowActivity shadowActivity = Shadows.shadowOf(activity); + Intent startedIntent = shadowActivity.getNextStartedActivity(); + + assertEquals(new ComponentName("com.android.settings", + ConfirmLockPattern.InternalActivity.class.getName()), + startedIntent.getComponent()); + } + + @Test + public void launchConfirmPassword_ForceVerify_shouldLaunchInternalActivity() { + final Activity activity = Robolectric.setupActivity(Activity.class); + + ChooseLockSettingsHelper.Builder builder = new ChooseLockSettingsHelper.Builder(activity); + builder.setRequestCode(100) + .setForceVerifyPath(true); + ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(builder); + when(helper.mLockPatternUtils.getKeyguardStoredPasswordQuality(anyInt())) + .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC); + helper.launch(); + + ShadowActivity shadowActivity = Shadows.shadowOf(activity); + Intent startedIntent = shadowActivity.getNextStartedActivity(); + + assertEquals(new ComponentName("com.android.settings", + ConfirmLockPassword.InternalActivity.class.getName()), + startedIntent.getComponent()); + } + private ChooseLockSettingsHelper getChooseLockSettingsHelper( ChooseLockSettingsHelper.Builder builder) { LockPatternUtils mockLockPatternUtils = mock(LockPatternUtils.class);