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

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

Issue 872633008: Migrate (Network)ErrorScreen to ScreenContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 years, 10 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
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 Offline message screen implementation. 6 * @fileoverview Offline message screen implementation.
7 */ 7 */
8 8
9 login.createScreen('ErrorMessageScreen', 'error-message', function() { 9 login.createScreen('ErrorMessageScreen', 'error-message', function() {
10 var CONTEXT_KEY_ERROR_STATE_CODE = 'error-state-code';
11 var CONTEXT_KEY_ERROR_STATE_NETWORK = 'error-state-network';
12 var CONTEXT_KEY_GUEST_SIGNIN_ALLOWED = 'guest-signin-allowed';
13 var CONTEXT_KEY_OFFLINE_SIGNIN_ALLOWED = 'offline-signin-allowed';
14 var CONTEXT_KEY_SHOW_CONNECTING_INDICATOR = 'show-connecting-indicator';
15 var CONTEXT_KEY_UI_STATE = 'ui-state';
16
17 var USER_ACTION_CONFIGURE_CERTS = 'configure-certs';
18 var USER_ACTION_DIAGNOSE = 'diagnose';
19 var USER_ACTION_LAUNCH_OOBE_GUEST = 'launch-oobe-guest';
20 var USER_ACTION_LOCAL_STATE_POWERWASH = 'local-state-error-powerwash';
21 var USER_ACTION_REBOOT = 'reboot';
22 var USER_ACTION_SHOW_CAPTIVE_PORTAL = 'show-captive-portal';
23
10 // Link which starts guest session for captive portal fixing. 24 // Link which starts guest session for captive portal fixing.
11 /** @const */ var FIX_CAPTIVE_PORTAL_ID = 'captive-portal-fix-link'; 25 /** @const */ var FIX_CAPTIVE_PORTAL_ID = 'captive-portal-fix-link';
12 26
13 /** @const */ var FIX_PROXY_SETTINGS_ID = 'proxy-settings-fix-link'; 27 /** @const */ var FIX_PROXY_SETTINGS_ID = 'proxy-settings-fix-link';
14 28
15 // Class of the elements which hold current network name. 29 // Class of the elements which hold current network name.
16 /** @const */ var CURRENT_NETWORK_NAME_CLASS = 30 /** @const */ var CURRENT_NETWORK_NAME_CLASS =
17 'portal-network-name'; 31 'portal-network-name';
18 32
19 // Link which triggers frame reload. 33 // Link which triggers frame reload.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // Error screen initial UI state. 86 // Error screen initial UI state.
73 ui_state_: ERROR_SCREEN_UI_STATE.UNKNOWN, 87 ui_state_: ERROR_SCREEN_UI_STATE.UNKNOWN,
74 88
75 // Error screen initial error state. 89 // Error screen initial error state.
76 error_state_: ERROR_STATE.UNKNOWN, 90 error_state_: ERROR_STATE.UNKNOWN,
77 91
78 /** @override */ 92 /** @override */
79 decorate: function() { 93 decorate: function() {
80 cr.ui.DropDown.decorate($('offline-networks-list')); 94 cr.ui.DropDown.decorate($('offline-networks-list'));
81 this.updateLocalizedContent(); 95 this.updateLocalizedContent();
96
97 var self = this;
98 this.context.addObserver(CONTEXT_KEY_ERROR_STATE_CODE,
99 function(error_state) {
100 self.setErrorState(error_state);
101 });
102 this.context.addObserver(CONTEXT_KEY_ERROR_STATE_NETWORK,
103 function(network) {
104 self.setNetwork_(network);
105 });
106 this.context.addObserver(CONTEXT_KEY_GUEST_SIGNIN_ALLOWED,
107 function(allowed) {
108 self.allowGuestSignin(allowed);
109 });
110 this.context.addObserver(CONTEXT_KEY_OFFLINE_SIGNIN_ALLOWED,
111 function(allowed) {
112 self.allowOfflineLogin(allowed);
113 });
114 this.context.addObserver(CONTEXT_KEY_SHOW_CONNECTING_INDICATOR,
115 function(show) {
116 self.showConnectingIndicator(show);
117 });
118 this.context.addObserver(CONTEXT_KEY_UI_STATE, function(ui_state) {
119 self.setUIState(ui_state);
120 });
82 }, 121 },
83 122
84 /** 123 /**
85 * Updates localized content of the screen that is not updated via template. 124 * Updates localized content of the screen that is not updated via template.
86 */ 125 */
87 updateLocalizedContent: function() { 126 updateLocalizedContent: function() {
127 var self = this;
88 $('auto-enrollment-offline-message-text').innerHTML = 128 $('auto-enrollment-offline-message-text').innerHTML =
89 loadTimeData.getStringF( 129 loadTimeData.getStringF(
90 'autoEnrollmentOfflineMessageBody', 130 'autoEnrollmentOfflineMessageBody',
91 '<b class="' + CURRENT_NETWORK_NAME_CLASS + '"></b>', 131 '<b class="' + CURRENT_NETWORK_NAME_CLASS + '"></b>',
92 '<a id="auto-enrollment-learn-more" class="signin-link" ' + 132 '<a id="auto-enrollment-learn-more" class="signin-link" ' +
93 '"href="#">', 133 '"href="#">',
94 '</a>'); 134 '</a>');
95 $('auto-enrollment-learn-more').onclick = function() { 135 $('auto-enrollment-learn-more').onclick = function() {
96 chrome.send('launchHelpApp', [HELP_TOPIC_AUTO_ENROLLMENT]); 136 chrome.send('launchHelpApp', [HELP_TOPIC_AUTO_ENROLLMENT]);
97 }; 137 };
98 138
99 $('captive-portal-message-text').innerHTML = loadTimeData.getStringF( 139 $('captive-portal-message-text').innerHTML = loadTimeData.getStringF(
100 'captivePortalMessage', 140 'captivePortalMessage',
101 '<b class="' + CURRENT_NETWORK_NAME_CLASS + '"></b>', 141 '<b class="' + CURRENT_NETWORK_NAME_CLASS + '"></b>',
102 '<a id="' + FIX_CAPTIVE_PORTAL_ID + '" class="signin-link" href="#">', 142 '<a id="' + FIX_CAPTIVE_PORTAL_ID + '" class="signin-link" href="#">',
103 '</a>'); 143 '</a>');
104 $(FIX_CAPTIVE_PORTAL_ID).onclick = function() { 144 $(FIX_CAPTIVE_PORTAL_ID).onclick = function() {
105 chrome.send('showCaptivePortal'); 145 self.send(login.Screen.CALLBACK_USER_ACTED,
146 USER_ACTION_SHOW_CAPTIVE_PORTAL);
106 }; 147 };
107 148
108 $('captive-portal-proxy-message-text').innerHTML = 149 $('captive-portal-proxy-message-text').innerHTML =
109 loadTimeData.getStringF( 150 loadTimeData.getStringF(
110 'captivePortalProxyMessage', 151 'captivePortalProxyMessage',
111 '<a id="' + FIX_PROXY_SETTINGS_ID + '" class="signin-link" href="#">', 152 '<a id="' + FIX_PROXY_SETTINGS_ID + '" class="signin-link" href="#">',
112 '</a>'); 153 '</a>');
113 $(FIX_PROXY_SETTINGS_ID).onclick = function() { 154 $(FIX_PROXY_SETTINGS_ID).onclick = function() {
114 chrome.send('openProxySettings'); 155 chrome.send('openProxySettings');
115 }; 156 };
(...skipping 16 matching lines...) Expand all
132 gaiaScreen.doReload(); 173 gaiaScreen.doReload();
133 }; 174 };
134 $('signin-proxy-error-fix-proxy').onclick = function() { 175 $('signin-proxy-error-fix-proxy').onclick = function() {
135 chrome.send('openProxySettings'); 176 chrome.send('openProxySettings');
136 }; 177 };
137 178
138 $('error-guest-signin').innerHTML = loadTimeData.getStringF( 179 $('error-guest-signin').innerHTML = loadTimeData.getStringF(
139 'guestSignin', 180 'guestSignin',
140 '<a id="error-guest-signin-link" class="signin-link" href="#">', 181 '<a id="error-guest-signin-link" class="signin-link" href="#">',
141 '</a>'); 182 '</a>');
142 $('error-guest-signin-link').onclick = this.launchGuestSession_; 183 $('error-guest-signin-link').addEventListener(
184 'click',
185 this.launchGuestSession_.bind(this));
143 186
144 $('error-guest-signin-fix-network').innerHTML = loadTimeData.getStringF( 187 $('error-guest-signin-fix-network').innerHTML = loadTimeData.getStringF(
145 'guestSigninFixNetwork', 188 'guestSigninFixNetwork',
146 '<a id="error-guest-fix-network-signin-link" class="signin-link" ' + 189 '<a id="error-guest-fix-network-signin-link" class="signin-link" ' +
147 'href="#">', 190 'href="#">',
148 '</a>'); 191 '</a>');
149 $('error-guest-fix-network-signin-link').onclick = 192 $('error-guest-fix-network-signin-link').addEventListener(
150 this.launchGuestSession_; 193 'click',
194 this.launchGuestSession_.bind(this));
151 195
152 $('error-offline-login').innerHTML = loadTimeData.getStringF( 196 $('error-offline-login').innerHTML = loadTimeData.getStringF(
153 'offlineLogin', 197 'offlineLogin',
154 '<a id="error-offline-login-link" class="signin-link" href="#">', 198 '<a id="error-offline-login-link" class="signin-link" href="#">',
155 '</a>'); 199 '</a>');
156 $('error-offline-login-link').onclick = function() { 200 $('error-offline-login-link').onclick = function() {
157 chrome.send('offlineLogin'); 201 chrome.send('offlineLogin');
158 }; 202 };
159 203
160 var ellipsis = ''; 204 var ellipsis = '';
161 for (var i = 1; i <= 3; ++i) { 205 for (var i = 1; i <= 3; ++i) {
162 ellipsis += 206 ellipsis +=
163 '<span id="connecting-indicator-ellipsis-' + i + '">.</span>'; 207 '<span id="connecting-indicator-ellipsis-' + i + '">.</span>';
164 } 208 }
165 $('connecting-indicator').innerHTML = 209 $('connecting-indicator').innerHTML =
166 loadTimeData.getStringF('connectingIndicatorText', ellipsis); 210 loadTimeData.getStringF('connectingIndicatorText', ellipsis);
167 211
168 this.onContentChange_(); 212 this.onContentChange_();
169 }, 213 },
170 214
171 /** 215 /**
172 * Event handler that is invoked just before the screen in shown. 216 * Event handler that is invoked just before the screen in shown.
173 * @param {Object} data Screen init payload. 217 * @param {Object} data Screen init payload.
174 */ 218 */
175 onBeforeShow: function(data) { 219 onBeforeShow: function(data) {
176 cr.ui.Oobe.clearErrors(); 220 cr.ui.Oobe.clearErrors();
177 cr.ui.DropDown.show('offline-networks-list', false); 221 cr.ui.DropDown.show('offline-networks-list', false);
178 if (data === undefined)
179 return;
180 if ('uiState' in data)
181 this.setUIState(data['uiState']);
182 if ('errorState' in data && 'network' in data)
183 this.setErrorState(data['errorState'], data['network']);
184 if ('guestSigninAllowed' in data)
185 this.allowGuestSignin(data['guestSigninAllowed']);
186 if ('offlineLoginAllowed' in data)
187 this.allowOfflineLogin(data['offlineLoginAllowed']);
188 if ('showConnectingIndicator' in data)
189 this.showConnectingIndicator(data['showConnectingIndicator']);
190 }, 222 },
191 223
192 /** 224 /**
193 * Event handler that is invoked just before the screen is hidden. 225 * Event handler that is invoked just before the screen is hidden.
194 */ 226 */
195 onBeforeHide: function() { 227 onBeforeHide: function() {
196 cr.ui.DropDown.hide('offline-networks-list'); 228 cr.ui.DropDown.hide('offline-networks-list');
197 }, 229 },
198 230
199 /** 231 /**
200 * Buttons in oobe wizard's button strip. 232 * Buttons in oobe wizard's button strip.
201 * @type {array} Array of Buttons. 233 * @type {array} Array of Buttons.
202 */ 234 */
203 get buttons() { 235 get buttons() {
204 var buttons = []; 236 var buttons = [];
237 var self = this;
205 238
206 var rebootButton = this.ownerDocument.createElement('button'); 239 var rebootButton = this.ownerDocument.createElement('button');
207 rebootButton.textContent = loadTimeData.getString('rebootButton'); 240 rebootButton.textContent = loadTimeData.getString('rebootButton');
208 rebootButton.classList.add('show-with-ui-state-kiosk-mode'); 241 rebootButton.classList.add('show-with-ui-state-kiosk-mode');
209 rebootButton.addEventListener('click', function(e) { 242 rebootButton.addEventListener('click', function(e) {
210 chrome.send('rebootButtonClicked'); 243 self.send(login.Screen.CALLBACK_USER_ACTED, USER_ACTION_REBOOT);
211 e.stopPropagation(); 244 e.stopPropagation();
212 }); 245 });
213 buttons.push(rebootButton); 246 buttons.push(rebootButton);
214 247
215 var diagnoseButton = this.ownerDocument.createElement('button'); 248 var diagnoseButton = this.ownerDocument.createElement('button');
216 diagnoseButton.textContent = loadTimeData.getString('diagnoseButton'); 249 diagnoseButton.textContent = loadTimeData.getString('diagnoseButton');
217 diagnoseButton.classList.add('show-with-ui-state-kiosk-mode'); 250 diagnoseButton.classList.add('show-with-ui-state-kiosk-mode');
218 diagnoseButton.addEventListener('click', function(e) { 251 diagnoseButton.addEventListener('click', function(e) {
219 chrome.send('diagnoseButtonClicked'); 252 self.send(login.Screen.CALLBACK_USER_ACTED, USER_ACTION_DIAGNOSE);
220 e.stopPropagation(); 253 e.stopPropagation();
221 }); 254 });
222 buttons.push(diagnoseButton); 255 buttons.push(diagnoseButton);
223 256
224 var certsButton = this.ownerDocument.createElement('button'); 257 var certsButton = this.ownerDocument.createElement('button');
225 certsButton.textContent = loadTimeData.getString('configureCertsButton'); 258 certsButton.textContent = loadTimeData.getString('configureCertsButton');
226 certsButton.classList.add('show-with-ui-state-kiosk-mode'); 259 certsButton.classList.add('show-with-ui-state-kiosk-mode');
227 certsButton.addEventListener('click', function(e) { 260 certsButton.addEventListener('click', function(e) {
228 chrome.send('configureCertsClicked'); 261 self.send(login.Screen.CALLBACK_USER_ACTED,
262 USER_ACTION_CONFIGURE_CERTS);
229 e.stopPropagation(); 263 e.stopPropagation();
230 }); 264 });
231 buttons.push(certsButton); 265 buttons.push(certsButton);
232 266
233 var continueButton = this.ownerDocument.createElement('button'); 267 var continueButton = this.ownerDocument.createElement('button');
234 continueButton.id = 'continue-network-config-btn'; 268 continueButton.id = 'continue-network-config-btn';
235 continueButton.textContent = loadTimeData.getString('continueButton'); 269 continueButton.textContent = loadTimeData.getString('continueButton');
236 continueButton.classList.add('show-with-error-state-kiosk-online'); 270 continueButton.classList.add('show-with-error-state-kiosk-online');
237 continueButton.addEventListener('click', function(e) { 271 continueButton.addEventListener('click', function(e) {
238 chrome.send('continueAppLaunch'); 272 chrome.send('continueAppLaunch');
(...skipping 15 matching lines...) Expand all
254 spacer.classList.add('button-spacer'); 288 spacer.classList.add('button-spacer');
255 spacer.classList.add('show-with-ui-state-kiosk-mode'); 289 spacer.classList.add('show-with-ui-state-kiosk-mode');
256 buttons.push(spacer); 290 buttons.push(spacer);
257 291
258 var powerwashButton = this.ownerDocument.createElement('button'); 292 var powerwashButton = this.ownerDocument.createElement('button');
259 powerwashButton.id = 'error-message-restart-and-powerwash-button'; 293 powerwashButton.id = 'error-message-restart-and-powerwash-button';
260 powerwashButton.textContent = 294 powerwashButton.textContent =
261 loadTimeData.getString('localStateErrorPowerwashButton'); 295 loadTimeData.getString('localStateErrorPowerwashButton');
262 powerwashButton.classList.add('show-with-ui-state-local-state-error'); 296 powerwashButton.classList.add('show-with-ui-state-local-state-error');
263 powerwashButton.addEventListener('click', function(e) { 297 powerwashButton.addEventListener('click', function(e) {
264 chrome.send('localStateErrorPowerwashButtonClicked'); 298 self.send(login.Screen.CALLBACK_USER_ACTED,
299 USER_ACTION_LOCAL_STATE_POWERWASH);
265 e.stopPropagation(); 300 e.stopPropagation();
266 }); 301 });
267 buttons.push(powerwashButton); 302 buttons.push(powerwashButton);
268 303
269 return buttons; 304 return buttons;
270 }, 305 },
271 306
272 /** 307 /**
273 * Sets current UI state of the screen. 308 * Sets current UI state of the screen.
274 * @param {string} ui_state New UI state of the screen. 309 * @param {string} ui_state New UI state of the screen.
275 * @private 310 * @private
276 */ 311 */
277 setUIState_: function(ui_state) { 312 setUIState_: function(ui_state) {
278 this.classList.remove(this.ui_state); 313 this.classList.remove(this.ui_state);
279 this.ui_state = ui_state; 314 this.ui_state = ui_state;
280 this.classList.add(this.ui_state); 315 this.classList.add(this.ui_state);
281 316
282 if (ui_state == ERROR_SCREEN_UI_STATE.LOCAL_STATE_ERROR) { 317 if (ui_state == ERROR_SCREEN_UI_STATE.LOCAL_STATE_ERROR) {
283 // Hide header bar and progress dots, because there are no way 318 // Hide header bar and progress dots, because there are no way
284 // from the error screen about broken local state. 319 // from the error screen about broken local state.
285 Oobe.getInstance().headerHidden = true; 320 Oobe.getInstance().headerHidden = true;
286 $('progress-dots').hidden = true; 321 $('progress-dots').hidden = true;
287 } 322 }
288 this.onContentChange_(); 323 this.onContentChange_();
289 }, 324 },
290 325
291 /** 326 /**
292 * Sets current error state of the screen. 327 * Sets current error state of the screen.
293 * @param {string} error_state New error state of the screen. 328 * @param {string} error_state New error state of the screen.
294 * @param {string} network Name of the current network
295 * @private 329 * @private
296 */ 330 */
297 setErrorState_: function(error_state, network) { 331 setErrorState_: function(error_state) {
298 this.classList.remove(this.error_state); 332 this.classList.remove(this.error_state);
299 var networkNameElems =
300 document.getElementsByClassName(CURRENT_NETWORK_NAME_CLASS);
301 for (var i = 0; i < networkNameElems.length; ++i)
302 networkNameElems[i].textContent = network;
303 this.error_state = error_state; 333 this.error_state = error_state;
304 this.classList.add(this.error_state); 334 this.classList.add(this.error_state);
305 this.onContentChange_(); 335 this.onContentChange_();
306 }, 336 },
307 337
338 /**
339 * Sets network.
340 * @param {string} network Name of the current network
341 * @private
342 */
343 setNetwork_: function(network) {
344 var networkNameElems =
345 document.getElementsByClassName(CURRENT_NETWORK_NAME_CLASS);
346 for (var i = 0; i < networkNameElems.length; ++i)
347 networkNameElems[i].textContent = network;
348 this.onContentChange_();
349 },
350
308 /* Method called after content of the screen changed. 351 /* Method called after content of the screen changed.
309 * @private 352 * @private
310 */ 353 */
311 onContentChange_: function() { 354 onContentChange_: function() {
312 if (Oobe.getInstance().currentScreen === this) 355 if (Oobe.getInstance().currentScreen === this)
313 Oobe.getInstance().updateScreenSize(this); 356 Oobe.getInstance().updateScreenSize(this);
314 }, 357 },
315 358
316 /** 359 /**
317 * Event handler for guest session launch. 360 * Event handler for guest session launch.
318 * @private 361 * @private
319 */ 362 */
320 launchGuestSession_: function() { 363 launchGuestSession_: function() {
321 chrome.send(Oobe.getInstance().isOobeUI() ? 364 if (Oobe.getInstance().isOobeUI()) {
322 'launchOobeGuestSession' : 'launchIncognito'); 365 this.send(login.Screen.CALLBACK_USER_ACTED,
366 USER_ACTION_LAUNCH_OOBE_GUEST);
367 } else {
368 chrome.send('launchIncognito');
369 }
323 }, 370 },
324 371
325 /** 372 /**
326 * Prepares error screen to show guest signin link. 373 * Prepares error screen to show guest signin link.
327 * @private 374 * @private
328 */ 375 */
329 allowGuestSignin: function(allowed) { 376 allowGuestSignin: function(allowed) {
330 this.classList.toggle('allow-guest-signin', allowed); 377 this.classList.toggle('allow-guest-signin', allowed);
331 this.onContentChange_(); 378 this.onContentChange_();
332 }, 379 },
(...skipping 12 matching lines...) Expand all
345 * @param {number} ui_state New UI state of the screen. 392 * @param {number} ui_state New UI state of the screen.
346 * @private 393 * @private
347 */ 394 */
348 setUIState: function(ui_state) { 395 setUIState: function(ui_state) {
349 this.setUIState_(UI_STATES[ui_state]); 396 this.setUIState_(UI_STATES[ui_state]);
350 }, 397 },
351 398
352 /** 399 /**
353 * Sets current error state of the screen. 400 * Sets current error state of the screen.
354 * @param {number} error_state New error state of the screen. 401 * @param {number} error_state New error state of the screen.
355 * @param {string} network Name of the current network
356 * @private 402 * @private
357 */ 403 */
358 setErrorState: function(error_state, network) { 404 setErrorState: function(error_state) {
359 this.setErrorState_(ERROR_STATES[error_state], network); 405 this.setErrorState_(ERROR_STATES[error_state]);
360 }, 406 },
361 407
362 /** 408 /**
363 * Updates visibility of the label indicating we're reconnecting. 409 * Updates visibility of the label indicating we're reconnecting.
364 * @param {boolean} show Whether the label should be shown. 410 * @param {boolean} show Whether the label should be shown.
365 */ 411 */
366 showConnectingIndicator: function(show) { 412 showConnectingIndicator: function(show) {
367 this.classList.toggle('show-connecting-indicator', show); 413 this.classList.toggle('show-connecting-indicator', show);
368 this.onContentChange_(); 414 this.onContentChange_();
369 } 415 }
370 }; 416 };
371 }); 417 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698