| Index: chrome/browser/resources/chromeos/login/screen_gaia_signin.js
|
| diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
|
| index 26376a71520fb37c331ad69cabf4d40b79b533d7..cc35df7c29076d2445e9c1c2e687e56aba8584a6 100644
|
| --- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
|
| +++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
|
| @@ -39,7 +39,8 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| var ScreenMode = {
|
| DEFAULT: 0, // Default GAIA login flow.
|
| OFFLINE: 1, // GAIA offline login.
|
| - SAML_INTERSTITIAL: 2 // Interstitial page before SAML redirection.
|
| + SAML_INTERSTITIAL: 2, // Interstitial page before SAML redirection.
|
| + AD_AUTH: 3 // Offline Active Directory login flow.
|
| };
|
|
|
| return {
|
| @@ -193,12 +194,25 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| 'ready', this.onAuthReady_.bind(this));
|
|
|
| var that = this;
|
| - [this.gaiaAuthHost_, $('offline-gaia')].forEach(function(frame) {
|
| + [this.gaiaAuthHost_, $('offline-gaia'), $('offline-ad-auth')].
|
| + forEach(function(frame) {
|
| // Ignore events from currently inactive frame.
|
| var frameFilter = function(callback) {
|
| return function(e) {
|
| - var isEventOffline = frame === $('offline-gaia');
|
| - if (isEventOffline === that.isOffline())
|
| + var currentFrame = null;
|
| + switch (that.screenMode_) {
|
| + case ScreenMode.DEFAULT:
|
| + case ScreenMode.SAML_INTERSTITIAL:
|
| + currentFrame = that.gaiaAuthHost_;
|
| + break;
|
| + case ScreenMode.OFFLINE:
|
| + currentFrame = $('offline-gaia');
|
| + break;
|
| + case ScreenMode.AD_AUTH:
|
| + currentFrame = $('offline-ad-auth');
|
| + break;
|
| + }
|
| + if (frame === currentFrame)
|
| callback.call(that, e);
|
| };
|
| };
|
| @@ -314,16 +328,25 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| $('signin-frame').hidden = false;
|
| $('offline-gaia').hidden = true;
|
| $('saml-interstitial').hidden = true;
|
| + $('offline-ad-auth').hidden = true;
|
| break;
|
| case ScreenMode.OFFLINE:
|
| $('signin-frame').hidden = true;
|
| $('offline-gaia').hidden = false;
|
| $('saml-interstitial').hidden = true;
|
| + $('offline-ad-auth').hidden = true;
|
| + break;
|
| + case ScreenMode.AD_AUTH:
|
| + $('signin-frame').hidden = true;
|
| + $('offline-gaia').hidden = true;
|
| + $('saml-interstitial').hidden = true;
|
| + $('offline-ad-auth').hidden = false;
|
| break;
|
| case ScreenMode.SAML_INTERSTITIAL:
|
| $('signin-frame').hidden = true;
|
| $('offline-gaia').hidden = true;
|
| $('saml-interstitial').hidden = false;
|
| + $('offline-ad-auth').hidden = true;
|
| break;
|
| }
|
|
|
| @@ -531,6 +554,8 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| return $('signin-frame');
|
| case ScreenMode.OFFLINE:
|
| return $('offline-gaia');
|
| + case ScreenMode.AD_AUTH:
|
| + return $('offline-ad-auth');
|
| case ScreenMode.SAML_INTERSTITIAL:
|
| return $('saml-interstitial');
|
| }
|
| @@ -606,6 +631,10 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| this.loadOffline(params);
|
| break;
|
|
|
| + case ScreenMode.AD_AUTH:
|
| + this.loadAdAuth(params);
|
| + break;
|
| +
|
| case ScreenMode.SAML_INTERSTITIAL:
|
| $('saml-interstitial').domain = data.enterpriseDomain;
|
| if (this.loading)
|
| @@ -872,7 +901,12 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| * @private
|
| */
|
| onAuthCompleted_: function(credentials) {
|
| - if (credentials.useOffline) {
|
| + if (this.screenMode_ == ScreenMode.AD_AUTH) {
|
| + this.email = credentials.username;
|
| + chrome.send('completeAdAuthentication',
|
| + [credentials.username,
|
| + credentials.password]);
|
| + } else if (credentials.useOffline) {
|
| this.email = credentials.email;
|
| chrome.send('authenticateUser',
|
| [credentials.email,
|
| @@ -1048,6 +1082,17 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
| this.onAuthReady_();
|
| },
|
|
|
| + loadAdAuth: function(params) {
|
| + this.loading = true;
|
| + this.startLoadingTimer_();
|
| + var ADAuthUI = this.getSigninFrame_();
|
| + if ('realm' in params) {
|
| + ADAuthUI.realm = params['realm'];
|
| + ADAuthUI.userRealm = '@' + params['realm'];
|
| + }
|
| + this.onAuthReady_();
|
| + },
|
| +
|
| /**
|
| * Show/Hide error when user is not in whitelist. When UI is hidden
|
| * GAIA is reloaded.
|
|
|