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

Side by Side Diff: chrome/browser/resources/gaia_auth_host/gaia_auth_host.js

Issue 902493003: cros: Pass gaia_auth init params via postMessage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix nits Created 5 years, 10 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
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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 this.frame_ = typeof container == 'string' ? $(container) : container; 103 this.frame_ = typeof container == 'string' ? $(container) : container;
104 assert(this.frame_); 104 assert(this.frame_);
105 window.addEventListener('message', 105 window.addEventListener('message',
106 this.onMessage_.bind(this), false); 106 this.onMessage_.bind(this), false);
107 } 107 }
108 108
109 GaiaAuthHost.prototype = { 109 GaiaAuthHost.prototype = {
110 __proto__: cr.EventTarget.prototype, 110 __proto__: cr.EventTarget.prototype,
111 111
112 /** 112 /**
113 * Auth extension params
114 * @type {Object}
115 */
116 authParams_: {},
117
118 /**
113 * An url to use with {@code reload}. 119 * An url to use with {@code reload}.
114 * @type {?string} 120 * @type {?string}
115 * @private 121 * @private
116 */ 122 */
117 reloadUrl_: null, 123 reloadUrl_: null,
118 124
119 /** 125 /**
120 * The domain name of the current auth page. 126 * The domain name of the current auth page.
121 * @type {string} 127 * @type {string}
122 */ 128 */
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 /** 236 /**
231 * Loads the auth extension. 237 * Loads the auth extension.
232 * @param {AuthMode} authMode Authorization mode. 238 * @param {AuthMode} authMode Authorization mode.
233 * @param {Object} data Parameters for the auth extension. See the auth 239 * @param {Object} data Parameters for the auth extension. See the auth
234 * extension's main.js for all supported params and their defaults. 240 * extension's main.js for all supported params and their defaults.
235 * @param {function(Object)} successCallback A function to be called when 241 * @param {function(Object)} successCallback A function to be called when
236 * the authentication is completed successfully. The callback is 242 * the authentication is completed successfully. The callback is
237 * invoked with a credential object. 243 * invoked with a credential object.
238 */ 244 */
239 load: function(authMode, data, successCallback) { 245 load: function(authMode, data, successCallback) {
240 var params = []; 246 var params = {};
241 247
242 var populateParams = function(nameList, values) { 248 var populateParams = function(nameList, values) {
243 if (!values) 249 if (!values)
244 return; 250 return;
245 251
246 for (var i in nameList) { 252 for (var i in nameList) {
247 var name = nameList[i]; 253 var name = nameList[i];
248 if (values[name]) 254 if (values[name])
249 params.push(name + '=' + encodeURIComponent(values[name])); 255 params[name] = values[name];
250 } 256 }
251 }; 257 };
252 258
253 populateParams(SUPPORTED_PARAMS, data); 259 populateParams(SUPPORTED_PARAMS, data);
254 populateParams(LOCALIZED_STRING_PARAMS, data.localizedStrings); 260 populateParams(LOCALIZED_STRING_PARAMS, data.localizedStrings);
255 params.push('parentPage=' + encodeURIComponent(window.location.origin)); 261 params['needPassword'] = true;
256 params.push('needPassword=1');
257 262
258 var url; 263 var url;
259 switch (authMode) { 264 switch (authMode) {
260 case AuthMode.OFFLINE: 265 case AuthMode.OFFLINE:
261 url = OFFLINE_AUTH_URL; 266 url = OFFLINE_AUTH_URL;
262 break; 267 break;
263 case AuthMode.DESKTOP: 268 case AuthMode.DESKTOP:
264 url = AUTH_URL; 269 url = AUTH_URL;
265 params.push('desktopMode=1'); 270 params['desktopMode'] = true;
266 break; 271 break;
267 default: 272 default:
268 url = AUTH_URL; 273 url = AUTH_URL;
269 } 274 }
270 url += '?' + params.join('&');
271 275
272 this.frame_.src = url; 276 this.authParams_ = params;
273 this.reloadUrl_ = url; 277 this.reloadUrl_ = url;
274 this.successCallback_ = successCallback; 278 this.successCallback_ = successCallback;
275 this.authFlow = AuthFlow.GAIA; 279
280 this.reload();
276 }, 281 },
277 282
278 /** 283 /**
279 * Reloads the auth extension. 284 * Reloads the auth extension.
280 */ 285 */
281 reload: function() { 286 reload: function() {
287 var sendParamsOnLoad = function() {
288 this.frame_.removeEventListener('load', sendParamsOnLoad);
289 this.frame_.contentWindow.postMessage(this.authParams_, AUTH_URL_BASE);
290 }.bind(this);
291
292 this.frame_.addEventListener('load', sendParamsOnLoad);
282 this.frame_.src = this.reloadUrl_; 293 this.frame_.src = this.reloadUrl_;
283 this.authFlow = AuthFlow.GAIA; 294 this.authFlow = AuthFlow.GAIA;
284 }, 295 },
285 296
286 /** 297 /**
287 * Verifies the supplied password by sending it to the auth extension, 298 * Verifies the supplied password by sending it to the auth extension,
288 * which will then check if it matches the scraped passwords. 299 * which will then check if it matches the scraped passwords.
289 * @param {string} password The confirmed password that needs verification. 300 * @param {string} password The confirmed password that needs verification.
290 */ 301 */
291 verifyConfirmedPassword: function(password) { 302 verifyConfirmedPassword: function(password) {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 434
424 GaiaAuthHost.SUPPORTED_PARAMS = SUPPORTED_PARAMS; 435 GaiaAuthHost.SUPPORTED_PARAMS = SUPPORTED_PARAMS;
425 GaiaAuthHost.LOCALIZED_STRING_PARAMS = LOCALIZED_STRING_PARAMS; 436 GaiaAuthHost.LOCALIZED_STRING_PARAMS = LOCALIZED_STRING_PARAMS;
426 GaiaAuthHost.AuthMode = AuthMode; 437 GaiaAuthHost.AuthMode = AuthMode;
427 GaiaAuthHost.AuthFlow = AuthFlow; 438 GaiaAuthHost.AuthFlow = AuthFlow;
428 439
429 return { 440 return {
430 GaiaAuthHost: GaiaAuthHost 441 GaiaAuthHost: GaiaAuthHost
431 }; 442 };
432 }); 443 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/gaia_auth/util.js ('k') | chrome/browser/ui/webui/signin/inline_login_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698