[tor-browser/tor-browser-31.6.0esr-4.5-1] Bug 14716: HTTP Basic Authentication prompt only displayed once

commit f0fe46bcec5946e94fd66792983b1f081913a74f Author: Kathy Brade <brade@pearlcrescent.com> Date: Fri Apr 17 16:31:28 2015 -0400 Bug 14716: HTTP Basic Authentication prompt only displayed once Modify the login manager implementation to handle the situation where storage is not available. --- toolkit/components/passwordmgr/nsLoginManager.js | 57 +++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/toolkit/components/passwordmgr/nsLoginManager.js b/toolkit/components/passwordmgr/nsLoginManager.js index a4cbdb0..19024fd 100644 --- a/toolkit/components/passwordmgr/nsLoginManager.js +++ b/toolkit/components/passwordmgr/nsLoginManager.js @@ -243,6 +243,10 @@ LoginManager.prototype = { if (logins.some(function(l) login.matches(l, true))) throw "This login already exists."; + if (!this._storage) { + throw "No storage to add login"; + } + log("Adding login"); return this._storage.addLogin(login); }, @@ -255,6 +259,12 @@ LoginManager.prototype = { */ removeLogin : function (login) { log("Removing login"); + + if (!this._storage) { + log("No storage to remove login"); + return null; + } + return this._storage.removeLogin(login); }, @@ -266,6 +276,12 @@ LoginManager.prototype = { */ modifyLogin : function (oldLogin, newLogin) { log("Modifying login"); + + if (!this._storage) { + log("No storage to modify login"); + return null; + } + return this._storage.modifyLogin(oldLogin, newLogin); }, @@ -281,6 +297,12 @@ LoginManager.prototype = { */ getAllLogins : function (count) { log("Getting a list of all logins"); + + if (!this._storage) { + log("No storage to get all logins"); + return null; + } + return this._storage.getAllLogins(count); }, @@ -292,7 +314,10 @@ LoginManager.prototype = { */ removeAllLogins : function () { log("Removing all logins"); - this._storage.removeAllLogins(); + if (!this._storage) + log("No storage to remove all logins"); + else + this._storage.removeAllLogins(); }, /* @@ -307,6 +332,12 @@ LoginManager.prototype = { */ getAllDisabledHosts : function (count) { log("Getting a list of all disabled hosts"); + + if (!this._storage) { + log("No storage to get all disabled hosts"); + return null; + } + return this._storage.getAllDisabledHosts(count); }, @@ -320,6 +351,11 @@ LoginManager.prototype = { log("Searching for logins matching host:", hostname, "formSubmitURL:", formSubmitURL, "httpRealm:", httpRealm); + if (!this._storage) { + log("No storage to find logins"); + return null; + } + return this._storage.findLogins(count, hostname, formSubmitURL, httpRealm); }, @@ -336,6 +372,11 @@ LoginManager.prototype = { searchLogins : function(count, matchData) { log("Searching for logins"); + if (!this._storage) { + log("No storage to search logins"); + return null; + } + return this._storage.searchLogins(count, matchData); }, @@ -350,6 +391,9 @@ LoginManager.prototype = { log("Counting logins matching host:", hostname, "formSubmitURL:", formSubmitURL, "httpRealm:", httpRealm); + if (!this._storage) + return 0; + return this._storage.countLogins(hostname, formSubmitURL, httpRealm); }, @@ -358,6 +402,9 @@ LoginManager.prototype = { * uiBusy */ get uiBusy() { + if (!this._storage) + return false; + return this._storage.uiBusy; }, @@ -366,6 +413,9 @@ LoginManager.prototype = { * isLoggedIn */ get isLoggedIn() { + if (!this._storage) + return false; + return this._storage.isLoggedIn; }, @@ -377,7 +427,7 @@ LoginManager.prototype = { */ getLoginSavingEnabled : function (host) { log("Checking if logins to", host, "can be saved."); - if (!this._remember) + if (!this._remember || !this._storage) return false; return this._storage.getLoginSavingEnabled(host); @@ -394,6 +444,9 @@ LoginManager.prototype = { if (hostname.indexOf("\0") != -1) throw "Invalid hostname"; + if (!this._storage) + throw "No storage to set login saving enabled"; + log("Login saving for", hostname, "now enabled?", enabled); return this._storage.setLoginSavingEnabled(hostname, enabled); },
participants (1)
-
mikeperry@torproject.org