mirror of
https://github.com/bitwarden/android.git
synced 2025-01-11 18:57:39 +03:00
only show autofills if a fillable login form
This commit is contained in:
parent
abf75cffd9
commit
da199deed1
3 changed files with 26 additions and 17 deletions
|
@ -33,7 +33,7 @@ namespace Bit.Android.Autofill
|
||||||
var parser = new Parser(structure);
|
var parser = new Parser(structure);
|
||||||
parser.Parse();
|
parser.Parse();
|
||||||
|
|
||||||
if(!parser.FieldCollection.Fields.Any() || string.IsNullOrWhiteSpace(parser.Uri) ||
|
if(!parser.FieldCollection.FillableForLogin || string.IsNullOrWhiteSpace(parser.Uri) ||
|
||||||
parser.Uri == "androidapp://com.x8bit.bitwarden" || parser.Uri == "androidapp://android")
|
parser.Uri == "androidapp://com.x8bit.bitwarden" || parser.Uri == "androidapp://android")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -61,14 +61,7 @@ namespace Bit.Android.Autofill
|
||||||
|
|
||||||
if(Type == CipherType.Login)
|
if(Type == CipherType.Login)
|
||||||
{
|
{
|
||||||
var passwordField = fieldCollection.Fields.FirstOrDefault(
|
var passwordField = fieldCollection.PasswordFields.FirstOrDefault();
|
||||||
f => f.InputType.HasFlag(InputTypes.TextVariationPassword));
|
|
||||||
if(passwordField == null)
|
|
||||||
{
|
|
||||||
passwordField = fieldCollection.Fields.FirstOrDefault(
|
|
||||||
f => f.IdEntry?.ToLower().Contains("password") ?? false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(passwordField == null)
|
if(passwordField == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -8,6 +8,8 @@ namespace Bit.Android.Autofill
|
||||||
{
|
{
|
||||||
public class FieldCollection
|
public class FieldCollection
|
||||||
{
|
{
|
||||||
|
private List<Field> _passwordFields;
|
||||||
|
|
||||||
public HashSet<int> Ids { get; private set; } = new HashSet<int>();
|
public HashSet<int> Ids { get; private set; } = new HashSet<int>();
|
||||||
public List<AutofillId> AutofillIds { get; private set; } = new List<AutofillId>();
|
public List<AutofillId> AutofillIds { get; private set; } = new List<AutofillId>();
|
||||||
public SaveDataType SaveType { get; private set; } = SaveDataType.Generic;
|
public SaveDataType SaveType { get; private set; } = SaveDataType.Generic;
|
||||||
|
@ -19,6 +21,27 @@ namespace Bit.Android.Autofill
|
||||||
public IDictionary<string, List<Field>> HintToFieldsMap { get; private set; } =
|
public IDictionary<string, List<Field>> HintToFieldsMap { get; private set; } =
|
||||||
new Dictionary<string, List<Field>>();
|
new Dictionary<string, List<Field>>();
|
||||||
|
|
||||||
|
public List<Field> PasswordFields
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if(_passwordFields != null)
|
||||||
|
{
|
||||||
|
return _passwordFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
_passwordFields = Fields.Where(f => f.InputType.HasFlag(InputTypes.TextVariationPassword)).ToList();
|
||||||
|
if(!_passwordFields.Any())
|
||||||
|
{
|
||||||
|
_passwordFields = Fields.Where(f => f.IdEntry?.ToLower().Contains("password") ?? false).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return _passwordFields;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool FillableForLogin => PasswordFields.Any();
|
||||||
|
|
||||||
public void Add(Field field)
|
public void Add(Field field)
|
||||||
{
|
{
|
||||||
if(Ids.Contains(field.Id))
|
if(Ids.Contains(field.Id))
|
||||||
|
@ -59,14 +82,7 @@ namespace Bit.Android.Autofill
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var passwordField = Fields.FirstOrDefault(
|
var passwordField = PasswordFields.FirstOrDefault(f => !string.IsNullOrWhiteSpace(f.TextValue));
|
||||||
f => f.InputType.HasFlag(InputTypes.TextVariationPassword) && !string.IsNullOrWhiteSpace(f.TextValue));
|
|
||||||
if(passwordField == null)
|
|
||||||
{
|
|
||||||
passwordField = Fields.FirstOrDefault(
|
|
||||||
f => (f.IdEntry?.ToLower().Contains("password") ?? false) && !string.IsNullOrWhiteSpace(f.TextValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(passwordField == null)
|
if(passwordField == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in a new issue