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

Side by Side Diff: chrome/browser/resources/gaia_auth_host/gaia_auth_host.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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview An UI component to host gaia auth extension in an iframe. 6 * @fileoverview An UI component to host gaia auth extension in an iframe.
7 * After the component binds with an iframe, call its {@code load} to start the 7 * After the component binds with an iframe, call its {@code load} to start the
8 * authentication flow. There are two events would be raised after this point: 8 * authentication flow. There are two events would be raised after this point:
9 * a 'ready' event when the authentication UI is ready to use and a 'completed' 9 * a 'ready' event when the authentication UI is ready to use and a 'completed'
10 * event when the authentication is completed successfully. If caller is 10 * event when the authentication is completed successfully. If caller is
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 * authMode: 'x', // Authorization mode, default/offline/desktop. 134 * authMode: 'x', // Authorization mode, default/offline/desktop.
135 * } 135 * }
136 * } 136 * }
137 * </pre> 137 * </pre>
138 * @type {function(Object)} 138 * @type {function(Object)}
139 * @private 139 * @private
140 */ 140 */
141 successCallback_: null, 141 successCallback_: null,
142 142
143 /** 143 /**
144 * Invoked when GAIA indicates login success and SAML was used. At this
145 * point, GAIA cookies are present but the identity of the authenticated
146 * user is not known. The embedder of GaiaAuthHost should extract the GAIA
147 * cookies from the cookie jar, query GAIA for the authenticated user's
148 * e-mail address and invoke GaiaAuthHost.setAuthenticatedUserEmail with the
149 * result. The argument is an opaque token that should be passed back to
150 * GaiaAuthHost.setAuthenticatedUserEmail.
151 * @type {function(number)}
152 */
153 retrieveAuthenticatedUserEmailCallback_: null,
154
155 /**
144 * Invoked when the auth flow needs a user to confirm his/her passwords. 156 * Invoked when the auth flow needs a user to confirm his/her passwords.
145 * This could happen when there are more than one passwords scraped during 157 * This could happen when there are more than one passwords scraped during
146 * SAML flow. The embedder of GaiaAuthHost should show an UI to collect a 158 * SAML flow. The embedder of GaiaAuthHost should show an UI to collect a
147 * password from user then call GaiaAuthHost.verifyConfirmedPassword to 159 * password from user then call GaiaAuthHost.verifyConfirmedPassword to
148 * verify. If the password is good, the auth flow continues with success 160 * verify. If the password is good, the auth flow continues with success
149 * path. Otherwise, confirmPasswordCallback_ is invoked again. 161 * path. Otherwise, confirmPasswordCallback_ is invoked again.
150 * @type {function()} 162 * @type {function()}
151 */ 163 */
152 confirmPasswordCallback_: null, 164 confirmPasswordCallback_: null,
153 165
154 /** 166 /**
155 * Similar to confirmPasswordCallback_ but is used when there is no 167 * Similar to confirmPasswordCallback_ but is used when there is no
156 * password scraped after a success authentication. The authenticated user 168 * password scraped after a success authentication. The authenticated user
157 * account is passed to the callback. The embedder should take over the 169 * account is passed to the callback. The embedder should take over the
158 * flow and decide what to do next. 170 * flow and decide what to do next.
159 * @type {function(string)} 171 * @type {function(string)}
160 */ 172 */
161 noPasswordCallback_: null, 173 noPasswordCallback_: null,
162 174
163 /** 175 /**
164 * Invoked when the authentication flow had to be aborted because content 176 * Invoked when the authentication flow had to be aborted because content
165 * served over an unencrypted connection was detected. 177 * served over an unencrypted connection was detected.
166 */
167 insecureContentBlockedCallback_: null, 178 insecureContentBlockedCallback_: null,
168 179
169 /** 180 /**
170 * Invoked to display an error message to the user when a GAIA error occurs
171 * during authentication.
172 * @type {function()}
173 */
174 missingGaiaInfoCallback_: null,
175
176 /**
177 * Invoked to record that the credentials passing API was used.
178 * @type {function()}
179 */
180 samlApiUsedCallback_: null,
181
182 /**
183 * The iframe container. 181 * The iframe container.
184 * @type {HTMLIFrameElement} 182 * @type {HTMLIFrameElement}
185 */ 183 */
186 get frame() { 184 get frame() {
187 return this.frame_; 185 return this.frame_;
188 }, 186 },
189 187
190 /** 188 /**
189 * Sets retrieveAuthenticatedUserEmailCallback_.
190 * @type {function()}
191 */
192 set retrieveAuthenticatedUserEmailCallback(callback) {
193 this.retrieveAuthenticatedUserEmailCallback_ = callback;
194 },
195
196 /**
191 * Sets confirmPasswordCallback_. 197 * Sets confirmPasswordCallback_.
192 * @type {function()} 198 * @type {function()}
193 */ 199 */
194 set confirmPasswordCallback(callback) { 200 set confirmPasswordCallback(callback) {
195 this.confirmPasswordCallback_ = callback; 201 this.confirmPasswordCallback_ = callback;
196 }, 202 },
197 203
198 /** 204 /**
199 * Sets noPasswordCallback_. 205 * Sets noPasswordCallback_.
200 * @type {function()} 206 * @type {function()}
201 */ 207 */
202 set noPasswordCallback(callback) { 208 set noPasswordCallback(callback) {
203 this.noPasswordCallback_ = callback; 209 this.noPasswordCallback_ = callback;
204 }, 210 },
205 211
206 /** 212 /**
207 * Sets insecureContentBlockedCallback_. 213 * Sets insecureContentBlockedCallback_.
208 * @type {function(string)} 214 * @type {function(string)}
209 */ 215 */
210 set insecureContentBlockedCallback(callback) { 216 set insecureContentBlockedCallback(callback) {
211 this.insecureContentBlockedCallback_ = callback; 217 this.insecureContentBlockedCallback_ = callback;
212 }, 218 },
213 219
214 /** 220 /**
215 * Sets missingGaiaInfoCallback_.
216 * @type {function()}
217 */
218 set missingGaiaInfoCallback(callback) {
219 this.missingGaiaInfoCallback_ = callback;
220 },
221
222 /**
223 * Sets samlApiUsedCallback_.
224 * @type {function()}
225 */
226 set samlApiUsedCallback(callback) {
227 this.samlApiUsedCallback_ = callback;
228 },
229
230 /**
231 * Loads the auth extension. 221 * Loads the auth extension.
232 * @param {AuthMode} authMode Authorization mode. 222 * @param {AuthMode} authMode Authorization mode.
233 * @param {Object} data Parameters for the auth extension. See the auth 223 * @param {Object} data Parameters for the auth extension. See the auth
234 * extension's main.js for all supported params and their defaults. 224 * extension's main.js for all supported params and their defaults.
235 * @param {function(Object)} successCallback A function to be called when 225 * @param {function(Object)} successCallback A function to be called when
236 * the authentication is completed successfully. The callback is 226 * the authentication is completed successfully. The callback is
237 * invoked with a credential object. 227 * invoked with a credential object.
238 */ 228 */
239 load: function(authMode, data, successCallback) { 229 load: function(authMode, data, successCallback) {
240 var params = []; 230 var params = [];
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 */ 279 */
290 verifyConfirmedPassword: function(password) { 280 verifyConfirmedPassword: function(password) {
291 var msg = { 281 var msg = {
292 method: 'verifyConfirmedPassword', 282 method: 'verifyConfirmedPassword',
293 password: password 283 password: password
294 }; 284 };
295 this.frame_.contentWindow.postMessage(msg, AUTH_URL_BASE); 285 this.frame_.contentWindow.postMessage(msg, AUTH_URL_BASE);
296 }, 286 },
297 287
298 /** 288 /**
289 * Sends the authenticated user's e-mail address to the auth extension.
290 * @param {number} attemptToken The opaque token provided to the
291 * retrieveAuthenticatedUserEmailCallback_.
292 * @param {string} email The authenticated user's e-mail address.
293 */
294 setAuthenticatedUserEmail: function(attemptToken, email) {
295 var msg = {
296 method: 'setAuthenticatedUserEmail',
297 attemptToken: attemptToken,
298 email: email
299 };
300 this.frame_.contentWindow.postMessage(msg, AUTH_URL_BASE);
301 },
302
303 /**
299 * Invoked to process authentication success. 304 * Invoked to process authentication success.
300 * @param {Object} credentials Credential object to pass to success 305 * @param {Object} credentials Credential object to pass to success
301 * callback. 306 * callback.
302 * @private 307 * @private
303 */ 308 */
304 onAuthSuccess_: function(credentials) { 309 onAuthSuccess_: function(credentials) {
305 if (this.successCallback_) 310 if (this.successCallback_)
306 this.successCallback_(credentials); 311 this.successCallback_(credentials);
307 cr.dispatchSimpleEvent(this, 'completed'); 312 cr.dispatchSimpleEvent(this, 'completed');
308 }, 313 },
(...skipping 25 matching lines...) Expand all
334 } 339 }
335 340
336 if (/^complete(Login|Authentication)$|^offlineLogin$/.test(msg.method)) { 341 if (/^complete(Login|Authentication)$|^offlineLogin$/.test(msg.method)) {
337 if (!msg.email && !this.email_ && !msg.skipForNow) { 342 if (!msg.email && !this.email_ && !msg.skipForNow) {
338 var msg = {method: 'redirectToSignin'}; 343 var msg = {method: 'redirectToSignin'};
339 this.frame_.contentWindow.postMessage(msg, AUTH_URL_BASE); 344 this.frame_.contentWindow.postMessage(msg, AUTH_URL_BASE);
340 return; 345 return;
341 } 346 }
342 this.onAuthSuccess_({email: msg.email, 347 this.onAuthSuccess_({email: msg.email,
343 password: msg.password, 348 password: msg.password,
344 gaiaId: msg.gaiaId,
345 useOffline: msg.method == 'offlineLogin', 349 useOffline: msg.method == 'offlineLogin',
346 usingSAML: msg.usingSAML || false, 350 usingSAML: msg.usingSAML || false,
347 chooseWhatToSync: msg.chooseWhatToSync, 351 chooseWhatToSync: msg.chooseWhatToSync,
348 skipForNow: msg.skipForNow || false, 352 skipForNow: msg.skipForNow || false,
349 sessionIndex: msg.sessionIndex || ''}); 353 sessionIndex: msg.sessionIndex || ''});
350 return; 354 return;
351 } 355 }
352 356
357 if (msg.method == 'retrieveAuthenticatedUserEmail') {
358 if (this.retrieveAuthenticatedUserEmailCallback_) {
359 this.retrieveAuthenticatedUserEmailCallback_(msg.attemptToken,
360 msg.apiUsed);
361 } else {
362 console.error(
363 'GaiaAuthHost: Invalid retrieveAuthenticatedUserEmailCallback_.');
364 }
365 return;
366 }
367
353 if (msg.method == 'confirmPassword') { 368 if (msg.method == 'confirmPassword') {
354 if (this.confirmPasswordCallback_) 369 if (this.confirmPasswordCallback_)
355 this.confirmPasswordCallback_(msg.passwordCount); 370 this.confirmPasswordCallback_(msg.passwordCount);
356 else 371 else
357 console.error('GaiaAuthHost: Invalid confirmPasswordCallback_.'); 372 console.error('GaiaAuthHost: Invalid confirmPasswordCallback_.');
358 return; 373 return;
359 } 374 }
360 375
361 if (msg.method == 'noPassword') { 376 if (msg.method == 'noPassword') {
362 if (this.noPasswordCallback_) 377 if (this.noPasswordCallback_)
(...skipping 17 matching lines...) Expand all
380 'GaiaAuthHost: Invalid insecureContentBlockedCallback_.'); 395 'GaiaAuthHost: Invalid insecureContentBlockedCallback_.');
381 } 396 }
382 return; 397 return;
383 } 398 }
384 399
385 if (msg.method == 'switchToFullTab') { 400 if (msg.method == 'switchToFullTab') {
386 chrome.send('switchToFullTab', [msg.url]); 401 chrome.send('switchToFullTab', [msg.url]);
387 return; 402 return;
388 } 403 }
389 404
390 if (msg.method == 'missingGaiaInfo') {
391 if (this.missingGaiaInfoCallback_) {
392 this.missingGaiaInfoCallback_();
393 } else {
394 console.error('GaiaAuthHost: Invalid missingGaiaInfoCallback_.');
395 }
396 return;
397 }
398
399 if (msg.method == 'samlApiUsed') {
400 if (this.samlApiUsedCallback_) {
401 this.samlApiUsedCallback_();
402 } else {
403 console.error('GaiaAuthHost: Invalid samlApiUsedCallback_.');
404 }
405 return;
406 }
407
408 console.error('Unknown message method=' + msg.method); 405 console.error('Unknown message method=' + msg.method);
409 } 406 }
410 }; 407 };
411 408
412 /** 409 /**
413 * The current auth flow of the hosted gaia_auth extension. 410 * The current auth flow of the hosted gaia_auth extension.
414 * @type {AuthFlow} 411 * @type {AuthFlow}
415 */ 412 */
416 cr.defineProperty(GaiaAuthHost, 'authFlow'); 413 cr.defineProperty(GaiaAuthHost, 'authFlow');
417 414
418 GaiaAuthHost.SUPPORTED_PARAMS = SUPPORTED_PARAMS; 415 GaiaAuthHost.SUPPORTED_PARAMS = SUPPORTED_PARAMS;
419 GaiaAuthHost.LOCALIZED_STRING_PARAMS = LOCALIZED_STRING_PARAMS; 416 GaiaAuthHost.LOCALIZED_STRING_PARAMS = LOCALIZED_STRING_PARAMS;
420 GaiaAuthHost.AuthMode = AuthMode; 417 GaiaAuthHost.AuthMode = AuthMode;
421 GaiaAuthHost.AuthFlow = AuthFlow; 418 GaiaAuthHost.AuthFlow = AuthFlow;
422 419
423 return { 420 return {
424 GaiaAuthHost: GaiaAuthHost 421 GaiaAuthHost: GaiaAuthHost
425 }; 422 };
426 }); 423 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/gaia_auth/success.js ('k') | chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698