summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Meumertzheim <4312191+fmeum@users.noreply.github.com>2020-12-23 06:13:10 +0100
committerHarsh Shandilya <me@msfjarvis.dev>2021-03-20 22:42:39 +0530
commitde1b976638dae3ca98c665d8cba3560f49898030 (patch)
tree85588365bcf461044a76eb1152ed34d1733d448a
parenteaa541b7b033b203f60b1acfa4936c3a9816d421 (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. (cherry picked from commit c15594b045ad035b2026a201acd2a89e3962de4d)
-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 {