Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 loading time after which error message must be displayed and | 10 // Gaia loading time after which error message must be displayed and |
| 11 // lazy portal check should be fired. | 11 // lazy portal check should be fired. |
| 12 /** @const */ var GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 7; | 12 /** @const */ var GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 7; |
| 13 | 13 |
| 14 // GAIA animation guard timer. Started when GAIA page is loaded | |
| 15 // (Authenticator 'ready' event) and is intended to guard against edge cases | |
| 16 // when 'showView' message is not generated/received. | |
| 17 /** @const */ var GAIA_ANIMATION_GUARD_MILLISEC = 250; | |
| 18 | |
| 14 // Maximum Gaia loading time in seconds. | 19 // Maximum Gaia loading time in seconds. |
| 15 /** @const */ var MAX_GAIA_LOADING_TIME_SEC = 60; | 20 /** @const */ var MAX_GAIA_LOADING_TIME_SEC = 60; |
| 16 | 21 |
| 17 /** @const */ var HELP_TOPIC_ENTERPRISE_REPORTING = 2535613; | 22 /** @const */ var HELP_TOPIC_ENTERPRISE_REPORTING = 2535613; |
| 18 | 23 |
| 19 return { | 24 return { |
| 20 EXTERNAL_API: [ | 25 EXTERNAL_API: [ |
| 21 'loadAuthExtension', | 26 'loadAuthExtension', |
| 22 'updateAuthExtension', | 27 'updateAuthExtension', |
| 23 'doReload', | 28 'doReload', |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 68 isEnrollingConsumerManagement_: false, | 73 isEnrollingConsumerManagement_: false, |
| 69 | 74 |
| 70 /** | 75 /** |
| 71 * Timer id of pending load. | 76 * Timer id of pending load. |
| 72 * @type {number} | 77 * @type {number} |
| 73 * @private | 78 * @private |
| 74 */ | 79 */ |
| 75 loadingTimer_: undefined, | 80 loadingTimer_: undefined, |
| 76 | 81 |
| 77 /** | 82 /** |
| 83 * Timer id of a guard timer that is fired in case 'showView' message | |
| 84 * is not received from GAIA. | |
| 85 * @type {number} | |
| 86 * @private | |
| 87 */ | |
| 88 loadAnimationGuardTimer_: undefined, | |
| 89 | |
| 90 /** | |
| 78 * Whether user can cancel Gaia screen. | 91 * Whether user can cancel Gaia screen. |
| 79 * @type {boolean} | 92 * @type {boolean} |
| 80 * @private | 93 * @private |
| 81 */ | 94 */ |
| 82 cancelAllowed_: undefined, | 95 cancelAllowed_: undefined, |
| 83 | 96 |
| 84 /** | 97 /** |
| 85 * Whether we should show user pods on the login screen. | 98 * Whether we should show user pods on the login screen. |
| 86 * @type {boolean} | 99 * @type {boolean} |
| 87 * @private | 100 * @private |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 190 * @param {boolean} show True to show loading UI. | 203 * @param {boolean} show True to show loading UI. |
| 191 * @private | 204 * @private |
| 192 */ | 205 */ |
| 193 showLoadingUI_: function(show) { | 206 showLoadingUI_: function(show) { |
| 194 $('gaia-loading').hidden = !show; | 207 $('gaia-loading').hidden = !show; |
| 195 $('signin-frame').hidden = show; | 208 $('signin-frame').hidden = show; |
| 196 $('signin-right').hidden = show; | 209 $('signin-right').hidden = show; |
| 197 $('enterprise-info-container').hidden = show; | 210 $('enterprise-info-container').hidden = show; |
| 198 $('gaia-signin-divider').hidden = show; | 211 $('gaia-signin-divider').hidden = show; |
| 199 this.classList.toggle('loading', show); | 212 this.classList.toggle('loading', show); |
| 213 $('signin-frame').classList.remove('show'); | |
| 200 if (!show) | 214 if (!show) |
| 201 this.classList.remove('auth-completed'); | 215 this.classList.remove('auth-completed'); |
| 202 }, | 216 }, |
| 203 | 217 |
| 204 /** | 218 /** |
| 205 * Handler for Gaia loading suspiciously long timeout. | 219 * Handler for Gaia loading suspiciously long timeout. |
| 206 * @private | 220 * @private |
| 207 */ | 221 */ |
| 208 onLoadingSuspiciouslyLong_: function() { | 222 onLoadingSuspiciouslyLong_: function() { |
| 209 if (this != Oobe.getInstance().currentScreen) | 223 if (this != Oobe.getInstance().currentScreen) |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 240 * @private | 254 * @private |
| 241 */ | 255 */ |
| 242 startLoadingTimer_: function() { | 256 startLoadingTimer_: function() { |
| 243 this.clearLoadingTimer_(); | 257 this.clearLoadingTimer_(); |
| 244 this.loadingTimer_ = window.setTimeout( | 258 this.loadingTimer_ = window.setTimeout( |
| 245 this.onLoadingSuspiciouslyLong_.bind(this), | 259 this.onLoadingSuspiciouslyLong_.bind(this), |
| 246 GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC * 1000); | 260 GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC * 1000); |
| 247 }, | 261 }, |
| 248 | 262 |
| 249 /** | 263 /** |
| 264 * Handler for GAIA animation guard timer. | |
| 265 * @private | |
| 266 */ | |
| 267 onLoadAnimationGuardTimer_: function() { | |
| 268 this.loadAnimationGuardTimer_ = undefined; | |
| 269 this.onShowView_(); | |
| 270 }, | |
| 271 | |
| 272 /** | |
| 273 * Clears GAIA animation guard timer. | |
| 274 * @private | |
| 275 */ | |
| 276 clearLoadAnimationGuardTimer_: function() { | |
| 277 if (this.loadAnimationGuardTimer_) { | |
| 278 window.clearTimeout(this.loadAnimationGuardTimer_); | |
|
dzhioev (left Google)
2015/04/13 15:18:28
Just |clearTimeout| without window.
Nikita (slow)
2015/04/22 13:11:18
Done.
| |
| 279 this.loadAnimationGuardTimer_ = undefined; | |
| 280 } | |
| 281 }, | |
| 282 | |
| 283 /** | |
| 284 * Sets up GAIA animation guard timer. | |
| 285 * @private | |
| 286 */ | |
| 287 startLoadAnimationGuardTimer_: function() { | |
| 288 this.clearLoadAnimationGuardTimer_(); | |
| 289 this.loadAnimationGuardTimer_ = window.setTimeout( | |
|
dzhioev (left Google)
2015/04/13 15:18:28
Drop window.
Nikita (slow)
2015/04/22 13:11:18
Done.
| |
| 290 this.onLoadAnimationGuardTimer_.bind(this), | |
| 291 GAIA_ANIMATION_GUARD_MILLISEC); | |
| 292 }, | |
| 293 | |
| 294 /** | |
| 250 * Whether Gaia is loading. | 295 * Whether Gaia is loading. |
| 251 * @type {boolean} | 296 * @type {boolean} |
| 252 */ | 297 */ |
| 253 get loading() { | 298 get loading() { |
| 254 return !$('gaia-loading').hidden; | 299 return !$('gaia-loading').hidden; |
| 255 }, | 300 }, |
| 256 set loading(loading) { | 301 set loading(loading) { |
| 257 if (loading == this.loading) | 302 if (loading == this.loading) |
| 258 return; | 303 return; |
| 259 | 304 |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 453 if (this.isNewGaiaFlow) | 498 if (this.isNewGaiaFlow) |
| 454 $('close-button-item').hidden = !(isSAML || this.cancelAllowed_); | 499 $('close-button-item').hidden = !(isSAML || this.cancelAllowed_); |
| 455 } | 500 } |
| 456 }, | 501 }, |
| 457 | 502 |
| 458 /** | 503 /** |
| 459 * Invoked when the auth host emits 'ready' event. | 504 * Invoked when the auth host emits 'ready' event. |
| 460 * @private | 505 * @private |
| 461 */ | 506 */ |
| 462 onAuthReady_: function() { | 507 onAuthReady_: function() { |
| 508 if (this.isNewGaiaFlow) | |
| 509 this.startLoadAnimationGuardTimer_(); | |
| 510 | |
| 511 this.clearLoadingTimer_(); | |
| 463 this.loading = false; | 512 this.loading = false; |
| 464 this.clearLoadingTimer_(); | |
| 465 | 513 |
| 466 // Show deferred error bubble. | 514 if (!this.isNewGaiaFlow) { |
| 467 if (this.errorBubble_) { | 515 // Show deferred error bubble. |
| 468 this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]); | 516 if (this.errorBubble_) { |
| 469 this.errorBubble_ = undefined; | 517 this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]); |
| 518 this.errorBubble_ = undefined; | |
| 519 } | |
| 520 | |
| 521 chrome.send('loginWebuiReady'); | |
| 522 chrome.send('loginVisible', ['gaia-signin']); | |
| 470 } | 523 } |
| 471 | 524 |
| 472 chrome.send('loginWebuiReady'); | |
| 473 chrome.send('loginVisible', ['gaia-signin']); | |
| 474 | |
| 475 // Warm up the user images screen. | 525 // Warm up the user images screen. |
| 476 Oobe.getInstance().preloadScreen({id: SCREEN_USER_IMAGE_PICKER}); | 526 Oobe.getInstance().preloadScreen({id: SCREEN_USER_IMAGE_PICKER}); |
| 477 }, | 527 }, |
| 478 | 528 |
| 479 /** | 529 /** |
| 480 * Invoked when the auth host emits 'dialogShown' event. | 530 * Invoked when the auth host emits 'dialogShown' event. |
| 481 * @private | 531 * @private |
| 482 */ | 532 */ |
| 483 onDialogShown_: function() { | 533 onDialogShown_: function() { |
| 484 $('back-button-item').disabled = true; | 534 $('back-button-item').disabled = true; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 499 * @private | 549 * @private |
| 500 */ | 550 */ |
| 501 onBackButton_: function(e) { | 551 onBackButton_: function(e) { |
| 502 $('back-button-item').hidden = !e.detail; | 552 $('back-button-item').hidden = !e.detail; |
| 503 }, | 553 }, |
| 504 | 554 |
| 505 /** | 555 /** |
| 506 * Invoked when the auth host emits 'showView' event. | 556 * Invoked when the auth host emits 'showView' event. |
| 507 * @private | 557 * @private |
| 508 */ | 558 */ |
| 509 onShowView_: function(e) { | 559 onShowView_: function(e) { |
|
dzhioev (left Google)
2015/04/13 15:18:28
Try to switch 'loading' state and focus webview in
Nikita (slow)
2015/04/22 13:11:18
Try that and there's a degraded UX since user is a
| |
| 560 this.clearLoadAnimationGuardTimer_(); | |
| 510 $('signin-frame').classList.add('show'); | 561 $('signin-frame').classList.add('show'); |
| 562 | |
| 563 // Show deferred error bubble. | |
| 564 if (this.errorBubble_) { | |
| 565 this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]); | |
| 566 this.errorBubble_ = undefined; | |
| 567 } | |
| 568 | |
| 569 chrome.send('loginWebuiReady'); | |
| 570 chrome.send('loginVisible', ['gaia-signin']); | |
| 511 }, | 571 }, |
| 512 | 572 |
| 513 /** | 573 /** |
| 514 * Invoked when the user has successfully authenticated via SAML, the | 574 * Invoked when the user has successfully authenticated via SAML, the |
| 515 * principals API was not used and the auth host needs the user to confirm | 575 * principals API was not used and the auth host needs the user to confirm |
| 516 * the scraped password. | 576 * the scraped password. |
| 517 * @param {number} passwordCount The number of passwords that were scraped. | 577 * @param {number} passwordCount The number of passwords that were scraped. |
| 518 * @private | 578 * @private |
| 519 */ | 579 */ |
| 520 onAuthConfirmPassword_: function(passwordCount) { | 580 onAuthConfirmPassword_: function(passwordCount) { |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 799 } | 859 } |
| 800 | 860 |
| 801 this.classList.toggle('whitelist-error', show); | 861 this.classList.toggle('whitelist-error', show); |
| 802 this.loading = !show; | 862 this.loading = !show; |
| 803 | 863 |
| 804 if (!show) | 864 if (!show) |
| 805 Oobe.showSigninUI(); | 865 Oobe.showSigninUI(); |
| 806 }, | 866 }, |
| 807 }; | 867 }; |
| 808 }); | 868 }); |
| OLD | NEW |