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

Commit 92219f0d authored by Joshua Mccloskey's avatar Joshua Mccloskey Committed by Android (Google) Code Review
Browse files

Merge "Settings ChooseLockscreen* dismiss in background." into main

parents 336e95cf 302aa724
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -200,6 +200,14 @@ public class ChooseLockGeneric extends SettingsActivity {
            return SettingsEnums.CHOOSE_LOCK_GENERIC;
        }

        @Override
        public void onPause() {
            super.onPause();
            if (!getActivity().isChangingConfigurations() && !mWaitingForConfirmation) {
                finish();
            }
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
+7 −0
Original line number Diff line number Diff line
@@ -219,6 +219,13 @@ public class ChooseLockPassword extends SettingsActivity {
        findViewById(R.id.content_parent).setFitsSystemWindows(false);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }
    @Override
    public void onPause() {
        super.onPause();
        if (!isChangingConfigurations()) {
            finish();
        }
    }

    public static class ChooseLockPasswordFragment extends InstrumentedFragment
            implements OnEditorActionListener, TextWatcher, SaveAndFinishWorker.Listener {
+8 −0
Original line number Diff line number Diff line
@@ -98,6 +98,14 @@ public class ChooseLockPattern extends SettingsActivity {
        return modIntent;
    }

    @Override
    public void onPause() {
        super.onPause();
        if (!isChangingConfigurations()) {
            finish();
        }
    }

    public static class IntentBuilder {
        private final Intent mIntent;

+20 −4
Original line number Diff line number Diff line
@@ -54,7 +54,9 @@ import android.os.Bundle;
import android.provider.Settings.Global;

import androidx.annotation.Nullable;
import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
import androidx.test.core.app.ActivityScenario;

import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
@@ -613,15 +615,29 @@ public class ChooseLockGenericTest {
                mFragment.getString(R.string.face_unlock_set_unlock_password));
    }

    @Test
    public void activity_dismisses_InBackground() {
        ActivityScenario<ChooseLockPassword> scenario =
                ActivityScenario.launchActivityForResult(getChooseLockGenericIntent(null));
        scenario.moveToState(Lifecycle.State.RESUMED);
        scenario.moveToState(Lifecycle.State.CREATED);
        assertThat(scenario.getResult()).isNotNull();
    }

    private void initActivity(@Nullable Intent intent) {
        final Intent theIntent = getChooseLockGenericIntent(intent);
        // TODO(b/275023433) This presents the activity from being made 'visible` is workaround
        mActivity = Robolectric.buildActivity(ChooseLockGeneric.InternalActivity.class, theIntent)
                .create().start().postCreate(null).resume().get();
        mActivity.getSupportFragmentManager().beginTransaction().add(mFragment, null).commitNow();
    }

    private Intent getChooseLockGenericIntent(@Nullable Intent intent) {
        if (intent == null) {
            intent = new Intent();
        }
        intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, false);
        // TODO(b/275023433) This presents the activity from being made 'visible` is workaround
        mActivity = Robolectric.buildActivity(ChooseLockGeneric.InternalActivity.class, intent)
                .create().start().postCreate(null).resume().get();
        mActivity.getSupportFragmentManager().beginTransaction().add(mFragment, null).commitNow();
        return intent;
    }

    private static String capitalize(final String input) {
+23 −5
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@ import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;

import androidx.lifecycle.Lifecycle;
import androidx.test.core.app.ActivityScenario;

import com.android.internal.widget.LockscreenCredential;
import com.android.settings.R;
import com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment;
@@ -515,16 +518,31 @@ public class ChooseLockPasswordTest {
        assertThat(pinAutoConfirmOption.isChecked()).isFalse();
    }

    @Test
    public void activity_dismisses_InBackground() {
        ActivityScenario<ChooseLockPassword> scenario =
                ActivityScenario.launchActivityForResult(getLockPasswordIntent());
        scenario.moveToState(Lifecycle.State.RESUMED);
        scenario.moveToState(Lifecycle.State.CREATED);
        assertThat(scenario.getResult()).isNotNull();
    }

    private ChooseLockPassword setupActivityWithPinTypeAndDefaultPolicy() {
        PasswordPolicy policy = new PasswordPolicy();
        policy.quality = PASSWORD_QUALITY_UNSPECIFIED;

        return buildChooseLockPasswordActivity(
                new IntentBuilder(application)
                getLockPasswordIntent());
    }

    private Intent getLockPasswordIntent() {
        PasswordPolicy policy = new PasswordPolicy();
        policy.quality = PASSWORD_QUALITY_UNSPECIFIED;
        return new IntentBuilder(application)
                .setUserId(UserHandle.myUserId())
                .setPasswordType(PASSWORD_QUALITY_NUMERIC)
                .setPasswordRequirement(PASSWORD_COMPLEXITY_NONE, policy.getMinMetrics())
                        .build());
                .build();
    }

    private ChooseLockPassword buildChooseLockPasswordActivity(Intent intent) {
Loading