Autofill: tests Save UI is dismissed when new activity launches.
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -tandroid.autofillservice.cts.SimpleSaveActivityTest#testDismissSave_byLaunchingNewActivity
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases -tandroid.autofillservice.cts.LoginActivityTest#testSaveGoesAwayWhenLaunchingNewActivity
Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases
Bug: 64693551
Change-Id: I958cdabfe4896e292d694d4aee932d2084d2217a
diff --git a/tests/autofillservice/src/android/autofillservice/cts/DismissType.java b/tests/autofillservice/src/android/autofillservice/cts/DismissType.java
index fd0cbd5..e8e7689 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/DismissType.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/DismissType.java
@@ -17,11 +17,15 @@
/**
* A simple enum for test cases where the Save UI is dismissed.
+ *
+ * <p><b>Note:</b> When new values are added to the enum, the equivalent tests must be added to
+ * both {@link LoginActivityTest} and {@link SimpleSaveActivityTest}.
*/
enum DismissType {
BACK_BUTTON,
HOME_BUTTON,
RECENTS_BUTTON,
TOUCH_OUTSIDE,
- FOCUS_OUTSIDE
+ FOCUS_OUTSIDE,
+ LAUNCH_ACTIVITY
}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java
index 0a0ba85..0911e19 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java
@@ -1194,12 +1194,7 @@
@Test
public void testSaveGoesAwayWhenTappingRecentsButton() throws Exception {
// Launches new activity first...
- final Context context = getContext();
- final Intent intent = new Intent(context, CheckoutActivity.class);
- intent.setFlags(
- Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
- context.startActivity(intent);
- sUiBot.assertShownByRelativeId(CheckoutActivity.ID_ADDRESS);
+ startCheckoutActivityAsNewTask();
try {
// .. then the real activity being tested.
sUiBot.switchAppsUsingRecents();
@@ -1216,6 +1211,15 @@
saveGoesAway(DismissType.TOUCH_OUTSIDE);
}
+ @Test
+ public void testSaveGoesAwayWhenLaunchingNewActivity() throws Exception {
+ try {
+ saveGoesAway(DismissType.LAUNCH_ACTIVITY);
+ } finally {
+ CheckoutActivity.finishIt();
+ }
+ }
+
private void saveGoesAway(DismissType dismissType) throws Exception {
enableService();
@@ -1261,6 +1265,9 @@
sUiBot.switchAppsUsingRecents();
sUiBot.assertShownByRelativeId(CheckoutActivity.ID_ADDRESS);
break;
+ case LAUNCH_ACTIVITY:
+ startCheckoutActivityAsNewTask();
+ break;
default:
throw new IllegalArgumentException("invalid dismiss type: " + dismissType);
}
@@ -3175,6 +3182,7 @@
.isEqualTo(5);
}
+ @Test
public void testAutofillLargeNumberOfDatasets() throws Exception {
// Set service.
enableService();
@@ -3214,4 +3222,13 @@
// TODO: once it supports scrolling, selects the last dataset and asserts it's filled.
}
+
+ private void startCheckoutActivityAsNewTask() {
+ final Context context = getContext();
+ final Intent intent = new Intent(context, CheckoutActivity.class);
+ intent.setFlags(
+ Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+ context.startActivity(intent);
+ sUiBot.assertShownByRelativeId(CheckoutActivity.ID_ADDRESS);
+ }
}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java
index debbedc..c82fa42 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java
@@ -630,7 +630,7 @@
// Trigger save...
mActivity.save();
- // ...and make sure the snack bar is shown.
+ // ...and make sure the snack bar is not shown.
sUiBot.assertSaveNotShowing(SAVE_DATA_TYPE_ADDRESS);
}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java
index 542e3a6..5f7713c 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java
@@ -179,11 +179,7 @@
@Test
public void testDismissSave_byTappingRecents() throws Exception {
// Launches a different activity first.
- final Intent intent = new Intent(mContext, WelcomeActivity.class);
- intent.setFlags(
- Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS | Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
- mContext.startActivity(intent);
- WelcomeActivity.assertShowingDefaultMessage(sUiBot);
+ startWelcomeActivityOnNewTask();
// Then launches the main activity.
startActivity(true);
@@ -193,6 +189,16 @@
dismissSaveTest(DismissType.RECENTS_BUTTON);
}
+ @Test
+ public void testDismissSave_byLaunchingNewActivity() throws Exception {
+ startActivity();
+ try {
+ dismissSaveTest(DismissType.LAUNCH_ACTIVITY);
+ } finally {
+ WelcomeActivity.finishIt();
+ }
+ }
+
private void dismissSaveTest(DismissType dismissType) throws Exception {
// Set service.
enableService();
@@ -233,9 +239,20 @@
sUiBot.switchAppsUsingRecents();
WelcomeActivity.assertShowingDefaultMessage(sUiBot);
break;
+ case LAUNCH_ACTIVITY:
+ startWelcomeActivityOnNewTask();
+ break;
default:
throw new IllegalArgumentException("invalid dismiss type: " + dismissType);
}
sUiBot.assertSaveNotShowing(SAVE_DATA_TYPE_GENERIC);
}
+
+ private void startWelcomeActivityOnNewTask() throws Exception {
+ final Intent intent = new Intent(mContext, WelcomeActivity.class);
+ intent.setFlags(
+ Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS | Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+ mContext.startActivity(intent);
+ WelcomeActivity.assertShowingDefaultMessage(sUiBot);
+ }
}