summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-01-29 16:35:13 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-02-01 15:33:35 +0000
commitc8c2d1901aec01e934adf561a9fdf0cc776cdef8 (patch)
tree9157c3d9815e5870799e070b113813bec53e0535 /chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
parentabefd5095b41dac94ca451d784ab6e27372e981a (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.js99
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.