| 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 914bed5748e937bab677567b467362107d3c81fd..dc1ebe425550250a03bb193809616ea94738fd0a 100644
|
| --- a/chrome/browser/resources/gaia_auth/main.js
|
| +++ b/chrome/browser/resources/gaia_auth/main.js
|
| @@ -36,6 +36,15 @@ Authenticator.API_KEY_TYPES = [
|
| ];
|
|
|
| /**
|
| + * Allowed origins of the hosting page.
|
| + * @type {Array.<string>}
|
| + */
|
| +Authenticator.ALLOWED_PARENT_ORIGINS = [
|
| + 'chrome://oobe',
|
| + 'chrome://chrome-signin'
|
| +];
|
| +
|
| +/**
|
| * Singleton getter of Authenticator.
|
| * @return {Object} The singleton instance of Authenticator.
|
| */
|
| @@ -73,23 +82,32 @@ Authenticator.prototype = {
|
|
|
| GAIA_URL: 'https://accounts.google.com/',
|
| GAIA_PAGE_PATH: 'ServiceLogin?skipvpage=true&sarp=1&rm=hide',
|
| - PARENT_PAGE: 'chrome://oobe/',
|
| SERVICE_ID: 'chromeoslogin',
|
| CONTINUE_URL: Authenticator.THIS_EXTENSION_ORIGIN + '/success.html',
|
| CONSTRAINED_FLOW_SOURCE: 'chrome',
|
|
|
| initialize: function() {
|
| - var params = getUrlSearchParams(location.search);
|
| - this.parentPage_ = params.parentPage || this.PARENT_PAGE;
|
| - this.gaiaUrl_ = params.gaiaUrl || this.GAIA_URL;
|
| + var handleInitializeMessage = function(e) {
|
| + if (Authenticator.ALLOWED_PARENT_ORIGINS.indexOf(e.origin) == -1) {
|
| + console.error('Unexpected parent message, origin=' + e.origin);
|
| + return;
|
| + }
|
| + window.removeEventListener('message', handleInitializeMessage);
|
|
|
| - // Sanitize Gaia url before continuing.
|
| - var scheme = extractProtocol(this.gaiaUrl_);
|
| - if (scheme != 'https:' && scheme != 'http:') {
|
| - console.error('Bad Gaia URL, url=' + this.gaiaURL_);
|
| - return;
|
| - }
|
| + var params = e.data;
|
| + params.parentPage = e.origin;
|
| + this.initializeFromParent_(params);
|
| + this.onPageLoad_();
|
| + }.bind(this);
|
|
|
| + document.addEventListener('DOMContentLoaded', function() {
|
| + window.addEventListener('message', handleInitializeMessage);
|
| + });
|
| + },
|
| +
|
| + initializeFromParent_: function(params) {
|
| + this.parentPage_ = params.parentPage;
|
| + this.gaiaUrl_ = params.gaiaUrl || this.GAIA_URL;
|
| this.gaiaPath_ = params.gaiaPath || this.GAIA_PAGE_PATH;
|
| this.inputLang_ = params.hl;
|
| this.inputEmail_ = params.email;
|
| @@ -108,8 +126,6 @@ Authenticator.prototype = {
|
| this.assumeLoadedOnLoadEvent_ =
|
| this.gaiaPath_.indexOf('ServiceLogin') !== 0 ||
|
| this.service_ !== 'chromeoslogin';
|
| -
|
| - document.addEventListener('DOMContentLoaded', this.onPageLoad_.bind(this));
|
| },
|
|
|
| isGaiaMessage_: function(msg) {
|
|
|