16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)cr.define('options', function() { 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) var Page = cr.ui.pageManager.Page; 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) var PageManager = cr.ui.pageManager.PageManager; 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // UI state of the turn off overlay. 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // @enum {string} 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) var UIState = { 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) UNKNOWN: 'unknown', 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) OFFLINE: 'offline', 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDLE: 'idle', 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PENDING: 'pending', 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SERVER_ERROR: 'server-error', 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * EasyUnlockTurnOffOverlay class 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Encapsulated handling of the Factory Reset confirmation overlay page. 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @class 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) function EasyUnlockTurnOffOverlay() { 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Page.call(this, 'easyUnlockTurnOffOverlay', 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffTitle'), 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 'easy-unlock-turn-off-overlay'); 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) cr.addSingletonGetter(EasyUnlockTurnOffOverlay); 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockTurnOffOverlay.prototype = { 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Inherit EasyUnlockTurnOffOverlay from Page. 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) __proto__: Page.prototype, 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** Current UI state */ 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uiState_: UIState.UNKNOWN, 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) get uiState() { 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return this.uiState_; 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) set uiState(newUiState) { 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (newUiState == this.uiState_) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return; 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.uiState_ = newUiState; 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switch (this.uiState_) { 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case UIState.OFFLINE: 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setUpOfflineUI_(); 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) break; 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case UIState.IDLE: 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setUpTurnOffUI_(false); 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) break; 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case UIState.PENDING: 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setUpTurnOffUI_(true); 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) break; 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case UIState.SERVER_ERROR: 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setUpServerErrorUI_(); 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) break; 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) default: 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) console.error('Unknow Easy unlock turn off UI state: ' + 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.uiState_); 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setUpTurnOffUI_(false); 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) break; 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** @override */ 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) initializePage: function() { 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Page.prototype.initializePage.call(this); 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-dismiss').onclick = function(event) { 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockTurnOffOverlay.dismiss(); 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-confirm').onclick = function(event) { 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.uiState = UIState.PENDING; 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chrome.send('easyUnlockRequestTurnOff'); 776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }.bind(this); 786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** @override */ 816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) didShowPage: function() { 826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (navigator.onLine) { 836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.uiState = UIState.IDLE; 846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chrome.send('easyUnlockGetTurnOffFlowStatus'); 856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } else { 866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.uiState = UIState.OFFLINE; 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** @override */ 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) didClosePage: function() { 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chrome.send('easyUnlockTurnOffOverlayDismissed'); 936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Returns the button strip element. 976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @return {HTMLDivElement} The container div of action buttons. 986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) get buttonStrip() { 1006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return this.pageDiv.querySelector('.button-strip'); 1016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Set visibility of action buttons in button strip. 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @private 1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setActionButtonsVisible_: function(visible) { 1086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) var buttons = this.buttonStrip.querySelectorAll('button'); 1096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) for (var i = 0; i < buttons.length; ++i) { 1106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) buttons[i].hidden = !visible; 1116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 1126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 1136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Set visibility of spinner. 1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @private 1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setSpinnerVisible_: function(visible) { 1196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-spinner').hidden = !visible; 1206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 1216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Set up UI for showing offline message. 1246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @private 1256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setUpOfflineUI_: function() { 1276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-title').textContent = 1286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffOfflineTitle'); 1296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-messagee').textContent = 1306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffOfflineMessage'); 1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setActionButtonsVisible_(false); 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setSpinnerVisible_(false); 1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 1356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Set up UI for turning off Easy Unlock. 1386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @param {boolean} pending Whether there is a pending turn-off call. 1396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @private 1406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setUpTurnOffUI_: function(pending) { 1426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-title').textContent = 1436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffTitle'); 1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-messagee').textContent = 1456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffDescription'); 1466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-confirm').textContent = 1476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffButton'); 1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setActionButtonsVisible_(true); 1506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setSpinnerVisible_(pending); 1516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-confirm').disabled = pending; 1526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-dismiss').hidden = false; 1536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 1546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Set up UI for showing server error. 1576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @private 1586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setUpServerErrorUI_: function() { 1606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-title').textContent = 1616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffErrorTitle'); 1626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-messagee').textContent = 1636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffErrorMessage'); 1646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-confirm').textContent = 1656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loadTimeData.getString('easyUnlockTurnOffRetryButton'); 1666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setActionButtonsVisible_(true); 1686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) this.setSpinnerVisible_(false); 1696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-confirm').disabled = false; 1706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) $('easy-unlock-turn-off-dismiss').hidden = true; 1716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }, 1726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 1736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Closes the Easy unlock turn off overlay. 1766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockTurnOffOverlay.dismiss = function() { 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PageManager.closeOverlay(); 1796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 1806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) /** 1826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * Update UI to reflect the turn off operation status. 1836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * @param {string} newState The UIState string representing the new state. 1846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) */ 1856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockTurnOffOverlay.updateUIState = function(newState) { 1866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockTurnOffOverlay.getInstance().uiState = newState; 1876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 1886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Export 1906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return { 1916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockTurnOffOverlay: EasyUnlockTurnOffOverlay 1926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 1936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}); 194