Bug 1426652 - Allow the form with non-autocomplete-attr cc-number and cc-name as valid credit card form, r=lchang
MozReview-Commit-ID: 8eqJUSYyPXr
--- a/browser/extensions/formautofill/FormAutofillHandler.jsm
+++ b/browser/extensions/formautofill/FormAutofillHandler.jsm
@@ -735,32 +735,39 @@ class FormAutofillCreditCardSection exte
constructor(fieldDetails, winUtils) {
super(fieldDetails, winUtils);
}
isValidSection() {
let ccNumberReason = "";
let hasCCNumber = false;
let hasExpiryDate = false;
+ let hasCCName = false;
for (let detail of this.fieldDetails) {
switch (detail.fieldName) {
case "cc-number":
hasCCNumber = true;
ccNumberReason = detail._reason;
break;
+ case "cc-name":
+ case "cc-given-name":
+ case "cc-additional-name":
+ case "cc-family-name":
+ hasCCName = true;
+ break;
case "cc-exp":
case "cc-exp-month":
case "cc-exp-year":
hasExpiryDate = true;
break;
}
}
- return hasCCNumber && (ccNumberReason == "autocomplete" || hasExpiryDate);
+ return hasCCNumber && (ccNumberReason == "autocomplete" || hasExpiryDate || hasCCName);
}
isEnabled() {
return FormAutofillUtils.isAutofillCreditCardsEnabled;
}
isRecordCreatable(record) {
return record["cc-number"] && FormAutofillUtils.isCCNumber(record["cc-number"]);
--- a/browser/extensions/formautofill/test/unit/test_collectFormFields.js
+++ b/browser/extensions/formautofill/test/unit/test_collectFormFields.js
@@ -168,33 +168,53 @@ const TESTCASES = [
document: `<form>
<input id="given-name" autocomplete="shipping given-name">
<input autocomplete="shipping address-level2">
</form>`,
sections: [[]],
validFieldDetails: [],
},
{
+ description: "An invalid credit card form due to non-autocomplete-attr cc-number only",
+ document: `<form>
+ <input id="cc-number" name="cc-number">
+ </form>`,
+ sections: [[]],
+ validFieldDetails: [],
+ },
+ {
description: "An invalid credit card form due to omitted cc-number.",
document: `<form>
<input id="cc-name" autocomplete="cc-name">
<input id="cc-exp-month" autocomplete="cc-exp-month">
<input id="cc-exp-year" autocomplete="cc-exp-year">
</form>`,
sections: [[]],
validFieldDetails: [],
},
{
- description: "An invalid credit card form due to non-autocomplete-attr cc-number and omitted cc-exp-*.",
+ description: "A valid credit card form with non-autocomplete-attr cc-number and cc-name.",
document: `<form>
<input id="cc-name" autocomplete="cc-name">
<input id="cc-number" name="card-number">
</form>`,
- sections: [[]],
- validFieldDetails: [],
+ sections: [
+ [
+ {"section": "", "addressType": "", "contactType": "", "fieldName": "cc-name"},
+ {"section": "", "addressType": "", "contactType": "", "fieldName": "cc-number"},
+ ],
+ ],
+ validFieldDetails: [
+ {"section": "", "addressType": "", "contactType": "", "fieldName": "cc-name"},
+ {"section": "", "addressType": "", "contactType": "", "fieldName": "cc-number"},
+ ],
+ ids: [
+ "cc-name",
+ "cc-number",
+ ],
},
{
description: "A valid credit card form with autocomplete-attr cc-number only.",
document: `<form>
<input id="cc-number" autocomplete="cc-number">
</form>`,
sections: [
[