Bug 1332165 - Trim values for the purposes of 'skipEmptyFields' in _getPasswordFields. r=dolske
We will no longer prompt to save passwords consisting solely of whitespace.
MozReview-Commit-ID: FknB39TCHEa
--- a/toolkit/components/passwordmgr/LoginManagerContent.jsm
+++ b/toolkit/components/passwordmgr/LoginManagerContent.jsm
@@ -610,17 +610,17 @@ var LoginManagerContent = {
// Exclude ones matching a `notPasswordSelector`, if specified.
if (fieldOverrideRecipe && fieldOverrideRecipe.notPasswordSelector &&
element.matches(fieldOverrideRecipe.notPasswordSelector)) {
log("skipping password field (id/name is", element.id, " / ",
element.name + ") due to recipe:", fieldOverrideRecipe);
continue;
}
- if (skipEmptyFields && !element.value) {
+ if (skipEmptyFields && !element.value.trim()) {
continue;
}
pwFields[pwFields.length] = {
index : i,
element
};
}
--- a/toolkit/components/passwordmgr/test/unit/test_getPasswordFields.js
+++ b/toolkit/components/passwordmgr/test/unit/test_getPasswordFields.js
@@ -72,18 +72,28 @@ const TESTCASES = [
{
description: "2 password fields outside of a <form> with 1 linked via @form + skipEmpty",
document: `<input id="pw1" type=password><input id="pw2" type=password form="form1">
<form id="form1"></form>`,
returnedFieldIDsByFormLike: [[], []],
skipEmptyFields: true,
},
{
+ description: "skipEmptyFields should also skip white-space only fields",
+ document: `<input id="pw-space" type=password value=" ">
+ <input id="pw-tab" type=password value=" ">
+ <input id="pw-newline" type=password form="form1" value="
+">
+ <form id="form1"></form>`,
+ returnedFieldIDsByFormLike: [[], []],
+ skipEmptyFields: true,
+ },
+ {
description: "2 password fields outside of a <form> with 1 linked via @form + skipEmpty with 1 empty",
- document: `<input id="pw1" type=password value="pass1"><input id="pw2" type=password form="form1">
+ document: `<input id="pw1" type=password value=" pass1 "><input id="pw2" type=password form="form1">
<form id="form1"></form>`,
returnedFieldIDsByFormLike: [["pw1"], []],
skipEmptyFields: true,
fieldOverrideRecipe: {
// Ensure a recipe without `notPasswordSelector` doesn't cause a problem.
hosts: ["localhost:8080"],
},
},