| // 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 |
| }; |
| }); |