summaryrefslogtreecommitdiffstats
path: root/mailnews/base/src/msgOAuth2Module.js
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2019-12-30 08:46:47 -0500
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-01-11 13:43:22 +0100
commit798cdc9e47f5b5231fb64d0ff552658026763b70 (patch)
tree449b72bf49a7cc6e76dcc9a088b96a1c59d1a446 /mailnews/base/src/msgOAuth2Module.js
parent1110944d4b3dffbd822d22ad2cc75a32eda718d7 (diff)
downloadUXP-798cdc9e47f5b5231fb64d0ff552658026763b70.tar
UXP-798cdc9e47f5b5231fb64d0ff552658026763b70.tar.gz
UXP-798cdc9e47f5b5231fb64d0ff552658026763b70.tar.lz
UXP-798cdc9e47f5b5231fb64d0ff552658026763b70.tar.xz
UXP-798cdc9e47f5b5231fb64d0ff552658026763b70.zip
Bug 1176399 - Multiple requests for master password when GMail OAuth2 is enabled.
Diffstat (limited to 'mailnews/base/src/msgOAuth2Module.js')
-rw-r--r--mailnews/base/src/msgOAuth2Module.js42
1 files changed, 33 insertions, 9 deletions
diff --git a/mailnews/base/src/msgOAuth2Module.js b/mailnews/base/src/msgOAuth2Module.js
index 407ab0519..22d5dc572 100644
--- a/mailnews/base/src/msgOAuth2Module.js
+++ b/mailnews/base/src/msgOAuth2Module.js
@@ -126,19 +126,43 @@ OAuth2Module.prototype = {
}
}
- // Otherwise, we need a new login, so create one and fill it in.
- let login = Cc["@mozilla.org/login-manager/loginInfo;1"]
- .createInstance(Ci.nsILoginInfo);
- login.init(this._loginUrl, null, this._scope, this._username, token,
- '', '');
- loginMgr.addLogin(login);
+ // Unless the token is null, we need to create and fill in a new login
+ if (token) {
+ let login = Cc["@mozilla.org/login-manager/loginInfo;1"]
+ .createInstance(Ci.nsILoginInfo);
+ login.init(this._loginUrl, null, this._scope, this._username, token,
+ '', '');
+ loginMgr.addLogin(login);
+ }
return token;
},
connect(aWithUI, aListener) {
- this._oauth.connect(() => aListener.onSuccess(this._oauth.accessToken),
- x => aListener.onFailure(x),
- aWithUI, false);
+ let oauth = this._oauth;
+ let promptlistener = {
+ onPromptStartAsync: function(callback) {
+ oauth.connect(() => {
+ this.onPromptAuthAvailable();
+ callback.onAuthResult(true);
+ }, (err) => {
+ this.onPromptCanceled();
+ callback.onAuthResult(false);
+ }, aWithUI, false);
+ },
+
+ onPromptAuthAvailable: function() {
+ aListener.onSuccess(oauth.accessToken);
+ },
+ onPromptCanceled: function() {
+ aListener.onFailure(Components.results.NS_ERROR_ABORT);
+ },
+ onPromptStart: function() {}
+ };
+
+ let asyncprompter = Components.classes["@mozilla.org/messenger/msgAsyncPrompter;1"]
+ .getService(Components.interfaces.nsIMsgAsyncPrompter);
+ let promptkey = this._loginUrl + "/" + this._username;
+ asyncprompter.queueAsyncAuthPrompt(promptkey, false, promptlistener);
},
buildXOAuth2String() {