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

Unified Diff: chrome/browser/resources/chromeos/login/screen_gaia_signin.js

Issue 1074183002: [cros New-GAIA] Fix load animation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 e6ed735e1db0d02436bd5a47b102f182285bac63..14f2a1e8ce9467e47e96480c2813502a4a9480b6 100644
--- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
+++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
@@ -11,6 +11,11 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
// lazy portal check should be fired.
/** @const */ var GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 7;
+ // GAIA animation guard timer. Started when GAIA page is loaded
+ // (Authenticator 'ready' event) and is intended to guard against edge cases
+ // when 'showView' message is not generated/received.
+ /** @const */ var GAIA_ANIMATION_GUARD_MILLISEC = 250;
+
// Maximum Gaia loading time in seconds.
/** @const */ var MAX_GAIA_LOADING_TIME_SEC = 60;
@@ -75,6 +80,14 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
loadingTimer_: undefined,
/**
+ * Timer id of a guard timer that is fired in case 'showView' message
+ * is not received from GAIA.
+ * @type {number}
+ * @private
+ */
+ loadAnimationGuardTimer_: undefined,
+
+ /**
* Whether user can cancel Gaia screen.
* @type {boolean}
* @private
@@ -197,6 +210,7 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
$('enterprise-info-container').hidden = show;
$('gaia-signin-divider').hidden = show;
this.classList.toggle('loading', show);
+ $('signin-frame').classList.remove('show');
if (!show)
this.classList.remove('auth-completed');
},
@@ -247,6 +261,37 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
},
/**
+ * Handler for GAIA animation guard timer.
+ * @private
+ */
+ onLoadAnimationGuardTimer_: function() {
+ this.loadAnimationGuardTimer_ = undefined;
+ this.onShowView_();
+ },
+
+ /**
+ * Clears GAIA animation guard timer.
+ * @private
+ */
+ clearLoadAnimationGuardTimer_: function() {
+ if (this.loadAnimationGuardTimer_) {
+ 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.
+ this.loadAnimationGuardTimer_ = undefined;
+ }
+ },
+
+ /**
+ * Sets up GAIA animation guard timer.
+ * @private
+ */
+ startLoadAnimationGuardTimer_: function() {
+ this.clearLoadAnimationGuardTimer_();
+ this.loadAnimationGuardTimer_ = window.setTimeout(
dzhioev (left Google) 2015/04/13 15:18:28 Drop window.
Nikita (slow) 2015/04/22 13:11:18 Done.
+ this.onLoadAnimationGuardTimer_.bind(this),
+ GAIA_ANIMATION_GUARD_MILLISEC);
+ },
+
+ /**
* Whether Gaia is loading.
* @type {boolean}
*/
@@ -460,17 +505,22 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
* @private
*/
onAuthReady_: function() {
- this.loading = false;
+ if (this.isNewGaiaFlow)
+ this.startLoadAnimationGuardTimer_();
+
this.clearLoadingTimer_();
+ this.loading = false;
- // Show deferred error bubble.
- if (this.errorBubble_) {
- this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]);
- this.errorBubble_ = undefined;
- }
+ if (!this.isNewGaiaFlow) {
+ // Show deferred error bubble.
+ if (this.errorBubble_) {
+ this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]);
+ this.errorBubble_ = undefined;
+ }
- chrome.send('loginWebuiReady');
- chrome.send('loginVisible', ['gaia-signin']);
+ chrome.send('loginWebuiReady');
+ chrome.send('loginVisible', ['gaia-signin']);
+ }
// Warm up the user images screen.
Oobe.getInstance().preloadScreen({id: SCREEN_USER_IMAGE_PICKER});
@@ -507,7 +557,17 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
* @private
*/
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
+ this.clearLoadAnimationGuardTimer_();
$('signin-frame').classList.add('show');
+
+ // Show deferred error bubble.
+ if (this.errorBubble_) {
+ this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]);
+ this.errorBubble_ = undefined;
+ }
+
+ chrome.send('loginWebuiReady');
+ chrome.send('loginVisible', ['gaia-signin']);
},
/**
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698