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_(); |
} |
}; |
}); |