Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11ba18ad authored by Rubin Xu's avatar Rubin Xu
Browse files

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
parent c30cd79f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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,
+40 −0
Original line number Diff line number Diff line
@@ -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);