Chromium Code Reviews| Index: chrome/browser/resources/chromeos/login/oobe_screen_reset.js |
| diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_reset.js b/chrome/browser/resources/chromeos/login/oobe_screen_reset.js |
| index af1375b2901dc0547909a3932a5785e278a5305e..cd195326b69b84cd62b9a8a3358f3702cd08f105 100644 |
| --- a/chrome/browser/resources/chromeos/login/oobe_screen_reset.js |
| +++ b/chrome/browser/resources/chromeos/login/oobe_screen_reset.js |
| @@ -7,6 +7,16 @@ |
| */ |
| login.createScreen('ResetScreen', 'reset', function() { |
| + var USER_ACTION_CANCEL_RESET = 'cancel-reset'; |
| + var USER_ACTION_RESTART_PRESSED = 'restart-pressed'; |
| + var USER_ACTION_LEARN_MORE_PRESSED = 'learn-more-link'; |
| + var USER_ACTION_SHOW_CONFIRMATION = 'show-confirmation'; |
| + var CONTEXT_KEY_ROLLBACK_AVAILABLE = 'rollback-available'; |
| + var CONTEXT_KEY_ROLLBACK_CHECKED = 'rollback-checked'; |
| + var CONTEXT_KEY_IS_OFFICIAL_BUILD = 'is-official-build'; |
| + var CONTEXT_KEY_IS_CONFIRMATIONAL_VIEW = 'is-confirmational-view'; |
| + var CONTEXT_KEY_SCREEN_STATE = 'screen-state'; |
| + |
| return { |
| /* Possible UI states of the reset screen. */ |
| @@ -14,20 +24,62 @@ login.createScreen('ResetScreen', 'reset', function() { |
| REVERT_PROMISE: 'ui-state-revert-promise', |
| RESTART_REQUIRED: 'ui-state-restart-required', |
| POWERWASH_PROPOSAL: 'ui-state-powerwash-proposal', |
| - ROLLBACK_PROPOSAL: 'ui-state-rollback-proposal' |
| + ROLLBACK_PROPOSAL: 'ui-state-rollback-proposal', |
| + ERROR: 'ui-state-error', |
| + }, |
| + |
| + RESET_SCREEN_STATE: { |
| + RESTART_REQUIRED: 0, |
| + REVERT_PROMISE: 1, |
| + POWERWASH_PROPOSAL: 2, // supports 2 ui-states |
| + ERROR: 3, |
| }, |
| - EXTERNAL_API: [ |
| - 'hideRollbackOption', |
| - 'showRollbackOption', |
| - 'updateViewOnRollbackCall' |
| - ], |
| /** @override */ |
| decorate: function() { |
| + var self = this; |
| + |
| $('powerwash-help-link').addEventListener('click', function(event) { |
|
dzhioev (left Google)
2015/02/11 12:38:29
this.declareUserAction($('powerwash-help-link'),
merkulova
2015/02/11 15:07:17
Done.
|
| - chrome.send('resetOnLearnMore'); |
| + self.send(login.Screen.CALLBACK_USER_ACTED, |
| + USER_ACTION_LEARN_MORE_PRESSED); |
| }); |
| + |
| + this.context.addObserver( |
| + CONTEXT_KEY_SCREEN_STATE, |
| + function(state) { |
| + if (state == self.RESET_SCREEN_STATE.RESTART_REQUIRED) |
| + self.ui_state = self.RESET_SCREEN_UI_STATE.RESTART_REQUIRED; |
| + if (state == self.RESET_SCREEN_STATE.REVERT_PROMISE) |
| + self.ui_state = self.RESET_SCREEN_UI_STATE.REVERT_PROMISE; |
| + else if (state == self.RESET_SCREEN_STATE.POWERWASH_PROPOSAL) |
| + self.ui_state = self.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL; |
| + self.setDialogView_(); |
| + if (state == self.RESET_SCREEN_STATE.REVERT_PROMISE) { |
| + announceAccessibleMessage( |
| + loadTimeData.getString('resetRevertSpinnerMessage')); |
| + } |
| + } |
| + ); |
| + |
| + this.context.addObserver( |
| + CONTEXT_KEY_IS_OFFICIAL_BUILD, |
| + function(isOfficial) { |
| + $('powerwash-help-link').setAttribute('hidden', !isOfficial); |
| + } |
| + ); |
| + this.context.addObserver( |
| + CONTEXT_KEY_ROLLBACK_CHECKED, |
| + function(rollbackChecked) { |
| + self.setRollbackOptionView(); |
| + } |
| + ); |
| + this.context.addObserver( |
| + CONTEXT_KEY_ROLLBACK_AVAILABLE, |
| + function(rollbackAvailable) { |
| + self.setRollbackOptionView(); |
| + } |
| + ); |
| }, |
| /** |
| @@ -43,12 +95,14 @@ login.createScreen('ResetScreen', 'reset', function() { |
| * @type {array} Array of Buttons. |
| */ |
| get buttons() { |
| + var self = this; |
| var buttons = []; |
| var restartButton = this.ownerDocument.createElement('button'); |
| restartButton.id = 'reset-restart-button'; |
| restartButton.textContent = loadTimeData.getString('resetButtonRestart'); |
| restartButton.addEventListener('click', function(e) { |
|
dzhioev (left Google)
2015/02/11 12:38:29
Use declareUserAction
merkulova
2015/02/11 15:07:17
Done.
|
| - chrome.send('restartOnReset'); |
| + self.send(login.Screen.CALLBACK_USER_ACTED, |
| + USER_ACTION_RESTART_PRESSED); |
| e.stopPropagation(); |
| }); |
| buttons.push(restartButton); |
| @@ -62,9 +116,10 @@ login.createScreen('ResetScreen', 'reset', function() { |
| // change view to confirmational |
| reset.ConfirmResetOverlay.getInstance().initializePage(); |
| - var resetScreen = $('reset'); |
| - resetScreen.isConfirmational = true; |
| - chrome.send('showConfirmationOnReset'); |
| + self.context.set(CONTEXT_KEY_IS_CONFIRMATIONAL_VIEW, true); |
|
dzhioev (left Google)
2015/02/11 12:38:29
This should be done on C++ side as a reaction on U
merkulova
2015/02/11 15:07:17
Done.
dzhioev (left Google)
2015/02/12 12:51:58
Nothing has changed.
merkulova
2015/02/12 13:37:37
Sorry, missed the change.
|
| + self.commitContextChanges(); |
| + self.send(login.Screen.CALLBACK_USER_ACTED, |
| + USER_ACTION_SHOW_CONFIRMATION); |
| e.stopPropagation(); |
| }); |
| buttons.push(toConfirmButton); |
| @@ -73,7 +128,7 @@ login.createScreen('ResetScreen', 'reset', function() { |
| cancelButton.id = 'reset-cancel-button'; |
| cancelButton.textContent = loadTimeData.getString('cancelButton'); |
|
dzhioev (left Google)
2015/02/11 12:38:29
Use declareUserAction
merkulova
2015/02/11 15:07:17
Done.
|
| cancelButton.addEventListener('click', function(e) { |
| - chrome.send('cancelOnReset'); |
| + self.send(login.Screen.CALLBACK_USER_ACTED, USER_ACTION_CANCEL_RESET); |
| e.stopPropagation(); |
| }); |
| buttons.push(cancelButton); |
| @@ -86,9 +141,11 @@ login.createScreen('ResetScreen', 'reset', function() { |
| */ |
| get defaultControl() { |
| // choose |
| - if (this.needRestart) |
| + if (this.context.get(CONTEXT_KEY_SCREEN_STATE, |
| + this.RESET_SCREEN_STATE.RESTART_REQUIRED) == |
| + this.RESET_SCREEN_STATE.RESTART_REQUIRED) |
| return $('reset-restart-button'); |
| - if (this.isConfirmational) |
| + if (this.context.get(CONTEXT_KEY_IS_CONFIRMATIONAL_VIEW, false)) |
| return $('reset-confirm-commit'); |
| return $('reset-toconfirm-button'); |
| }, |
| @@ -101,7 +158,7 @@ login.createScreen('ResetScreen', 'reset', function() { |
| reset.ConfirmResetOverlay.getInstance().handleDismiss_(); |
| return; |
| } |
| - chrome.send('cancelOnReset'); |
| + this.send(login.Screen.CALLBACK_USER_ACTED, USER_ACTION_CANCEL_RESET); |
| }, |
| /** |
| @@ -109,80 +166,55 @@ login.createScreen('ResetScreen', 'reset', function() { |
| * @param {Object} data Screen init payload. |
| */ |
| onBeforeShow: function(data) { |
| - if (data === undefined) |
| - return; |
| - |
| - this.rollbackChecked = false; |
| - this.rollbackAvailable = false; |
| - this.isConfirmational = false; |
| - this.hasLearnMoreLink = false; |
| - |
| - if (!('isOfficialBuild' in data && data['isOfficialBuild'])) |
| - $('powerwash-help-link').setAttribute('hidden', true); |
| - |
| - if ('rollbackAvailable' in data) |
| - this.rollbackAvailable = data['rollbackAvailable']; |
| - |
| - if ('restartRequired' in data && data['restartRequired']) { |
| - this.restartRequired = true; |
| - this.setDialogView_(this.RESET_SCREEN_UI_STATE.RESTART_REQUIRED); |
| - } else { |
| - this.restartRequired = false; |
| - this.setDialogView_(this.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL); |
| - } |
| }, |
| /** |
| * Sets css style for corresponding state of the screen. |
| - * @param {string} state. |
| * @private |
| */ |
| setDialogView_: function(state) { |
| + state = this.ui_state; |
| var resetOverlay = $('reset-confirm-overlay'); |
| - this.classList.remove('revert-promise-view'); |
| - this.classList.remove('restart-required-view'); |
| - this.classList.remove('powerwash-proposal-view'); |
| - this.classList.remove('rollback-proposal-view'); |
| - resetOverlay.classList.remove('powerwash-proposal-view'); |
| - resetOverlay.classList.remove('rollback-proposal-view'); |
| - if (state == this.RESET_SCREEN_UI_STATE.REVERT_PROMISE) { |
| - this.classList.add('revert-promise-view'); |
| - } else if (state == this.RESET_SCREEN_UI_STATE.RESTART_REQUIRED) { |
| - this.classList.add('restart-required-view'); |
| - } else if (state == this.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL) { |
| - this.classList.add('powerwash-proposal-view'); |
| - resetOverlay.classList.add('powerwash-proposal-view'); |
| - } else if (state == this.RESET_SCREEN_UI_STATE.ROLLBACK_PROPOSAL) { |
| - this.classList.add('rollback-proposal-view'); |
| - resetOverlay.classList.add('rollback-proposal-view'); |
| - } else { // error |
| - console.error('State ' + state + ' is not supported by setDialogView.'); |
| - } |
| - }, |
| - |
| - updateViewOnRollbackCall: function() { |
| - this.setDialogView_(this.RESET_SCREEN_UI_STATE.REVERT_PROMISE); |
| - announceAccessibleMessage( |
| - loadTimeData.getString('resetRevertSpinnerMessage')); |
| + this.classList.toggle( |
| + 'revert-promise-view', |
| + state == this.RESET_SCREEN_UI_STATE.REVERT_PROMISE); |
| + this.classList.toggle( |
| + 'restart-required-view', |
| + state == this.RESET_SCREEN_UI_STATE.RESTART_REQUIRED); |
| + this.classList.toggle( |
| + 'powerwash-proposal-view', |
| + state == this.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL); |
| + resetOverlay.classList.toggle( |
| + 'powerwash-proposal-view', |
| + state == this.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL); |
| + this.classList.toggle( |
| + 'rollback-proposal-view', |
| + state == this.RESET_SCREEN_UI_STATE.ROLLBACK_PROPOSAL); |
| + resetOverlay.classList.toggle( |
| + 'rollback-proposal-view', |
| + state == this.RESET_SCREEN_UI_STATE.ROLLBACK_PROPOSAL); |
| }, |
| - showRollbackOption: function() { |
| - if (this.rollbackChecked || this.isConfirmational) |
| + setRollbackOptionView: function() { |
| + if (this.context.get(CONTEXT_KEY_IS_CONFIRMATIONAL_VIEW, false)) |
| return; |
| - $('reset-toconfirm-button').textContent = loadTimeData.getString( |
| - 'resetButtonPowerwashAndRollback'); |
| - this.setDialogView_(this.RESET_SCREEN_UI_STATE.ROLLBACK_PROPOSAL); |
| - this.rollbackChecked = true; |
| - }, |
| - |
| - hideRollbackOption: function() { |
| - if (!this.rollbackChecked || this.isConfirmational) |
| + if (this.context.get(CONTEXT_KEY_SCREEN_STATE) != |
| + this.RESET_SCREEN_STATE.POWERWASH_PROPOSAL) |
| return; |
| - $('reset-toconfirm-button').textContent = loadTimeData.getString( |
| - 'resetButtonPowerwash'); |
| - this.setDialogView_(this.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL); |
| - this.rollbackChecked = false; |
| + if (this.context.get(CONTEXT_KEY_ROLLBACK_AVAILABLE, false) && |
| + this.context.get(CONTEXT_KEY_ROLLBACK_CHECKED, false)) { |
| + // show rollback option |
| + $('reset-toconfirm-button').textContent = loadTimeData.getString( |
| + 'resetButtonPowerwashAndRollback'); |
| + this.ui_state = this.RESET_SCREEN_UI_STATE.ROLLBACK_PROPOSAL; |
| + } else { |
| + // hide rollback option |
| + $('reset-toconfirm-button').textContent = loadTimeData.getString( |
| + 'resetButtonPowerwash'); |
| + this.ui_state = this.RESET_SCREEN_UI_STATE.POWERWASH_PROPOSAL; |
| + } |
| + this.setDialogView_(); |
| } |
| }; |
| }); |