Bug 583578 - Auto-fill password fields even if the username field is disabled or read-only. r=dolske

This commit is contained in:
Matthew Noorenberghe 2013-07-24 16:57:46 -07:00
Родитель c3deaa87e3
Коммит c5396f4401
2 изменённых файлов: 21 добавлений и 8 удалений

Просмотреть файл

@ -594,11 +594,9 @@ var LoginManagerContent = {
if (passwordField == null)
return [false, foundLogins];
// If the fields are disabled or read-only, there's nothing to do.
if (passwordField.disabled || passwordField.readOnly ||
usernameField && (usernameField.disabled ||
usernameField.readOnly)) {
log("not filling form, login fields disabled");
// If the password field is disabled or read-only, there's nothing to do.
if (passwordField.disabled || passwordField.readOnly) {
log("not filling form, password field disabled or read-only");
return [false, foundLogins];
}
@ -678,8 +676,8 @@ var LoginManagerContent = {
// should be firing notifications if and only if we can fill the form.
var selectedLogin = null;
if (usernameField && usernameField.value) {
// If username was specified in the form, only fill in the
if (usernameField && (usernameField.value || usernameField.disabled || usernameField.readOnly)) {
// If username was specified in the field, it's disabled or it's readOnly, only fill in the
// password if we find a matching login.
var username = usernameField.value.toLowerCase();
@ -714,7 +712,8 @@ var LoginManagerContent = {
var didFillForm = false;
if (selectedLogin && autofillForm && !isFormDisabled) {
// Fill the form
if (usernameField)
// Don't modify the username field if it's disabled or readOnly so we preserve its case.
if (usernameField && !(usernameField.disabled || usernameField.readOnly))
usernameField.value = selectedLogin.username;
passwordField.value = selectedLogin.password;
didFillForm = true;

Просмотреть файл

@ -63,6 +63,18 @@ Login Manager test: forms with 1 password field, part 2
<button type='submit'>Submit</button>
</form>
<form id='form10' action='formtest.js'> 10
<input type='text' name='uname' value='TESTUSER' readonly>
<input type='password' name='pname' value=''>
<button type='submit'>Submit</button>
</form>
<form id='form11' action='formtest.js'> 11
<input type='text' name='uname' value='TESTUSER' disabled>
<input type='password' name='pname' value=''>
<button type='submit'>Submit</button>
</form>
</div>
<pre id="test">
@ -83,6 +95,8 @@ function startTest() {
for (f = 5; f <= 8; f++) { checkUnmodifiedForm(f); }
// Test case-insensitive comparison of username field
checkForm(9, "testuser", "testpass");
checkForm(10, "TESTUSER", "testpass");
checkForm(11, "TESTUSER", "testpass");
SimpleTest.finish();
}