Bug 1400147 - Ignore the credit card regexps when extensions.formautofill.creditCards.available is false. r=lchang
MozReview-Commit-ID: 2WPBtJrKGJL
--- a/browser/extensions/formautofill/FormAutofillHeuristics.jsm
+++ b/browser/extensions/formautofill/FormAutofillHeuristics.jsm
@@ -471,16 +471,33 @@ this.FormAutofillHeuristics = {
"cc-name",
"cc-number",
"cc-exp-month",
"cc-exp-year",
"cc-exp",
];
let regexps = isAutoCompleteOff ? FIELDNAMES_IGNORING_AUTOCOMPLETE_OFF : Object.keys(this.RULES);
+ if (!FormAutofillUtils.isAutofillCreditCardsAvailable) {
+ if (isAutoCompleteOff) {
+ if (!this._regexpListOf_CcUnavailable_AcOff) {
+ this._regexpListOf_CcUnavailable_AcOff = regexps.filter(name => !FormAutofillUtils.isCreditCardField(name));
+ }
+ regexps = this._regexpListOf_CcUnavailable_AcOff;
+ } else {
+ if (!this._regexpListOf_CcUnavailable_AcOn) {
+ this._regexpListOf_CcUnavailable_AcOn = regexps.filter(name => !FormAutofillUtils.isCreditCardField(name));
+ }
+ regexps = this._regexpListOf_CcUnavailable_AcOn;
+ }
+ }
+ if (regexps.length == 0) {
+ return null;
+ }
+
let labelStrings;
let getElementStrings = {};
getElementStrings[Symbol.iterator] = function* () {
yield element.id;
yield element.name;
if (!labelStrings) {
labelStrings = [];
let labels = LabelUtils.findLabelElements(element);
--- a/browser/extensions/formautofill/test/unit/head.js
+++ b/browser/extensions/formautofill/test/unit/head.js
@@ -191,18 +191,20 @@ function objectMatches(object, fields) {
}
actual[key] = object[key];
}
return ObjectUtils.deepEqual(actual, fields);
}
add_task(async function head_initialize() {
Services.prefs.setStringPref("extensions.formautofill.available", "on");
+ Services.prefs.setBoolPref("extensions.formautofill.creditCards.available", true);
Services.prefs.setBoolPref("extensions.formautofill.heuristics.enabled", true);
Services.prefs.setBoolPref("dom.forms.autocomplete.formautofill", true);
// Clean up after every test.
do_register_cleanup(function head_cleanup() {
Services.prefs.clearUserPref("extensions.formautofill.available");
+ Services.prefs.clearUserPref("extensions.formautofill.creditCards.available");
Services.prefs.clearUserPref("extensions.formautofill.heuristics.enabled");
Services.prefs.clearUserPref("dom.forms.autocomplete.formautofill");
});
});