Merge "Settings ChooseLockscreen* dismiss in background." into main
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index 0bf1255..714f3ee 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -201,6 +201,14 @@
}
@Override
+ public void onPause() {
+ super.onPause();
+ if (!getActivity().isChangingConfigurations() && !mWaitingForConfirmation) {
+ finish();
+ }
+ }
+
+ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Activity activity = getActivity();
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 800adb0..e74a2ff 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -219,6 +219,13 @@
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 {
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index 20d1e7d..f0c432e 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -98,6 +98,14 @@
return modIntent;
}
+ @Override
+ public void onPause() {
+ super.onPause();
+ if (!isChangingConfigurations()) {
+ finish();
+ }
+ }
+
public static class IntentBuilder {
private final Intent mIntent;
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java
index e625827..a099a39 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java
@@ -54,7 +54,9 @@
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 @@
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) {
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java
index dea936d..ed8179b 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java
@@ -47,6 +47,9 @@
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 @@
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)
- .setUserId(UserHandle.myUserId())
- .setPasswordType(PASSWORD_QUALITY_NUMERIC)
- .setPasswordRequirement(PASSWORD_COMPLEXITY_NONE, policy.getMinMetrics())
- .build());
+ 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();
}
private ChooseLockPassword buildChooseLockPasswordActivity(Intent intent) {
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
index 7715c62..da12ee4 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
@@ -30,6 +30,9 @@
import android.os.UserHandle;
import android.view.View;
+import androidx.lifecycle.Lifecycle;
+import androidx.test.core.app.ActivityScenario;
+
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
import com.android.settings.R;
@@ -137,16 +140,29 @@
R.string.lockpassword_draw_your_pattern_again_header));
}
+ @Test
+ public void activity_dismisses_InBackground() {
+ ActivityScenario<ChooseLockPattern> scenario =
+ ActivityScenario.launchActivityForResult(getLockPatternIntent(false));
+ scenario.moveToState(Lifecycle.State.RESUMED);
+ scenario.moveToState(Lifecycle.State.CREATED);
+ assertThat(scenario.getResult()).isNotNull();
+ }
+
private ChooseLockPattern createActivity(boolean addFingerprintExtra) {
return Robolectric.buildActivity(
- ChooseLockPattern.class,
- new IntentBuilder(application)
- .setUserId(UserHandle.myUserId())
- .setForFingerprint(addFingerprintExtra)
- .build())
+ ChooseLockPattern.class,
+ getLockPatternIntent(addFingerprintExtra))
.setup().get();
}
+ private Intent getLockPatternIntent(boolean addFingerprintExtra) {
+ return new IntentBuilder(application)
+ .setUserId(UserHandle.myUserId())
+ .setForFingerprint(addFingerprintExtra)
+ .build();
+ }
+
private LockscreenCredential createPattern(String patternString) {
return LockscreenCredential.createPattern(LockPatternUtils.byteArrayToPattern(
patternString.getBytes()));