Broaden Android accessibility autofill fallback
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package org.julianfamily.keepassgo;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class AutofillCacheStoreBehaviorTest {
|
||||
public static void main(String[] args) {
|
||||
testFindBestMatchUsesAndroidAppTargets();
|
||||
testChooserCandidatesCollapseToExactAndroidAppMatch();
|
||||
}
|
||||
|
||||
private static void testFindBestMatchUsesAndroidAppTargets() {
|
||||
List<AutofillTargetMatcher.Entry> entries = new ArrayList<>();
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"blink-entry",
|
||||
"Blink",
|
||||
"linuscaldwell",
|
||||
"bellagio-stack",
|
||||
"account.blinknetwork.com",
|
||||
"https://account.blinknetwork.com",
|
||||
Arrays.asList("https://account.blinknetwork.com", "androidapp://com.blinknetwork.mobile2"),
|
||||
Arrays.asList("Crew", "Apps")
|
||||
));
|
||||
|
||||
AutofillTargetMatcher.Entry got = AutofillTargetMatcher.findBestMatch(entries, "androidapp://com.blinknetwork.mobile2");
|
||||
if (got == null || !"blink-entry".equals(got.id)) {
|
||||
throw new AssertionError("findBestMatch(entries, androidapp target) = " + describe(got) + ", want blink-entry");
|
||||
}
|
||||
}
|
||||
|
||||
private static void testChooserCandidatesCollapseToExactAndroidAppMatch() {
|
||||
List<AutofillTargetMatcher.Entry> entries = new ArrayList<>();
|
||||
entries.add(new AutofillTargetMatcher.Entry(
|
||||
"blink-entry",
|
||||
"Blink",
|
||||
"linuscaldwell",
|
||||
"bellagio-stack",
|
||||
"account.blinknetwork.com",
|
||||
"https://account.blinknetwork.com",
|
||||
Arrays.asList("https://account.blinknetwork.com", "androidapp://com.blinknetwork.mobile2"),
|
||||
Arrays.asList("Crew", "Apps")
|
||||
));
|
||||
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, "androidapp://com.blinknetwork.mobile2");
|
||||
if (got.size() != 1 || !"blink-entry".equals(got.get(0).id)) {
|
||||
throw new AssertionError("chooserCandidates(entries, androidapp target) = " + describe(got) + ", want [blink-entry]");
|
||||
}
|
||||
}
|
||||
|
||||
private static String describe(AutofillTargetMatcher.Entry entry) {
|
||||
if (entry == null) {
|
||||
return "null";
|
||||
}
|
||||
return entry.id;
|
||||
}
|
||||
|
||||
private static String describe(List<AutofillTargetMatcher.Entry> entries) {
|
||||
List<String> ids = new ArrayList<>();
|
||||
for (AutofillTargetMatcher.Entry entry : entries) {
|
||||
ids.add(entry.id);
|
||||
}
|
||||
return ids.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.julianfamily.keepassgo;
|
||||
|
||||
public final class AutofillFallbackTargetBehaviorTest {
|
||||
public static void main(String[] args) {
|
||||
testPrefersWebDomainWhenPresent();
|
||||
testFallsBackToAndroidAppPackage();
|
||||
testEmptyWhenNeitherSignalExists();
|
||||
}
|
||||
|
||||
private static void testPrefersWebDomainWhenPresent() {
|
||||
String got = AutofillFallbackTarget.resolve("com.android.chrome", "gitlab.com");
|
||||
if (!"gitlab.com".equals(got)) {
|
||||
throw new AssertionError("resolve(chrome, gitlab.com) = " + got + ", want gitlab.com");
|
||||
}
|
||||
}
|
||||
|
||||
private static void testFallsBackToAndroidAppPackage() {
|
||||
String got = AutofillFallbackTarget.resolve("com.blinknetwork.mobile2", "");
|
||||
if (!"androidapp://com.blinknetwork.mobile2".equals(got)) {
|
||||
throw new AssertionError("resolve(package-only) = " + got + ", want androidapp://com.blinknetwork.mobile2");
|
||||
}
|
||||
}
|
||||
|
||||
private static void testEmptyWhenNeitherSignalExists() {
|
||||
String got = AutofillFallbackTarget.resolve("", "");
|
||||
if (!"".equals(got)) {
|
||||
throw new AssertionError("resolve(empty) = " + got + ", want empty");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user