Narrow Android autofill chooser results
This commit is contained in:
@@ -8,6 +8,8 @@ public final class AutofillCacheStoreBehaviorTest {
|
||||
public static void main(String[] args) {
|
||||
testFindBestMatchUsesAndroidAppTargets();
|
||||
testChooserCandidatesCollapseToExactAndroidAppMatch();
|
||||
testChooserCandidatesStayScopedToExactHostMatches();
|
||||
testChooserCandidatesStayScopedToParentHostMatches();
|
||||
}
|
||||
|
||||
private static void testFindBestMatchUsesAndroidAppTargets() {
|
||||
@@ -58,6 +60,74 @@ public final class AutofillCacheStoreBehaviorTest {
|
||||
}
|
||||
}
|
||||
|
||||
private static void testChooserCandidatesStayScopedToExactHostMatches() {
|
||||
List<AutofillTargetMatcher.Entry> entries = new ArrayList<>();
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"bellagio-primary",
|
||||
"Bellagio Primary",
|
||||
"dannyocean",
|
||||
"vault-code",
|
||||
"bellagio.example.invalid",
|
||||
"https://bellagio.example.invalid/login",
|
||||
Arrays.asList("https://bellagio.example.invalid/login"),
|
||||
Arrays.asList("Crew", "Internet")
|
||||
));
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"bellagio-backup",
|
||||
"Bellagio Backup",
|
||||
"rustyryan",
|
||||
"backup-code",
|
||||
"bellagio.example.invalid",
|
||||
"https://bellagio.example.invalid/admin",
|
||||
Arrays.asList("https://bellagio.example.invalid/admin"),
|
||||
Arrays.asList("Crew", "Internet")
|
||||
));
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"night-fox-entry",
|
||||
"Night Fox",
|
||||
"nightfox",
|
||||
"vault-code",
|
||||
"gitlab.com",
|
||||
"https://gitlab.com",
|
||||
Arrays.asList("https://gitlab.com"),
|
||||
Arrays.asList("Crew", "Internet")
|
||||
));
|
||||
|
||||
List<AutofillTargetMatcher.Entry> got = AutofillTargetMatcher.chooserCandidates(entries, "https://bellagio.example.invalid/security");
|
||||
if (got.size() != 2 || !containsIDs(got, "bellagio-primary", "bellagio-backup")) {
|
||||
throw new AssertionError("chooserCandidates(entries, exact host) = " + describe(got) + ", want only Bellagio entries");
|
||||
}
|
||||
}
|
||||
|
||||
private static void testChooserCandidatesStayScopedToParentHostMatches() {
|
||||
List<AutofillTargetMatcher.Entry> entries = new ArrayList<>();
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"bellagio-parent",
|
||||
"Bellagio Parent",
|
||||
"linuscaldwell",
|
||||
"chip-stack",
|
||||
"example.invalid",
|
||||
"https://example.invalid/login",
|
||||
Arrays.asList("https://example.invalid/login"),
|
||||
Arrays.asList("Crew", "Internet")
|
||||
));
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"night-fox-entry",
|
||||
"Night Fox",
|
||||
"nightfox",
|
||||
"vault-code",
|
||||
"gitlab.com",
|
||||
"https://gitlab.com",
|
||||
Arrays.asList("https://gitlab.com"),
|
||||
Arrays.asList("Crew", "Internet")
|
||||
));
|
||||
|
||||
List<AutofillTargetMatcher.Entry> got = AutofillTargetMatcher.chooserCandidates(entries, "https://bellagio.example.invalid/security");
|
||||
if (got.size() != 1 || !"bellagio-parent".equals(got.get(0).id)) {
|
||||
throw new AssertionError("chooserCandidates(entries, parent host) = " + describe(got) + ", want [bellagio-parent]");
|
||||
}
|
||||
}
|
||||
|
||||
private static String describe(AutofillTargetMatcher.Entry entry) {
|
||||
if (entry == null) {
|
||||
return "null";
|
||||
@@ -72,4 +142,12 @@ public final class AutofillCacheStoreBehaviorTest {
|
||||
}
|
||||
return ids.toString();
|
||||
}
|
||||
|
||||
private static boolean containsIDs(List<AutofillTargetMatcher.Entry> entries, String... wantIDs) {
|
||||
List<String> ids = new ArrayList<>();
|
||||
for (AutofillTargetMatcher.Entry entry : entries) {
|
||||
ids.add(entry.id);
|
||||
}
|
||||
return ids.containsAll(Arrays.asList(wantIDs)) && ids.size() == wantIDs.length;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user