Index: chrome/browser/resources/chromeos/login/screen_error_message.js |
diff --git a/chrome/browser/resources/chromeos/login/screen_error_message.js b/chrome/browser/resources/chromeos/login/screen_error_message.js |
index d0c47e5f0d9784d4b62e11661e6cb78558c90dd9..98686d251d749b8218ba426d3c4ccdfc5c2fc7df 100644 |
--- a/chrome/browser/resources/chromeos/login/screen_error_message.js |
+++ b/chrome/browser/resources/chromeos/login/screen_error_message.js |
@@ -7,6 +7,20 @@ |
*/ |
login.createScreen('ErrorMessageScreen', 'error-message', function() { |
+ var CONTEXT_KEY_ERROR_STATE_CODE = 'error-state-code'; |
+ var CONTEXT_KEY_ERROR_STATE_NETWORK = 'error-state-network'; |
+ var CONTEXT_KEY_GUEST_SIGNIN_ALLOWED = 'guest-signin-allowed'; |
+ var CONTEXT_KEY_OFFLINE_SIGNIN_ALLOWED = 'offline-signin-allowed'; |
+ var CONTEXT_KEY_SHOW_CONNECTING_INDICATOR = 'show-connecting-indicator'; |
+ var CONTEXT_KEY_UI_STATE = 'ui-state'; |
+ |
+ var USER_ACTION_CONFIGURE_CERTS = 'configure-certs'; |
+ var USER_ACTION_DIAGNOSE = 'diagnose'; |
+ var USER_ACTION_LAUNCH_OOBE_GUEST = 'launch-oobe-guest'; |
+ var USER_ACTION_LOCAL_STATE_POWERWASH = 'local-state-error-powerwash'; |
+ var USER_ACTION_REBOOT = 'reboot'; |
+ var USER_ACTION_SHOW_CAPTIVE_PORTAL = 'show-captive-portal'; |
+ |
// Link which starts guest session for captive portal fixing. |
/** @const */ var FIX_CAPTIVE_PORTAL_ID = 'captive-portal-fix-link'; |
@@ -79,12 +93,38 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
decorate: function() { |
cr.ui.DropDown.decorate($('offline-networks-list')); |
this.updateLocalizedContent(); |
+ |
+ var self = this; |
+ this.context.addObserver(CONTEXT_KEY_ERROR_STATE_CODE, |
+ function(error_state) { |
+ self.setErrorState(error_state); |
+ }); |
+ this.context.addObserver(CONTEXT_KEY_ERROR_STATE_NETWORK, |
+ function(network) { |
+ self.setNetwork_(network); |
+ }); |
+ this.context.addObserver(CONTEXT_KEY_GUEST_SIGNIN_ALLOWED, |
+ function(allowed) { |
+ self.allowGuestSignin(allowed); |
+ }); |
+ this.context.addObserver(CONTEXT_KEY_OFFLINE_SIGNIN_ALLOWED, |
+ function(allowed) { |
+ self.allowOfflineLogin(allowed); |
+ }); |
+ this.context.addObserver(CONTEXT_KEY_SHOW_CONNECTING_INDICATOR, |
+ function(show) { |
+ self.showConnectingIndicator(show); |
+ }); |
+ this.context.addObserver(CONTEXT_KEY_UI_STATE, function(ui_state) { |
+ self.setUIState(ui_state); |
+ }); |
}, |
/** |
* Updates localized content of the screen that is not updated via template. |
*/ |
updateLocalizedContent: function() { |
+ var self = this; |
$('auto-enrollment-offline-message-text').innerHTML = |
loadTimeData.getStringF( |
'autoEnrollmentOfflineMessageBody', |
@@ -102,7 +142,8 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
'<a id="' + FIX_CAPTIVE_PORTAL_ID + '" class="signin-link" href="#">', |
'</a>'); |
$(FIX_CAPTIVE_PORTAL_ID).onclick = function() { |
- chrome.send('showCaptivePortal'); |
+ self.send(login.Screen.CALLBACK_USER_ACTED, |
+ USER_ACTION_SHOW_CAPTIVE_PORTAL); |
}; |
$('captive-portal-proxy-message-text').innerHTML = |
@@ -139,15 +180,18 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
'guestSignin', |
'<a id="error-guest-signin-link" class="signin-link" href="#">', |
'</a>'); |
- $('error-guest-signin-link').onclick = this.launchGuestSession_; |
+ $('error-guest-signin-link').addEventListener( |
+ 'click', |
+ this.launchGuestSession_.bind(this)); |
$('error-guest-signin-fix-network').innerHTML = loadTimeData.getStringF( |
'guestSigninFixNetwork', |
'<a id="error-guest-fix-network-signin-link" class="signin-link" ' + |
'href="#">', |
'</a>'); |
- $('error-guest-fix-network-signin-link').onclick = |
- this.launchGuestSession_; |
+ $('error-guest-fix-network-signin-link').addEventListener( |
+ 'click', |
+ this.launchGuestSession_.bind(this)); |
$('error-offline-login').innerHTML = loadTimeData.getStringF( |
'offlineLogin', |
@@ -175,18 +219,6 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
onBeforeShow: function(data) { |
cr.ui.Oobe.clearErrors(); |
cr.ui.DropDown.show('offline-networks-list', false); |
- if (data === undefined) |
- return; |
- if ('uiState' in data) |
- this.setUIState(data['uiState']); |
- if ('errorState' in data && 'network' in data) |
- this.setErrorState(data['errorState'], data['network']); |
- if ('guestSigninAllowed' in data) |
- this.allowGuestSignin(data['guestSigninAllowed']); |
- if ('offlineLoginAllowed' in data) |
- this.allowOfflineLogin(data['offlineLoginAllowed']); |
- if ('showConnectingIndicator' in data) |
- this.showConnectingIndicator(data['showConnectingIndicator']); |
}, |
/** |
@@ -202,12 +234,13 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
*/ |
get buttons() { |
var buttons = []; |
+ var self = this; |
var rebootButton = this.ownerDocument.createElement('button'); |
rebootButton.textContent = loadTimeData.getString('rebootButton'); |
rebootButton.classList.add('show-with-ui-state-kiosk-mode'); |
rebootButton.addEventListener('click', function(e) { |
- chrome.send('rebootButtonClicked'); |
+ self.send(login.Screen.CALLBACK_USER_ACTED, USER_ACTION_REBOOT); |
e.stopPropagation(); |
}); |
buttons.push(rebootButton); |
@@ -216,7 +249,7 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
diagnoseButton.textContent = loadTimeData.getString('diagnoseButton'); |
diagnoseButton.classList.add('show-with-ui-state-kiosk-mode'); |
diagnoseButton.addEventListener('click', function(e) { |
- chrome.send('diagnoseButtonClicked'); |
+ self.send(login.Screen.CALLBACK_USER_ACTED, USER_ACTION_DIAGNOSE); |
e.stopPropagation(); |
}); |
buttons.push(diagnoseButton); |
@@ -225,7 +258,8 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
certsButton.textContent = loadTimeData.getString('configureCertsButton'); |
certsButton.classList.add('show-with-ui-state-kiosk-mode'); |
certsButton.addEventListener('click', function(e) { |
- chrome.send('configureCertsClicked'); |
+ self.send(login.Screen.CALLBACK_USER_ACTED, |
+ USER_ACTION_CONFIGURE_CERTS); |
e.stopPropagation(); |
}); |
buttons.push(certsButton); |
@@ -261,7 +295,8 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
loadTimeData.getString('localStateErrorPowerwashButton'); |
powerwashButton.classList.add('show-with-ui-state-local-state-error'); |
powerwashButton.addEventListener('click', function(e) { |
- chrome.send('localStateErrorPowerwashButtonClicked'); |
+ self.send(login.Screen.CALLBACK_USER_ACTED, |
+ USER_ACTION_LOCAL_STATE_POWERWASH); |
e.stopPropagation(); |
}); |
buttons.push(powerwashButton); |
@@ -291,17 +326,25 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
/** |
* Sets current error state of the screen. |
* @param {string} error_state New error state of the screen. |
- * @param {string} network Name of the current network |
* @private |
*/ |
- setErrorState_: function(error_state, network) { |
+ setErrorState_: function(error_state) { |
this.classList.remove(this.error_state); |
+ this.error_state = error_state; |
+ this.classList.add(this.error_state); |
+ this.onContentChange_(); |
+ }, |
+ |
+ /** |
+ * Sets network. |
+ * @param {string} network Name of the current network |
+ * @private |
+ */ |
+ setNetwork_: function(network) { |
var networkNameElems = |
document.getElementsByClassName(CURRENT_NETWORK_NAME_CLASS); |
for (var i = 0; i < networkNameElems.length; ++i) |
networkNameElems[i].textContent = network; |
- this.error_state = error_state; |
- this.classList.add(this.error_state); |
this.onContentChange_(); |
}, |
@@ -318,8 +361,12 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
* @private |
*/ |
launchGuestSession_: function() { |
- chrome.send(Oobe.getInstance().isOobeUI() ? |
- 'launchOobeGuestSession' : 'launchIncognito'); |
+ if (Oobe.getInstance().isOobeUI()) { |
+ this.send(login.Screen.CALLBACK_USER_ACTED, |
+ USER_ACTION_LAUNCH_OOBE_GUEST); |
+ } else { |
+ chrome.send('launchIncognito'); |
+ } |
}, |
/** |
@@ -352,11 +399,10 @@ login.createScreen('ErrorMessageScreen', 'error-message', function() { |
/** |
* Sets current error state of the screen. |
* @param {number} error_state New error state of the screen. |
- * @param {string} network Name of the current network |
* @private |
*/ |
- setErrorState: function(error_state, network) { |
- this.setErrorState_(ERROR_STATES[error_state], network); |
+ setErrorState: function(error_state) { |
+ this.setErrorState_(ERROR_STATES[error_state]); |
}, |
/** |