blob: eb065df016ad3252f8fa4712b9c3f8083ee6a9ff [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('options', function() {
var Page = cr.ui.pageManager.Page;
var PageManager = cr.ui.pageManager.PageManager;
// UI state of the turn off overlay.
// @enum {string}
var UIState = {
UNKNOWN: 'unknown',
OFFLINE: 'offline',
IDLE: 'idle',
PENDING: 'pending',
SERVER_ERROR: 'server-error',
};
/**
* EasyUnlockTurnOffOverlay class
* Encapsulated handling of the Factory Reset confirmation overlay page.
* @class
*/
function EasyUnlockTurnOffOverlay() {
Page.call(this, 'easyUnlockTurnOffOverlay',
loadTimeData.getString('easyUnlockTurnOffTitle'),
'easy-unlock-turn-off-overlay');
}
cr.addSingletonGetter(EasyUnlockTurnOffOverlay);
EasyUnlockTurnOffOverlay.prototype = {
// Inherit EasyUnlockTurnOffOverlay from Page.
__proto__: Page.prototype,
/** Current UI state */
uiState_: UIState.UNKNOWN,
get uiState() {
return this.uiState_;
},
set uiState(newUiState) {
if (newUiState == this.uiState_)
return;
this.uiState_ = newUiState;
switch (this.uiState_) {
case UIState.OFFLINE:
this.setUpOfflineUI_();
break;
case UIState.IDLE:
this.setUpTurnOffUI_(false);
break;
case UIState.PENDING:
this.setUpTurnOffUI_(true);
break;
case UIState.SERVER_ERROR:
this.setUpServerErrorUI_();
break;
default:
console.error('Unknow Easy unlock turn off UI state: ' +
this.uiState_);
this.setUpTurnOffUI_(false);
break;
}
},
/** @override */
initializePage: function() {
Page.prototype.initializePage.call(this);
$('easy-unlock-turn-off-dismiss').onclick = function(event) {
EasyUnlockTurnOffOverlay.dismiss();
};
$('easy-unlock-turn-off-confirm').onclick = function(event) {
this.uiState = UIState.PENDING;
chrome.send('easyUnlockRequestTurnOff');
}.bind(this);
},
/** @override */
didShowPage: function() {
if (navigator.onLine) {
this.uiState = UIState.IDLE;
chrome.send('easyUnlockGetTurnOffFlowStatus');
} else {
this.uiState = UIState.OFFLINE;
}
},
/** @override */
didClosePage: function() {
chrome.send('easyUnlockTurnOffOverlayDismissed');
},
/**
* Returns the button strip element.
* @return {HTMLDivElement} The container div of action buttons.
*/
get buttonStrip() {
return this.pageDiv.querySelector('.button-strip');
},
/**
* Set visibility of action buttons in button strip.
* @private
*/
setActionButtonsVisible_: function(visible) {
var buttons = this.buttonStrip.querySelectorAll('button');
for (var i = 0; i < buttons.length; ++i) {
buttons[i].hidden = !visible;
}
},
/**
* Set visibility of spinner.
* @private
*/
setSpinnerVisible_: function(visible) {
$('easy-unlock-turn-off-spinner').hidden = !visible;
},
/**
* Set up UI for showing offline message.
* @private
*/
setUpOfflineUI_: function() {
$('easy-unlock-turn-off-title').textContent =
loadTimeData.getString('easyUnlockTurnOffOfflineTitle');
$('easy-unlock-turn-off-messagee').textContent =
loadTimeData.getString('easyUnlockTurnOffOfflineMessage');
this.setActionButtonsVisible_(false);
this.setSpinnerVisible_(false);
},
/**
* Set up UI for turning off Easy Unlock.
* @param {boolean} pending Whether there is a pending turn-off call.
* @private
*/
setUpTurnOffUI_: function(pending) {
$('easy-unlock-turn-off-title').textContent =
loadTimeData.getString('easyUnlockTurnOffTitle');
$('easy-unlock-turn-off-messagee').textContent =
loadTimeData.getString('easyUnlockTurnOffDescription');
$('easy-unlock-turn-off-confirm').textContent =
loadTimeData.getString('easyUnlockTurnOffButton');
this.setActionButtonsVisible_(true);
this.setSpinnerVisible_(pending);
$('easy-unlock-turn-off-confirm').disabled = pending;
$('easy-unlock-turn-off-dismiss').hidden = false;
},
/**
* Set up UI for showing server error.
* @private
*/
setUpServerErrorUI_: function() {
$('easy-unlock-turn-off-title').textContent =
loadTimeData.getString('easyUnlockTurnOffErrorTitle');
$('easy-unlock-turn-off-messagee').textContent =
loadTimeData.getString('easyUnlockTurnOffErrorMessage');
$('easy-unlock-turn-off-confirm').textContent =
loadTimeData.getString('easyUnlockTurnOffRetryButton');
this.setActionButtonsVisible_(true);
this.setSpinnerVisible_(false);
$('easy-unlock-turn-off-confirm').disabled = false;
$('easy-unlock-turn-off-dismiss').hidden = true;
},
};
/**
* Closes the Easy unlock turn off overlay.
*/
EasyUnlockTurnOffOverlay.dismiss = function() {
PageManager.closeOverlay();
};
/**
* Update UI to reflect the turn off operation status.
* @param {string} newState The UIState string representing the new state.
*/
EasyUnlockTurnOffOverlay.updateUIState = function(newState) {
EasyUnlockTurnOffOverlay.getInstance().uiState = newState;
};
// Export
return {
EasyUnlockTurnOffOverlay: EasyUnlockTurnOffOverlay
};
});