From a96d95c95b76a7409e8c17a90e34026915f98560 Mon Sep 17 00:00:00 2001 From: aj-rosado <109146700+aj-rosado@users.noreply.github.com> Date: Wed, 1 Feb 2023 17:41:14 +0000 Subject: [PATCH] [PS-2330][PS-2339][PS-2332][PS-2333] Checking for username terms when adding a password, if they exist don't add. Adding fields that contain username terms to the usernamefields collection (#2331) --- src/Android/Autofill/FieldCollection.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Android/Autofill/FieldCollection.cs b/src/Android/Autofill/FieldCollection.cs index 3c2e35358..8b29ab8e3 100644 --- a/src/Android/Autofill/FieldCollection.cs +++ b/src/Android/Autofill/FieldCollection.cs @@ -12,6 +12,7 @@ namespace Bit.Droid.Autofill private List _passwordFields = null; private List _usernameFields = null; private HashSet _ignoreSearchTerms = new HashSet { "search", "find", "recipient", "edit" }; + private HashSet _usernameTerms = new HashSet { "email", "phone", "username"}; private HashSet _passwordTerms = new HashSet { "password", "pswd" }; public List AutofillIds { get; private set; } = new List(); @@ -98,6 +99,11 @@ namespace Bit.Droid.Autofill _usernameFields.Add(usernameField); } } + + if (!_usernameFields.Any()) + { + _usernameFields = Fields.Where(f => FieldHasUsernameTerms(f)).ToList(); + } } return _usernameFields; } @@ -321,7 +327,7 @@ namespace Bit.Droid.Autofill } return inputTypePassword && !ValueContainsAnyTerms(f.IdEntry, _ignoreSearchTerms) && - !ValueContainsAnyTerms(f.Hint, _ignoreSearchTerms); + !ValueContainsAnyTerms(f.Hint, _ignoreSearchTerms) && !FieldHasUsernameTerms(f); } private bool FieldHasPasswordTerms(Field f) @@ -329,6 +335,11 @@ namespace Bit.Droid.Autofill return ValueContainsAnyTerms(f.IdEntry, _passwordTerms) || ValueContainsAnyTerms(f.Hint, _passwordTerms); } + private bool FieldHasUsernameTerms(Field f) + { + return ValueContainsAnyTerms(f.IdEntry, _usernameTerms) || ValueContainsAnyTerms(f.Hint, _usernameTerms); + } + private bool ValueContainsAnyTerms(string value, HashSet terms) { if (string.IsNullOrWhiteSpace(value))