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

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

Issue 10476002: [cros] Change how we track momemt to emit login-prompt-visible signal. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge + nit Created 8 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 | Annotate | Revision Log
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 cr.define('login', function() { 9 cr.define('login', function() {
10 // Gaia loading time after which portal check should be fired. 10 // Gaia loading time after which portal check should be fired.
11 const GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 5; 11 /** @const */ var GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC = 5;
12 12
13 // Maximum Gaia loading time in seconds. 13 // Maximum Gaia loading time in seconds.
14 const MAX_GAIA_LOADING_TIME_SEC = 60; 14 /** @const */ var MAX_GAIA_LOADING_TIME_SEC = 60;
15 15
16 /** 16 /**
17 * Creates a new sign in screen div. 17 * Creates a new sign in screen div.
18 * @constructor 18 * @constructor
19 * @extends {HTMLDivElement} 19 * @extends {HTMLDivElement}
20 */ 20 */
21 var GaiaSigninScreen = cr.ui.define('div'); 21 var GaiaSigninScreen = cr.ui.define('div');
22 22
23 /** 23 /**
24 * Registers with Oobe. 24 * Registers with Oobe.
(...skipping 27 matching lines...) Expand all
52 // Whether local version of Gaia page is used. 52 // Whether local version of Gaia page is used.
53 // @type {boolean} 53 // @type {boolean}
54 isLocal: false, 54 isLocal: false,
55 55
56 // Whether offline login is allowed. 56 // Whether offline login is allowed.
57 // @type {boolean} 57 // @type {boolean}
58 isOfflineAllowed: false, 58 isOfflineAllowed: false,
59 59
60 // Email of the user, which is logging in using offline mode. 60 // Email of the user, which is logging in using offline mode.
61 // @type {string} 61 // @type {string}
62 email: "", 62 email: '',
63 63
64 // Timer id of pending load. 64 // Timer id of pending load.
65 loadingTimer_: undefined, 65 loadingTimer_: undefined,
66 66
67 /** @inheritDoc */ 67 /** @inheritDoc */
68 decorate: function() { 68 decorate: function() {
69 this.frame_ = $('signin-frame'); 69 this.frame_ = $('signin-frame');
70 70
71 this.updateLocalizedContent(); 71 this.updateLocalizedContent();
72 }, 72 },
(...skipping 23 matching lines...) Expand all
96 /** 96 /**
97 * Handler for Gaia loading suspiciously long timeout. 97 * Handler for Gaia loading suspiciously long timeout.
98 * @private 98 * @private
99 */ 99 */
100 onLoadingSuspiciouslyLong_: function() { 100 onLoadingSuspiciouslyLong_: function() {
101 if (this != Oobe.getInstance().currentScreen) 101 if (this != Oobe.getInstance().currentScreen)
102 return; 102 return;
103 chrome.send('fixCaptivePortal'); 103 chrome.send('fixCaptivePortal');
104 this.loadingTimer_ = window.setTimeout( 104 this.loadingTimer_ = window.setTimeout(
105 this.onLoadingTimeOut_.bind(this), 105 this.onLoadingTimeOut_.bind(this),
106 (MAX_GAIA_LOADING_TIME_SEC - GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC) 106 (MAX_GAIA_LOADING_TIME_SEC - GAIA_LOADING_PORTAL_SUSSPECT_TIME_SEC) *
107 * 1000); 107 1000);
108 }, 108 },
109 109
110 /** 110 /**
111 * Handler for Gaia loading timeout. 111 * Handler for Gaia loading timeout.
112 * @private 112 * @private
113 */ 113 */
114 onLoadingTimeOut_: function() { 114 onLoadingTimeOut_: function() {
115 this.loadingTimer_ = undefined; 115 this.loadingTimer_ = undefined;
116 this.clearRetry_(); 116 this.clearRetry_();
117 $('error-message').showLoadingTimeoutError(); 117 $('error-message').showLoadingTimeoutError();
(...skipping 30 matching lines...) Expand all
148 }, 148 },
149 set loading(loading) { 149 set loading(loading) {
150 if (loading == this.loading) 150 if (loading == this.loading)
151 return; 151 return;
152 152
153 this.showLoadingUI_(loading); 153 this.showLoadingUI_(loading);
154 }, 154 },
155 155
156 /** 156 /**
157 * Event handler that is invoked just before the frame is shown. 157 * Event handler that is invoked just before the frame is shown.
158 * @param data {string} Screen init payload. Url of auth extension start 158 * @param {string} data Screen init payload. Url of auth extension start
159 * page. 159 * page.
160 */ 160 */
161 onBeforeShow: function(data) { 161 onBeforeShow: function(data) {
162 // Announce the name of the screen, if accessibility is on. 162 // Announce the name of the screen, if accessibility is on.
163 $('gaia-signin-aria-label').setAttribute( 163 $('gaia-signin-aria-label').setAttribute(
164 'aria-label', localStrings.getString('signinScreenTitle')); 164 'aria-label', localStrings.getString('signinScreenTitle'));
165 165
166 // Button header is always visible when sign in is presented. 166 // Button header is always visible when sign in is presented.
167 // Header is hidden once GAIA reports on successful sign in. 167 // Header is hidden once GAIA reports on successful sign in.
168 Oobe.getInstance().headerHidden = false; 168 Oobe.getInstance().headerHidden = false;
169 }, 169 },
170 170
171 /** 171 /**
172 * Loads the authentication extension into the iframe. 172 * Loads the authentication extension into the iframe.
173 * @param {Object} data Extension parameters bag. 173 * @param {Object} data Extension parameters bag.
174 * @private 174 * @private
175 */ 175 */
176 loadAuthExtension_: function(data) { 176 loadAuthExtension_: function(data) {
177 this.silentLoad_ = data.silentLoad; 177 this.silentLoad_ = data.silentLoad;
178 this.isLocal = data.isLocal; 178 this.isLocal = data.isLocal;
179 this.email = ""; 179 this.email = '';
180 180
181 // Offline sign-in is only allowed for the case when users aren't shown 181 // Offline sign-in is only allowed for the case when users aren't shown
182 // because there is no other way for an user to enter when device is 182 // because there is no other way for an user to enter when device is
183 // offline. 183 // offline.
184 this.isOfflineAllowed = !data.isShowUsers; 184 this.isOfflineAllowed = !data.isShowUsers;
185 185
186 this.updateAuthExtension_(data); 186 this.updateAuthExtension_(data);
187 187
188 var params = []; 188 var params = [];
189 if (data.gaiaOrigin) 189 if (data.gaiaOrigin)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } else { 245 } else {
246 reasonLabel.hidden = true; 246 reasonLabel.hidden = true;
247 } 247 }
248 248
249 $('createAccount').hidden = !data.createAccount; 249 $('createAccount').hidden = !data.createAccount;
250 $('guestSignin').hidden = !data.guestSignin; 250 $('guestSignin').hidden = !data.guestSignin;
251 }, 251 },
252 252
253 /** 253 /**
254 * Checks if message comes from the loaded authentication extension. 254 * Checks if message comes from the loaded authentication extension.
255 * @param e {object} Payload of the received HTML5 message. 255 * @param {object} e Payload of the received HTML5 message.
256 * @type {boolean} 256 * @type {boolean}
257 */ 257 */
258 isAuthExtMessage_: function(e) { 258 isAuthExtMessage_: function(e) {
259 return this.extensionUrl_ != null && 259 return this.extensionUrl_ != null &&
260 this.extensionUrl_.indexOf(e.origin) == 0 && 260 this.extensionUrl_.indexOf(e.origin) == 0 &&
261 e.source == this.frame_.contentWindow; 261 e.source == this.frame_.contentWindow;
262 }, 262 },
263 263
264 /** 264 /**
265 * Event handler that is invoked when HTML5 message is received. 265 * Event handler that is invoked when HTML5 message is received.
266 * @param e {object} Payload of the received HTML5 message. 266 * @param {object} e Payload of the received HTML5 message.
267 */ 267 */
268 onMessage_: function(e) { 268 onMessage_: function(e) {
269 if (!this.isAuthExtMessage_(e)) { 269 if (!this.isAuthExtMessage_(e)) {
270 console.log('GaiaSigninScreen.onMessage_: Unknown message origin, ' + 270 console.log('GaiaSigninScreen.onMessage_: Unknown message origin, ' +
271 'e.origin=' + e.origin); 271 'e.origin=' + e.origin);
272 return; 272 return;
273 } 273 }
274 274
275 var msg = e.data; 275 var msg = e.data;
276 console.log('GaiaSigninScreen.onMessage_: method=' + msg.method); 276 console.log('GaiaSigninScreen.onMessage_: method=' + msg.method);
277 277
278 if (msg.method == 'completeLogin') { 278 if (msg.method == 'completeLogin') {
279 chrome.send('completeLogin', [msg.email, msg.password] ); 279 chrome.send('completeLogin', [msg.email, msg.password]);
280 this.loading = true; 280 this.loading = true;
281 // Now that we're in logged in state header should be hidden. 281 // Now that we're in logged in state header should be hidden.
282 Oobe.getInstance().headerHidden = true; 282 Oobe.getInstance().headerHidden = true;
283 } else if (msg.method == 'loginUILoaded') { 283 } else if (msg.method == 'loginUILoaded') {
284 this.loading = false; 284 this.loading = false;
285 $('error-message').update(); 285 $('error-message').update();
286 this.clearLoadingTimer_(); 286 this.clearLoadingTimer_();
287 // Show deferred error bubble. 287 // Show deferred error bubble.
288 if (this.errorBubble_) { 288 if (this.errorBubble_) {
289 this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]); 289 this.showErrorBubble(this.errorBubble_[0], this.errorBubble_[1]);
290 this.errorBubble_ = undefined; 290 this.errorBubble_ = undefined;
291 } 291 }
292 this.clearRetry_(); 292 this.clearRetry_();
293 chrome.send('loginWebuiReady'); 293 chrome.send('loginWebuiReady');
294 } else if (msg.method =='offlineLogin') { 294 // Report back sign in UI being painted.
295 window.webkitRequestAnimationFrame(function() {
296 chrome.send('loginVisible');
297 });
298 } else if (msg.method == 'offlineLogin') {
295 this.email = msg.email; 299 this.email = msg.email;
296 chrome.send('authenticateUser', [msg.email, msg.password]); 300 chrome.send('authenticateUser', [msg.email, msg.password]);
297 this.loading = true; 301 this.loading = true;
298 Oobe.getInstance().headerHidden = true; 302 Oobe.getInstance().headerHidden = true;
299 } 303 }
300 }, 304 },
301 305
302 /** 306 /**
303 * Clears input fields and switches to input mode. 307 * Clears input fields and switches to input mode.
304 * @param {boolean} takeFocus True to take focus. 308 * @param {boolean} takeFocus True to take focus.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 this.startLoadingTimer_(); 350 this.startLoadingTimer_();
347 }, 351 },
348 352
349 /** 353 /**
350 * Schedules extension frame reload. 354 * Schedules extension frame reload.
351 */ 355 */
352 scheduleRetry: function() { 356 scheduleRetry: function() {
353 if (this.retryCount_ >= 3 || this.retryTimer_) 357 if (this.retryCount_ >= 3 || this.retryTimer_)
354 return; 358 return;
355 359
356 const MAX_DELAY = 7200; // 7200 seconds (i.e. 2 hours) 360 /** @const */ var MAX_DELAY = 7200; // 7200 seconds (i.e. 2 hours)
357 const MIN_DELAY = 1; // 1 second 361 /** @const */ var MIN_DELAY = 1; // 1 second
358 362
359 var delay = Math.pow(2, this.retryCount_) * 5; 363 var delay = Math.pow(2, this.retryCount_) * 5;
360 delay = Math.max(MIN_DELAY, Math.min(MAX_DELAY, delay)) * 1000; 364 delay = Math.max(MIN_DELAY, Math.min(MAX_DELAY, delay)) * 1000;
361 365
362 ++this.retryCount_; 366 ++this.retryCount_;
363 this.retryTimer_ = window.setTimeout(this.doReload.bind(this), delay); 367 this.retryTimer_ = window.setTimeout(this.doReload.bind(this), delay);
364 console.log('GaiaSigninScreen scheduleRetry in ' + delay + 'ms.'); 368 console.log('GaiaSigninScreen scheduleRetry in ' + delay + 'ms.');
365 }, 369 },
366 370
367 /** 371 /**
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 * @param {Object} data New extension parameters bag. 431 * @param {Object} data New extension parameters bag.
428 */ 432 */
429 GaiaSigninScreen.updateAuthExtension = function(data) { 433 GaiaSigninScreen.updateAuthExtension = function(data) {
430 $('gaia-signin').updateAuthExtension_(data); 434 $('gaia-signin').updateAuthExtension_(data);
431 }; 435 };
432 436
433 return { 437 return {
434 GaiaSigninScreen: GaiaSigninScreen 438 GaiaSigninScreen: GaiaSigninScreen
435 }; 439 };
436 }); 440 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698