summaryrefslogtreecommitdiff
path: root/autofill-parser/src
diff options
context:
space:
mode:
authorFabian Meumertzheim <4312191+fmeum@users.noreply.github.com>2020-12-23 06:13:10 +0100
committerGitHub <noreply@github.com>2020-12-22 21:13:10 -0800
commitc15594b045ad035b2026a201acd2a89e3962de4d (patch)
treef3f5d7b5dbc84a4a8f12e703f201fab9418419c0 /autofill-parser/src
parenta67c2a2f4a339eb35376ce9cd0469e6a690bc66e (diff)
Mark unfocused single password fields as fillable (#1258)
Unfocused single password fields in forms with no other recognized fields must be marked as fillable or the Autofill service will no longer be invoked on that form. This is compatible with the restrictions of single-origin mode as filling only takes place after the password field has gained focus and the user has tapped the fill UI. For an example website where fill UI is not shown without this commit, open https://amazon.lbb.de and tab the user name field ("Benutzername") first before focusing the password field.
Diffstat (limited to 'autofill-parser/src')
-rw-r--r--autofill-parser/src/main/java/com/github/androidpasswordstore/autofillparser/AutofillStrategy.kt20
1 files changed, 20 insertions, 0 deletions
diff --git a/autofill-parser/src/main/java/com/github/androidpasswordstore/autofillparser/AutofillStrategy.kt b/autofill-parser/src/main/java/com/github/androidpasswordstore/autofillparser/AutofillStrategy.kt
index a98d6e81..9f34a200 100644
--- a/autofill-parser/src/main/java/com/github/androidpasswordstore/autofillparser/AutofillStrategy.kt
+++ b/autofill-parser/src/main/java/com/github/androidpasswordstore/autofillparser/AutofillStrategy.kt
@@ -187,6 +187,26 @@ internal val autofillStrategy = strategy {
}
}
+ // Fallback rule for the case of a login form with a password field and other fields that are
+ // not recognized by any other rule. If one of the other fields is focused and we return no
+ // response, the system will not invoke the service again if focus later changes to the password
+ // field. Hence, we must mark it as fillable now.
+ // This rule can apply in single origin mode since even though the password field may not be
+ // focused at the time the rule runs, the fill suggestion will only show if it ever receives
+ // focus.
+ rule(applyInSingleOriginMode = true) {
+ currentPassword {
+ takeSingle { hasAutocompleteHintCurrentPassword }
+ }
+ }
+
+ // See above.
+ rule(applyInSingleOriginMode = true) {
+ genericPassword {
+ takeSingle { true }
+ }
+ }
+
// Match any focused password field with optional username field on manual request.
rule(applyInSingleOriginMode = true, applyOnManualRequestOnly = true) {
genericPassword {