add support for attr prefixing on custom field names

This commit is contained in:
Kyle Spearrin 2019-01-19 23:02:07 -05:00
parent 7723f64cf9
commit aaeaeba4ee
2 changed files with 29 additions and 1 deletions

2
jslib

@ -1 +1 @@
Subproject commit fa65b5637b5cd2e93b5d886584d6876c2c5eb571
Subproject commit 50d242e53a4b553a6cb3575945a84812eda75b1d

View File

@ -870,6 +870,24 @@ export default class AutofillService implements AutofillServiceInterface {
private findMatchingFieldIndex(field: AutofillField, names: string[]): number {
for (let i = 0; i < names.length; i++) {
if (names[i].indexOf('=') > -1) {
if (this.fieldPropertyIsPrefixMatch(field, 'htmlID', names[i], 'id')) {
return i;
}
if (this.fieldPropertyIsPrefixMatch(field, 'htmlName', names[i], 'name')) {
return i;
}
if (this.fieldPropertyIsPrefixMatch(field, 'label-tag', names[i], 'label')) {
return i;
}
if (this.fieldPropertyIsPrefixMatch(field, 'label-aria', names[i], 'label')) {
return i;
}
if (this.fieldPropertyIsPrefixMatch(field, 'placeholder', names[i], 'placeholder')) {
return i;
}
}
if (this.fieldPropertyIsMatch(field, 'htmlID', names[i])) {
return i;
}
@ -890,6 +908,16 @@ export default class AutofillService implements AutofillServiceInterface {
return -1;
}
private fieldPropertyIsPrefixMatch(field: any, property: string, name: string, prefix: string,
separator = '='): boolean {
if (name.indexOf(prefix + separator) === 0) {
const sepIndex = name.indexOf(separator);
const val = name.substring(sepIndex + 1);
return val != null && this.fieldPropertyIsMatch(field, property, val);
}
return false;
}
private fieldPropertyIsMatch(field: any, property: string, name: string): boolean {
let fieldVal = field[property] as string;
if (!this.hasValue(fieldVal)) {