Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Unified Diff: chrome/browser/resources/gaia_auth/main.js

Issue 671183002: Revert of Inline sign in extracts gaia id from HTTP header and seeds account tracker (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/gaia_auth/background.js ('k') | chrome/browser/resources/gaia_auth/success.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/gaia_auth/main.js
diff --git a/chrome/browser/resources/gaia_auth/main.js b/chrome/browser/resources/gaia_auth/main.js
index b9a57d86509da88b9b06adcc02faa24e00d563f6..ba48c65dc9049f2dc8cb453d754480286497b3f8 100644
--- a/chrome/browser/resources/gaia_auth/main.js
+++ b/chrome/browser/resources/gaia_auth/main.js
@@ -48,7 +48,6 @@
Authenticator.prototype = {
email_: null,
- gaiaId_: null,
// Depending on the key type chosen, this will contain the plain text password
// or a credential derived from it along with the information required to
@@ -57,9 +56,6 @@
// when support for key types other than plain text password is added.
passwordBytes_: null,
- chooseWhatToSync_: false,
- skipForNow_: false,
- sessionIndex_: null,
attemptToken_: null,
// Input params from extension initialization URL.
@@ -108,6 +104,10 @@
this.GAIA_URL.indexOf(msg.origin) == 0;
},
+ isInternalMessage_: function(msg) {
+ return msg.origin == Authenticator.THIS_EXTENSION_ORIGIN;
+ },
+
isParentMessage_: function(msg) {
return msg.origin == this.parentPage_;
},
@@ -165,9 +165,9 @@
});
this.supportChannel_.registerMessage(
'switchToFullTab', this.switchToFullTab_.bind(this));
- }
- this.supportChannel_.registerMessage(
- 'completeLogin', this.onCompleteLogin_.bind(this));
+ this.supportChannel_.registerMessage(
+ 'completeLogin', this.completeLogin_.bind(this));
+ }
this.initSAML_();
this.maybeInitialized_();
}.bind(this));
@@ -198,7 +198,7 @@
/**
* Invoked when the background script sends a message to indicate that the
* current content does not fit in a constrained window.
- * @param {Object=} msg Extra info to send.
+ * @param {Object=} opt_extraMsg Optional extra info to send.
*/
switchToFullTab_: function(msg) {
var parentMsg = {
@@ -220,11 +220,8 @@
this.passwordBytes_,
'usingSAML': this.isSAMLFlow_,
'chooseWhatToSync': this.chooseWhatToSync_ || false,
- 'skipForNow': (opt_extraMsg && opt_extraMsg.skipForNow) ||
- this.skipForNow_,
- 'sessionIndex': (opt_extraMsg && opt_extraMsg.sessionIndex) ||
- this.sessionIndex_,
- 'gaiaId': (opt_extraMsg && opt_extraMsg.gaiaId) || this.gaiaId_
+ 'skipForNow': opt_extraMsg && opt_extraMsg.skipForNow,
+ 'sessionIndex': opt_extraMsg && opt_extraMsg.sessionIndex
};
window.parent.postMessage(msg, this.parentPage_);
this.supportChannel_.send({name: 'resetAuth'});
@@ -271,7 +268,6 @@
// from the GAIA login form are no longer relevant and can be discarded.
this.isSAMLFlow_ = true;
this.email_ = null;
- this.gaiaId_ = null;
this.passwordBytes_ = null;
}
@@ -320,9 +316,8 @@
console.error('Authenticator.onAPICall_: unsupported key type');
return;
}
- // Not setting |email_| and |gaiaId_| because this API call will
- // eventually be followed by onCompleteLogin_() which does set it.
this.apiToken_ = call.token;
+ this.email_ = call.user;
this.passwordBytes_ = call.passwordBytes;
} else if (call.method == 'confirm') {
if (call.token != this.apiToken_)
@@ -347,34 +342,21 @@
});
},
- /**
- * Callback invoked for 'completeLogin' message.
- * @param {Object=} msg Message sent from background page.
- */
- onCompleteLogin_: function(msg) {
- if (!msg.email || !msg.gaiaId || !msg.sessionIndex) {
- console.error('Missing fields to complete login.');
- window.parent.postMessage({method: 'missingGaiaInfo'}, this.parentPage_);
+ onConfirmLogin_: function() {
+ if (!this.isSAMLFlow_) {
+ this.completeLogin_();
return;
}
- // Skip SAML extra steps for desktop flow and non-SAML flow.
- if (!this.isSAMLFlow_ || this.desktopMode_) {
- this.completeLogin_(msg);
- return;
- }
-
- this.email_ = msg.email;
- this.gaiaId_ = msg.gaiaId;
- // Password from |msg| is not used because ChromeOS SAML flow
- // gets password by asking user to confirm.
- this.skipForNow_ = msg.skipForNow;
- this.sessionIndex_ = msg.sessionIndex;
-
- if (this.passwordBytes_) {
- window.parent.postMessage({method: 'samlApiUsed'}, this.parentPage_);
- this.completeLogin_(msg);
- } else {
+ var apiUsed = !!this.passwordBytes_;
+
+ // Retrieve the e-mail address of the user who just authenticated from GAIA.
+ window.parent.postMessage({method: 'retrieveAuthenticatedUserEmail',
+ attemptToken: this.attemptToken_,
+ apiUsed: apiUsed},
+ this.parentPage_);
+
+ if (!apiUsed) {
this.supportChannel_.sendWithCallback(
{name: 'getScrapedPasswords'},
function(passwords) {
@@ -392,6 +374,13 @@
}
},
+ maybeCompleteSAMLLogin_: function() {
+ // SAML login is complete when the user's e-mail address has been retrieved
+ // from GAIA and the user has successfully confirmed the password.
+ if (this.email_ !== null && this.passwordBytes_ !== null)
+ this.completeLogin_();
+ },
+
onVerifyConfirmedPassword_: function(password) {
this.supportChannel_.sendWithCallback(
{name: 'getScrapedPasswords'},
@@ -399,10 +388,7 @@
for (var i = 0; i < passwords.length; ++i) {
if (passwords[i] == password) {
this.passwordBytes_ = passwords[i];
- // SAML login is complete when the user has successfully
- // confirmed the password.
- if (this.passwordBytes_ !== null)
- this.completeLogin_();
+ this.maybeCompleteSAMLLogin_();
return;
}
}
@@ -415,7 +401,6 @@
onMessage: function(e) {
var msg = e.data;
if (msg.method == 'attemptLogin' && this.isGaiaMessage_(e)) {
- // At this point GAIA does not yet know the gaiaId, so its not set here.
this.email_ = msg.email;
this.passwordBytes_ = msg.password;
this.attemptToken_ = msg.attemptToken;
@@ -431,15 +416,27 @@
this.maybeInitialized_();
}
this.email_ = null;
- this.gaiaId_ = null;
- this.sessionIndex_ = false;
this.passwordBytes_ = null;
this.attemptToken_ = null;
this.isSAMLFlow_ = false;
- this.skipForNow_ = false;
- this.chooseWhatToSync_ = false;
if (this.supportChannel_)
this.supportChannel_.send({name: 'resetAuth'});
+ } else if (msg.method == 'setAuthenticatedUserEmail' &&
+ this.isParentMessage_(e)) {
+ if (this.attemptToken_ == msg.attemptToken) {
+ this.email_ = msg.email;
+ this.maybeCompleteSAMLLogin_();
+ }
+ } else if (msg.method == 'confirmLogin' && this.isInternalMessage_(e)) {
+ // In the desktop mode, Chrome needs to wait for extra info such as
+ // session index from the background JS.
+ if (this.desktopMode_)
+ return;
+
+ if (this.attemptToken_ == msg.attemptToken)
+ this.onConfirmLogin_();
+ else
+ console.error('Authenticator.onMessage: unexpected attemptToken!?');
} else if (msg.method == 'verifyConfirmedPassword' &&
this.isParentMessage_(e)) {
this.onVerifyConfirmedPassword_(msg.password);
« no previous file with comments | « chrome/browser/resources/gaia_auth/background.js ('k') | chrome/browser/resources/gaia_auth/success.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698