Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: chrome/browser/resources/chromeos/login/screen_gaia_signin.js

Issue 2947263002: ChromeOS: GAIA screen should support API v2. (Closed)
Patch Set: Rebased. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/chromeos/login/screen_gaia_signin.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Oobe signin screen implementation. 6 * @fileoverview Oobe signin screen implementation.
7 */ 7 */
8 8
9 login.createScreen('GaiaSigninScreen', 'gaia-signin', function() { 9 login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
10 // GAIA animation guard timer. Started when GAIA page is loaded 10 // GAIA animation guard timer. Started when GAIA page is loaded
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 * The most recent period of time that the user has interacted. This is 172 * The most recent period of time that the user has interacted. This is
173 * only updated when the offline page is active and the device is online. 173 * only updated when the offline page is active and the device is online.
174 */ 174 */
175 mostRecentUserActivity_: Date.now(), 175 mostRecentUserActivity_: Date.now(),
176 176
177 /** 177 /**
178 * An element containg navigation buttons. 178 * An element containg navigation buttons.
179 */ 179 */
180 navigation_: undefined, 180 navigation_: undefined,
181 181
182
183 /**
184 * This is a copy of authenticator object attribute.
185 * UI is tied to API version, so we adjust authernticator container
186 * to match the API version.
187 * Note that this cannot be changed after authenticator is created.
188 */
189 chromeOSApiVersion_: undefined,
190
182 /** @override */ 191 /** @override */
183 decorate: function() { 192 decorate: function() {
184 this.navigation_ = $('gaia-navigation'); 193 this.navigation_ = $('gaia-navigation');
185 194
186 this.gaiaAuthHost_ = new cr.login.GaiaAuthHost($('signin-frame')); 195 this.gaiaAuthHost_ = new cr.login.GaiaAuthHost($('signin-frame'));
187 this.gaiaAuthHost_.addEventListener( 196 this.gaiaAuthHost_.addEventListener(
188 'ready', this.onAuthReady_.bind(this)); 197 'ready', this.onAuthReady_.bind(this));
189 198
190 var that = this; 199 var that = this;
191 [this.gaiaAuthHost_, $('offline-gaia'), $('offline-ad-auth')].forEach( 200 [this.gaiaAuthHost_, $('offline-gaia'), $('offline-ad-auth')].forEach(
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 this.gaiaAuthHost_.addEventListener( 245 this.gaiaAuthHost_.addEventListener(
237 'authFlowChange', this.onAuthFlowChange_.bind(this)); 246 'authFlowChange', this.onAuthFlowChange_.bind(this));
238 this.gaiaAuthHost_.addEventListener( 247 this.gaiaAuthHost_.addEventListener(
239 'videoEnabledChange', this.onVideoEnabledChange_.bind(this)); 248 'videoEnabledChange', this.onVideoEnabledChange_.bind(this));
240 249
241 this.gaiaAuthHost_.addEventListener( 250 this.gaiaAuthHost_.addEventListener(
242 'loadAbort', this.onLoadAbortMessage_.bind(this)); 251 'loadAbort', this.onLoadAbortMessage_.bind(this));
243 this.gaiaAuthHost_.addEventListener( 252 this.gaiaAuthHost_.addEventListener(
244 'identifierEntered', this.onIdentifierEnteredMessage_.bind(this)); 253 'identifierEntered', this.onIdentifierEnteredMessage_.bind(this));
245 254
246 this.navigation_.addEventListener('back', function() { 255 this.navigation_.addEventListener(
247 this.navigation_.backVisible = false; 256 'back', this.onBackButtonClicked_.bind(this, null));
248 this.getSigninFrame_().back(); 257
249 }.bind(this)); 258 $('signin-back-button')
259 .addEventListener(
260 'click', this.onBackButtonClicked_.bind(this, true));
250 261
251 this.navigation_.addEventListener('close', function() { 262 this.navigation_.addEventListener('close', function() {
252 this.cancel(); 263 this.cancel();
253 }.bind(this)); 264 }.bind(this));
254 this.navigation_.addEventListener('refresh', function() { 265 this.navigation_.addEventListener('refresh', function() {
255 this.cancel(); 266 this.cancel();
256 }.bind(this)); 267 }.bind(this));
257 268
258 $('gaia-whitelist-error').addEventListener('buttonclick', function() { 269 $('gaia-whitelist-error').addEventListener('buttonclick', function() {
259 this.showWhitelistCheckFailedError(false); 270 this.showWhitelistCheckFailedError(false);
(...skipping 13 matching lines...) Expand all
273 .addEventListener('samlPageChangeAccountClicked', function() { 284 .addEventListener('samlPageChangeAccountClicked', function() {
274 // The user requests to change the account. We must clear the email 285 // The user requests to change the account. We must clear the email
275 // field of the auth params. 286 // field of the auth params.
276 this.gaiaAuthParams_.email = ''; 287 this.gaiaAuthParams_.email = '';
277 this.screenMode = ScreenMode.DEFAULT; 288 this.screenMode = ScreenMode.DEFAULT;
278 this.loadGaiaAuthHost_(false /* doSamlRedirect */); 289 this.loadGaiaAuthHost_(false /* doSamlRedirect */);
279 }.bind(this)); 290 }.bind(this));
280 }, 291 },
281 292
282 /** 293 /**
294 * Handles clicks on "Back" button.
295 * @param {boolean} isDialogButton If event comes from gaia-dialog.
296 */
297 onBackButtonClicked_: function(isDialogButton) {
298 if (isDialogButton && !this.navigation_.backVisible) {
299 this.cancel();
300 } else {
301 this.navigation_.backVisible = false;
302 this.getSigninFrame_().back();
303 }
304 },
305
306 /**
283 * Loads the authenticator and updates the UI to reflect the loading state. 307 * Loads the authenticator and updates the UI to reflect the loading state.
284 * @param {boolean} doSamlRedirect If the authenticator should do 308 * @param {boolean} doSamlRedirect If the authenticator should do
285 * authentication by automatic redirection to the SAML-based enrollment 309 * authentication by automatic redirection to the SAML-based enrollment
286 * enterprise domain IdP. 310 * enterprise domain IdP.
287 */ 311 */
288 loadGaiaAuthHost_: function(doSamlRedirect) { 312 loadGaiaAuthHost_: function(doSamlRedirect) {
289 this.loading = true; 313 this.loading = true;
290 this.startLoadingTimer_(); 314 this.startLoadingTimer_();
291 315
292 this.gaiaAuthParams_.doSamlRedirect = doSamlRedirect; 316 this.gaiaAuthParams_.doSamlRedirect = doSamlRedirect;
(...skipping 17 matching lines...) Expand all
310 return this.screenMode_ == ScreenMode.OFFLINE; 334 return this.screenMode_ == ScreenMode.OFFLINE;
311 }, 335 },
312 336
313 /** 337 /**
314 * Sets the current screen mode and updates the visible elements 338 * Sets the current screen mode and updates the visible elements
315 * accordingly. 339 * accordingly.
316 * @param {integer} value The screen mode. 340 * @param {integer} value The screen mode.
317 */ 341 */
318 set screenMode(value) { 342 set screenMode(value) {
319 this.screenMode_ = value; 343 this.screenMode_ = value;
344 this.updateSigninFrameContainers_();
320 switch (this.screenMode_) { 345 switch (this.screenMode_) {
321 case ScreenMode.DEFAULT: 346 case ScreenMode.DEFAULT:
347 $('signin-frame-dialog').hidden = false;
322 $('signin-frame').hidden = false; 348 $('signin-frame').hidden = false;
323 $('offline-gaia').hidden = true; 349 $('offline-gaia').hidden = true;
324 $('saml-interstitial').hidden = true; 350 $('saml-interstitial').hidden = true;
325 $('offline-ad-auth').hidden = true; 351 $('offline-ad-auth').hidden = true;
326 break; 352 break;
327 case ScreenMode.OFFLINE: 353 case ScreenMode.OFFLINE:
354 $('signin-frame-dialog').hidden = true;
328 $('signin-frame').hidden = true; 355 $('signin-frame').hidden = true;
329 $('offline-gaia').hidden = false; 356 $('offline-gaia').hidden = false;
330 $('saml-interstitial').hidden = true; 357 $('saml-interstitial').hidden = true;
331 $('offline-ad-auth').hidden = true; 358 $('offline-ad-auth').hidden = true;
332 break; 359 break;
333 case ScreenMode.AD_AUTH: 360 case ScreenMode.AD_AUTH:
361 $('signin-frame-dialog').hidden = true;
334 $('signin-frame').hidden = true; 362 $('signin-frame').hidden = true;
335 $('offline-gaia').hidden = true; 363 $('offline-gaia').hidden = true;
336 $('saml-interstitial').hidden = true; 364 $('saml-interstitial').hidden = true;
337 $('offline-ad-auth').hidden = false; 365 $('offline-ad-auth').hidden = false;
338 break; 366 break;
339 case ScreenMode.SAML_INTERSTITIAL: 367 case ScreenMode.SAML_INTERSTITIAL:
368 $('signin-frame-dialog').hidden = true;
340 $('signin-frame').hidden = true; 369 $('signin-frame').hidden = true;
341 $('offline-gaia').hidden = true; 370 $('offline-gaia').hidden = true;
342 $('saml-interstitial').hidden = false; 371 $('saml-interstitial').hidden = false;
343 $('offline-ad-auth').hidden = true; 372 $('offline-ad-auth').hidden = true;
344 break; 373 break;
345 } 374 }
346
347 chrome.send('updateOfflineLogin', [this.isOffline()]); 375 chrome.send('updateOfflineLogin', [this.isOffline()]);
348 this.updateControlsState(); 376 this.updateControlsState();
349 }, 377 },
350 378
351 /** 379 /**
352 * This enables or disables trying to go back to the online login page 380 * This enables or disables trying to go back to the online login page
353 * after the user is idle for a few minutes, assuming that we're currently 381 * after the user is idle for a few minutes, assuming that we're currently
354 * in the offline one. This is only applicable when the offline page is 382 * in the offline one. This is only applicable when the offline page is
355 * currently active. It is intended that when the device goes online, this 383 * currently active. It is intended that when the device goes online, this
356 * gets called with true; when it goes offline, this gets called with 384 * gets called with true; when it goes offline, this gets called with
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 621
594 $('login-header-bar').showCreateSupervisedButton = 622 $('login-header-bar').showCreateSupervisedButton =
595 data.supervisedUsersCanCreate; 623 data.supervisedUsersCanCreate;
596 $('login-header-bar').showGuestButton = data.guestSignin; 624 $('login-header-bar').showGuestButton = data.guestSignin;
597 625
598 // Reset SAML 626 // Reset SAML
599 this.classList.toggle('full-width', false); 627 this.classList.toggle('full-width', false);
600 $('saml-notice-container').hidden = true; 628 $('saml-notice-container').hidden = true;
601 this.samlPasswordConfirmAttempt_ = 0; 629 this.samlPasswordConfirmAttempt_ = 0;
602 630
631 this.chromeOSApiVersion_ = data.chromeOSApiVersion;
632 if (this.chromeOSApiVersion_ == 2)
633 $('signin-frame-container-v2').appendChild($('signin-frame'));
634
635 this.updateSigninFrameContainers_();
636
603 // Screen size could have been changed because of 'full-width' classes. 637 // Screen size could have been changed because of 'full-width' classes.
604 if (Oobe.getInstance().currentScreen === this) 638 if (Oobe.getInstance().currentScreen === this)
605 Oobe.getInstance().updateScreenSize(this); 639 Oobe.getInstance().updateScreenSize(this);
606 640
607 var params = {}; 641 var params = {};
608 for (var i in cr.login.GaiaAuthHost.SUPPORTED_PARAMS) { 642 for (var i in cr.login.GaiaAuthHost.SUPPORTED_PARAMS) {
609 var name = cr.login.GaiaAuthHost.SUPPORTED_PARAMS[i]; 643 var name = cr.login.GaiaAuthHost.SUPPORTED_PARAMS[i];
610 if (data[name]) 644 if (data[name])
611 params[name] = data[name]; 645 params[name] = data[name];
612 } 646 }
(...skipping 22 matching lines...) Expand all
635 this.loading = false; 669 this.loading = false;
636 // This event is for the browser tests. 670 // This event is for the browser tests.
637 $('saml-interstitial').fire('samlInterstitialPageReady'); 671 $('saml-interstitial').fire('samlInterstitialPageReady');
638 break; 672 break;
639 } 673 }
640 this.updateControlsState(); 674 this.updateControlsState();
641 chrome.send('authExtensionLoaded'); 675 chrome.send('authExtensionLoaded');
642 }, 676 },
643 677
644 /** 678 /**
679 * Displays correct screen container for given mode and APi version.
680 */
681 updateSigninFrameContainers_: function() {
682 let old_state = this.classList.contains('v2');
683 this.classList.toggle('v2', false);
684 if (this.screenMode_ == ScreenMode.DEFAULT &&
685 this.chromeOSApiVersion_ == 2) {
686 this.classList.toggle('v2', true);
687 }
688 // Switching between signin-frame-dialog and gaia-step-contents
689 // updates screen size.
690 if (old_state != this.classList.contains('v2'))
691 Oobe.getInstance().updateScreenSize(this);
692 },
693
694 /**
645 * Whether the current auth flow is SAML. 695 * Whether the current auth flow is SAML.
646 */ 696 */
647 isSAML: function() { 697 isSAML: function() {
648 return this.gaiaAuthHost_.authFlow == cr.login.GaiaAuthHost.AuthFlow.SAML; 698 return this.gaiaAuthHost_.authFlow == cr.login.GaiaAuthHost.AuthFlow.SAML;
649 }, 699 },
650 700
651 /** 701 /**
652 * Helper function to update the title bar. 702 * Helper function to update the title bar.
653 */ 703 */
654 updateSamlNotice_: function() { 704 updateSamlNotice_: function() {
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 if (this.screenMode_ != ScreenMode.AD_AUTH) 1161 if (this.screenMode_ != ScreenMode.AD_AUTH)
1112 return; 1162 return;
1113 var adAuthUI = this.getSigninFrame_(); 1163 var adAuthUI = this.getSigninFrame_();
1114 adAuthUI.setUser(username); 1164 adAuthUI.setUser(username);
1115 adAuthUI.setInvalid(errorState); 1165 adAuthUI.setInvalid(errorState);
1116 this.loading = false; 1166 this.loading = false;
1117 Oobe.getInstance().headerHidden = false; 1167 Oobe.getInstance().headerHidden = false;
1118 } 1168 }
1119 }; 1169 };
1120 }); 1170 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/chromeos/login/screen_gaia_signin.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698