Bug 1318203 - Don't show autocomplete UI on Password Field if it is already populated with text, r=MattN
MozReview-Commit-ID: L3cUxHYIE5R
--- a/toolkit/components/passwordmgr/nsLoginManager.js
+++ b/toolkit/components/passwordmgr/nsLoginManager.js
@@ -497,43 +497,44 @@ LoginManager.prototype = {
let results = new UserAutoCompleteResult(aSearchString, logins, {
messageManager,
isSecure,
isPasswordField,
});
aCallback.onSearchCompletion(results);
};
- if (isPasswordField) {
- // The login items won't be filtered for password field.
- aSearchString = "";
+ if (isPasswordField && aSearchString) {
+ // Return empty result on password fields with password already filled.
+ let acLookupPromise = this._autoCompleteLookupPromise = Promise.resolve({ logins: [] });
+ acLookupPromise.then(completeSearch.bind(this, acLookupPromise));
+ return;
}
if (!this._remember) {
- setTimeout(function() {
- aCallback.onSearchCompletion(new UserAutoCompleteResult(aSearchString, [], {isSecure}));
- }, 0);
+ let acLookupPromise = this._autoCompleteLookupPromise = Promise.resolve({ logins: [] });
+ acLookupPromise.then(completeSearch.bind(this, acLookupPromise));
return;
}
log.debug("AutoCompleteSearch invoked. Search is:", aSearchString);
let previousResult;
if (aPreviousResult) {
previousResult = { searchString: aPreviousResult.searchString,
logins: aPreviousResult.wrappedJSObject.logins };
} else {
previousResult = null;
}
let rect = BrowserUtils.getElementBoundingScreenRect(aElement);
- let autoCompleteLookupPromise = this._autoCompleteLookupPromise =
+ let acLookupPromise = this._autoCompleteLookupPromise =
LoginManagerContent._autoCompleteSearchAsync(aSearchString, previousResult,
aElement, rect);
- autoCompleteLookupPromise.then(completeSearch.bind(this, autoCompleteLookupPromise))
+ acLookupPromise.then(completeSearch.bind(this, acLookupPromise))
.then(null, Cu.reportError);
},
stopSearch() {
this._autoCompleteLookupPromise = null;
},
}; // end of LoginManager implementation