diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-01-29 16:35:13 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-02-01 15:33:35 +0000 |
commit | c8c2d1901aec01e934adf561a9fdf0cc776cdef8 (patch) | |
tree | 9157c3d9815e5870799e070b113813bec53e0535 /chromium/chrome/browser/resources/gaia_auth_host/authenticator.js | |
parent | abefd5095b41dac94ca451d784ab6e27372e981a (diff) |
BASELINE: Update Chromium to 64.0.3282.139
Change-Id: I1cae68fe9c94ff7608b26b8382fc19862cdb293a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/chrome/browser/resources/gaia_auth_host/authenticator.js')
-rw-r--r-- | chromium/chrome/browser/resources/gaia_auth_host/authenticator.js | 99 |
1 files changed, 73 insertions, 26 deletions
diff --git a/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js b/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js index fa1e41103f4..f55f6593447 100644 --- a/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js +++ b/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js @@ -3,6 +3,7 @@ // found in the LICENSE file. // <include src="saml_handler.js"> +// Note: webview_event_manager.js is already included by saml_handler.js. /** * @fileoverview An UI component to authenciate to Chrome. The component hosts @@ -122,9 +123,6 @@ cr.define('cr.login', function() { * @constructor */ function Authenticator(webview) { - this.webview_ = typeof webview == 'string' ? $(webview) : webview; - assert(this.webview_); - this.isLoaded_ = false; this.email_ = null; this.password_ = null; @@ -145,38 +143,19 @@ cr.define('cr.login', function() { this.gapsCookieSent_ = false; this.newGapsCookie_ = null; this.readyFired_ = false; + this.webviewEventManager_ = WebviewEventManager.create(); this.clientId_ = null; - this.samlHandler_ = new cr.login.SamlHandler(this.webview_); this.confirmPasswordCallback = null; this.noPasswordCallback = null; this.insecureContentBlockedCallback = null; this.samlApiUsedCallback = null; this.missingGaiaInfoCallback = null; this.needPassword = true; - this.samlHandler_.addEventListener( - 'insecureContentBlocked', this.onInsecureContentBlocked_.bind(this)); - this.samlHandler_.addEventListener( - 'authPageLoaded', this.onAuthPageLoaded_.bind(this)); - this.samlHandler_.addEventListener( - 'videoEnabled', this.onVideoEnabled_.bind(this)); - this.samlHandler_.addEventListener( - 'apiPasswordAdded', this.onSamlApiPasswordAdded_.bind(this)); - - this.webview_.addEventListener('droplink', this.onDropLink_.bind(this)); - this.webview_.addEventListener('newwindow', this.onNewWindow_.bind(this)); - this.webview_.addEventListener( - 'contentload', this.onContentLoad_.bind(this)); - this.webview_.addEventListener('loadabort', this.onLoadAbort_.bind(this)); - this.webview_.addEventListener('loadcommit', this.onLoadCommit_.bind(this)); - this.webview_.request.onCompleted.addListener( - this.onRequestCompleted_.bind(this), - {urls: ['<all_urls>'], types: ['main_frame']}, ['responseHeaders']); - this.webview_.request.onHeadersReceived.addListener( - this.onHeadersReceived_.bind(this), - {urls: ['<all_urls>'], types: ['main_frame', 'xmlhttprequest']}, - ['responseHeaders']); + + this.bindToWebview_(webview); + window.addEventListener( 'message', this.onMessageFromWebview_.bind(this), false); window.addEventListener('focus', this.onFocus_.bind(this), false); @@ -217,6 +196,74 @@ cr.define('cr.login', function() { }; /** + * Binds this authenticator to the passed webview. + * @param {!Object} webview the new webview to be used by this Authenticator. + * @private + */ + Authenticator.prototype.bindToWebview_ = function(webview) { + assert(!this.webview_); + assert(!this.samlHandler_); + + this.webview_ = typeof webview == 'string' ? $(webview) : webview; + + this.samlHandler_ = new cr.login.SamlHandler(this.webview_); + this.webviewEventManager_.addEventListener( + this.samlHandler_, 'insecureContentBlocked', + this.onInsecureContentBlocked_.bind(this)); + this.webviewEventManager_.addEventListener( + this.samlHandler_, 'authPageLoaded', this.onAuthPageLoaded_.bind(this)); + this.webviewEventManager_.addEventListener( + this.samlHandler_, 'videoEnabled', this.onVideoEnabled_.bind(this)); + this.webviewEventManager_.addEventListener( + this.samlHandler_, 'apiPasswordAdded', + this.onSamlApiPasswordAdded_.bind(this)); + + this.webviewEventManager_.addEventListener( + this.webview_, 'droplink', this.onDropLink_.bind(this)); + this.webviewEventManager_.addEventListener( + this.webview_, 'newwindow', this.onNewWindow_.bind(this)); + this.webviewEventManager_.addEventListener( + this.webview_, 'contentload', this.onContentLoad_.bind(this)); + this.webviewEventManager_.addEventListener( + this.webview_, 'loadabort', this.onLoadAbort_.bind(this)); + this.webviewEventManager_.addEventListener( + this.webview_, 'loadcommit', this.onLoadCommit_.bind(this)); + + this.webviewEventManager_.addWebRequestEventListener( + this.webview_.request.onCompleted, this.onRequestCompleted_.bind(this), + {urls: ['<all_urls>'], types: ['main_frame']}, ['responseHeaders']); + this.webviewEventManager_.addWebRequestEventListener( + this.webview_.request.onHeadersReceived, + this.onHeadersReceived_.bind(this), + {urls: ['<all_urls>'], types: ['main_frame', 'xmlhttprequest']}, + ['responseHeaders']); + }; + + /** + * Unbinds this Authenticator from the currently bound webview. + * @private + */ + Authenticator.prototype.unbindFromWebview_ = function() { + assert(this.webview_); + assert(this.samlHandler_); + + this.webviewEventManager_.removeAllListeners(); + + this.webview_ = undefined; + this.samlHandler_.unbindFromWebview(); + this.samlHandler_ = undefined; + }; + + /** + * Re-binds to another webview. + * @param {Object} webview the new webview to be used by this Authenticator. + */ + Authenticator.prototype.rebindWebview = function(webview) { + this.unbindFromWebview_(); + this.bindToWebview_(webview); + }; + + /** * Loads the authenticator component with the given parameters. * @param {AuthMode} authMode Authorization mode. * @param {Object} data Parameters for the authorization flow. |