Chromium Code Reviews| Index: chrome/browser/resources/chromeos/login/screen_offline_message.js |
| diff --git a/chrome/browser/resources/chromeos/login/screen_offline_message.js b/chrome/browser/resources/chromeos/login/screen_offline_message.js |
| index be90a08dcdfce01798e4b6b3938805c4b22dbca7..7172a631d1c49e5ec274b0668436ac49cbfc7909 100644 |
| --- a/chrome/browser/resources/chromeos/login/screen_offline_message.js |
| +++ b/chrome/browser/resources/chromeos/login/screen_offline_message.js |
| @@ -8,7 +8,14 @@ |
| cr.define('login', function() { |
| // Screens that should have offline message overlay. |
| - const MANAGED_SCREENS = ['gaia-signin', 'signin']; |
| + const MANAGED_SCREENS = ['gaia-signin']; |
| + |
| + // Network state constants. |
| + const NET_STATE = { |
| + OFFLINE: 0, |
| + ONLINE: 1, |
| + PORTAL: 2 |
| + }; |
| /** |
| * Creates a new offline message screen div. |
| @@ -61,11 +68,13 @@ cr.define('login', function() { |
| updateState: function(state) { |
| var currentScreen = Oobe.getInstance().currentScreen; |
| var offlineMessage = this; |
| - var isOnline = state == 1; |
| - var isUnderCaptivePortal = state == 2; |
| + var isOnline = state == NET_STATE.ONLINE; |
|
zel
2011/09/27 22:36:47
nit: put brackets around this expression
xiyuan
2011/09/27 22:42:25
Done.
|
| + var isUnderCaptivePortal = state == NET_STATE.PORTAL; |
|
zel
2011/09/27 22:36:47
same
xiyuan
2011/09/27 22:42:25
Done.
|
| var shouldOverlay = MANAGED_SCREENS.indexOf(currentScreen.id) != -1; |
| if (!isOnline && shouldOverlay) { |
| + console.log('Show offline message, state=' + state + |
| + ',isUnderCaptivePortal=' + isUnderCaptivePortal); |
| offlineMessage.onBeforeShow(); |
| $('offline-message-text').hidden = isUnderCaptivePortal; |
| @@ -85,6 +94,7 @@ cr.define('login', function() { |
| } |
| } else { |
| if (!offlineMessage.classList.contains('faded')) { |
| + console.log('Hide offline message.'); |
| offlineMessage.onBeforeHide(); |
| offlineMessage.classList.add('faded'); |
| @@ -117,11 +127,38 @@ cr.define('login', function() { |
| * @param {number} error Error code. |
| */ |
| OfflineMessageScreen.onFrameError = function(error) { |
| + console.log('Gaia frame error = ' + error); |
| + |
| // Offline and simple captive portal cases are handled by the |
| // NetworkStateInformer, so only the case when browser is online is |
| // valuable. |
| - if (window.navigator.onLine) |
| - this.updateState(2); |
| + if (window.navigator.onLine) { |
| + this.updateState(NET_STATE.PORTAL); |
| + |
| + // Check current network state if currentScreen is a managed one. |
| + var currentScreen = Oobe.getInstance().currentScreen; |
| + if (MANAGED_SCREENS.indexOf(currentScreen.id) != -1) { |
| + chrome.send('loginRequestNetworkState', |
| + ['login.OfflineMessageScreen.maybeRetry']); |
| + } |
| + } |
| + }; |
| + |
| + /** |
| + * Network state callback where we decide whether to schdule a retry. |
| + */ |
| + OfflineMessageScreen.maybeRetry = function(state) { |
| + console.log('OfflineMessageScreen.maybeRetry, state=' + state); |
| + |
| + // No retry if we are not online. |
| + if (state != NET_STATE.ONLINE) |
| + return; |
| + |
| + var currentScreen = Oobe.getInstance().currentScreen; |
| + if (MANAGED_SCREENS.indexOf(currentScreen.id) != -1) { |
| + // Schedules a retry. |
| + currentScreen.schdeduleRetry(); |
| + } |
| }; |
| return { |