summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-07-14 17:41:05 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-08-04 12:37:36 +0000
commit399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (patch)
tree6b06b60ff365abef0e13b3503d593a0df48d20e8 /chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
parent7366110654eec46f21b6824f302356426f48cd74 (diff)
BASELINE: Update Chromium to 52.0.2743.76 and Ninja to 1.7.1
Change-Id: I382f51b959689505a60f8b707255ecb344f7d8b4 Reviewed-by: Michael BrĂ¼ning <michael.bruning@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.js61
1 files changed, 54 insertions, 7 deletions
diff --git a/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js b/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
index 4159df30217..1cc7b9ff11e 100644
--- a/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
+++ b/chromium/chrome/browser/resources/gaia_auth_host/authenticator.js
@@ -32,6 +32,7 @@ cr.define('cr.login', function() {
var SERVICE_ID = 'chromeoslogin';
var EMBEDDED_SETUP_CHROMEOS_ENDPOINT = 'embedded/setup/chromeos';
var SAML_REDIRECTION_PATH = 'samlredirect';
+ var BLANK_PAGE_URL = 'about:blank';
/**
* The source URL parameter for the constrained signin flow.
@@ -121,6 +122,7 @@ cr.define('cr.login', function() {
this.webview_ = typeof webview == 'string' ? $(webview) : webview;
assert(this.webview_);
+ this.isLoaded_ = false;
this.email_ = null;
this.password_ = null;
this.gaiaId_ = null,
@@ -129,6 +131,7 @@ cr.define('cr.login', function() {
this.skipForNow_ = false;
this.authFlow = AuthFlow.DEFAULT;
this.authDomain = '';
+ this.videoEnabled = false;
this.idpOrigin_ = null;
this.continueUrl_ = null;
this.continueUrlWithoutParams_ = null;
@@ -157,6 +160,9 @@ cr.define('cr.login', function() {
this.samlHandler_.addEventListener(
'authPageLoaded',
this.onAuthPageLoaded_.bind(this));
+ this.samlHandler_.addEventListener(
+ 'videoEnabled',
+ this.onVideoEnabled_.bind(this));
this.webview_.addEventListener('droplink', this.onDropLink_.bind(this));
this.webview_.addEventListener(
@@ -191,7 +197,8 @@ cr.define('cr.login', function() {
* Reinitializes authentication parameters so that a failed login attempt
* would not result in an infinite loop.
*/
- Authenticator.prototype.resetStates_ = function() {
+ Authenticator.prototype.resetStates = function() {
+ this.isLoaded_ = false;
this.email_ = null;
this.gaiaId_ = null;
this.password_ = null;
@@ -206,6 +213,15 @@ cr.define('cr.login', function() {
this.trusted_ = true;
this.authFlow = AuthFlow.DEFAULT;
this.samlHandler_.reset();
+ this.videoEnabled = false;
+ };
+
+ /**
+ * Resets the webview to the blank page.
+ */
+ Authenticator.prototype.resetWebview = function() {
+ if (this.webview_.src && this.webview_.src != BLANK_PAGE_URL)
+ this.webview_.src = BLANK_PAGE_URL;
};
/**
@@ -215,7 +231,7 @@ cr.define('cr.login', function() {
*/
Authenticator.prototype.load = function(authMode, data) {
this.authMode = authMode;
- this.resetStates_();
+ this.resetStates();
// gaiaUrl parameter is used for testing. Once defined, it is never changed.
this.idpOrigin_ = data.gaiaUrl || IDP_ORIGIN;
this.continueUrl_ = data.continueUrl || CONTINUE_URL;
@@ -256,14 +272,16 @@ cr.define('cr.login', function() {
}
this.webview_.src = this.reloadUrl_;
+ this.isLoaded_ = true;
};
/**
* Reloads the authenticator component.
*/
Authenticator.prototype.reload = function() {
- this.resetStates_();
+ this.resetStates();
this.webview_.src = this.reloadUrl_;
+ this.isLoaded_ = true;
};
Authenticator.prototype.constructInitialFrameUrl_ = function(data) {
@@ -650,6 +668,14 @@ cr.define('cr.login', function() {
// password when it is available but not a mandatory requirement.
console.warn('Authenticator: No password scraped for SAML.');
} else if (this.needPassword) {
+ if (this.samlHandler_.scrapedPasswordCount == 1) {
+ // If we scraped exactly one password, we complete the authentication
+ // right away.
+ this.password_ = this.samlHandler_.firstScrapedPassword;
+ this.onAuthCompleted_();
+ return;
+ }
+
if (this.confirmPasswordCallback) {
// Confirm scraped password. The flow follows in
// verifyConfirmedPassword.
@@ -686,7 +712,7 @@ cr.define('cr.login', function() {
gapsCookie: this.newGapsCookie_ || this.gapsCookie_ || '',
}
}));
- this.resetStates_();
+ this.resetStates();
};
/**
@@ -694,11 +720,13 @@ cr.define('cr.login', function() {
* @private
*/
Authenticator.prototype.onInsecureContentBlocked_ = function(e) {
- if (this.insecureContentBlockedCallback) {
+ if (!this.isLoaded_)
+ return;
+
+ if (this.insecureContentBlockedCallback)
this.insecureContentBlockedCallback(e.detail.url);
- } else {
+ else
console.error('Authenticator: Insecure content blocked.');
- }
};
/**
@@ -706,6 +734,9 @@ cr.define('cr.login', function() {
* @private
*/
Authenticator.prototype.onAuthPageLoaded_ = function(e) {
+ if (!this.isLoaded_)
+ return;
+
if (!e.detail.isSAMLPage)
return;
@@ -716,6 +747,14 @@ cr.define('cr.login', function() {
};
/**
+ * Invoked when |samlHandler_| fires 'videoEnabled' event.
+ * @private
+ */
+ Authenticator.prototype.onVideoEnabled_ = function(e) {
+ this.videoEnabled = true;
+ };
+
+ /**
* Invoked when a link is dropped on the webview.
* @private
*/
@@ -756,6 +795,8 @@ cr.define('cr.login', function() {
this.fireReadyEvent_();
// Focus webview after dispatching event when webview is already visible.
this.webview_.focus();
+ } else if (currentUrl == BLANK_PAGE_URL) {
+ this.fireReadyEvent_();
}
};
@@ -823,6 +864,12 @@ cr.define('cr.login', function() {
*/
cr.defineProperty(Authenticator, 'authDomain');
+ /**
+ * True if the page has requested media access.
+ * @type {boolean}
+ */
+ cr.defineProperty(Authenticator, 'videoEnabled');
+
Authenticator.AuthFlow = AuthFlow;
Authenticator.AuthMode = AuthMode;
Authenticator.SUPPORTED_PARAMS = SUPPORTED_PARAMS;