| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 cr.define('options', function() { | 5 cr.define('extensions', function() { |
| 6 var OptionsPage = options.OptionsPage; | |
| 7 | |
| 8 /** | 6 /** |
| 9 * Encapsulated handling of ChromeOS kiosk apps options page. | 7 * Encapsulated handling of ChromeOS kiosk apps options page. |
| 10 * @extends {options.OptionsPage} | |
| 11 * @constructor | 8 * @constructor |
| 12 */ | 9 */ |
| 13 function KioskAppsOverlay() { | 10 function KioskAppsOverlay() { |
| 14 OptionsPage.call(this, | |
| 15 'kioskAppsOverlay', | |
| 16 loadTimeData.getString('kioskOverlayTitle'), | |
| 17 'kiosk-apps-page'); | |
| 18 } | 11 } |
| 19 | 12 |
| 20 cr.addSingletonGetter(KioskAppsOverlay); | 13 cr.addSingletonGetter(KioskAppsOverlay); |
| 21 | 14 |
| 22 KioskAppsOverlay.prototype = { | 15 KioskAppsOverlay.prototype = { |
| 23 __proto__: OptionsPage.prototype, | |
| 24 | |
| 25 /** | 16 /** |
| 26 * Clear error timer id. | 17 * Clear error timer id. |
| 27 * @type {?number} | 18 * @type {?number} |
| 28 */ | 19 */ |
| 29 clearErrorTimer_: null, | 20 clearErrorTimer_: null, |
| 30 | 21 |
| 31 /** @override */ | 22 /** |
| 32 initializePage: function() { | 23 * Initialize the page. |
| 33 // Call base class implementation to starts preference initialization. | 24 */ |
| 34 OptionsPage.prototype.initializePage.call(this); | 25 initialize: function() { |
| 26 extensions.KioskAppList.decorate($('kiosk-app-list')); |
| 35 | 27 |
| 36 options.KioskAppList.decorate($('kiosk-app-list')); | 28 var overlay = $('kiosk-apps-page'); |
| 29 cr.ui.overlay.setupOverlay(overlay); |
| 30 overlay.addEventListener('cancelOverlay', this.handleDismiss_.bind(this)); |
| 37 | 31 |
| 38 $('kiosk-options-overlay-confirm').onclick = | 32 $('kiosk-options-overlay-confirm').onclick = |
| 39 OptionsPage.closeOverlay.bind(OptionsPage); | 33 this.handleDismiss_.bind(this); |
| 40 $('kiosk-app-id-edit').addEventListener('keypress', | 34 $('kiosk-app-id-edit').addEventListener('keypress', |
| 41 this.handleAppIdInputKeyPressed_); | 35 this.handleAppIdInputKeyPressed_); |
| 42 | |
| 43 Preferences.getInstance().addEventListener( | |
| 44 'cros.accounts.deviceLocalAccounts', | |
| 45 this.loadAppsIfVisible_.bind(this)); | |
| 46 Preferences.getInstance().addEventListener( | |
| 47 'cros.accounts.deviceLocalAccountAutoLoginId', | |
| 48 this.loadAppsIfVisible_.bind(this)); | |
| 49 }, | 36 }, |
| 50 | 37 |
| 51 /** @override */ | 38 /* |
| 39 * Invoked when the page is shown. |
| 40 */ |
| 52 didShowPage: function() { | 41 didShowPage: function() { |
| 53 this.loadAppsIfVisible_(); | 42 chrome.send('getKioskAppSettings'); |
| 54 $('kiosk-app-id-edit').focus(); | 43 $('kiosk-app-id-edit').focus(); |
| 55 }, | 44 }, |
| 56 | 45 |
| 57 /** | 46 /** |
| 58 * Loads the apps if the overlay page is visible. | |
| 59 * @private | |
| 60 */ | |
| 61 loadAppsIfVisible_: function() { | |
| 62 if (this.visible) | |
| 63 chrome.send('getKioskApps'); | |
| 64 }, | |
| 65 | |
| 66 /** | |
| 67 * Shows error for given app name/id and schedules it to cleared. | 47 * Shows error for given app name/id and schedules it to cleared. |
| 68 * @param {!string} appName App name/id to show in error banner. | 48 * @param {!string} appName App name/id to show in error banner. |
| 69 */ | 49 */ |
| 70 showError: function(appName) { | 50 showError: function(appName) { |
| 71 var errorBanner = $('kiosk-apps-error-banner'); | 51 var errorBanner = $('kiosk-apps-error-banner'); |
| 72 var appNameElement = errorBanner.querySelector('.kiosk-app-name'); | 52 var appNameElement = errorBanner.querySelector('.kiosk-app-name'); |
| 73 appNameElement.textContent = appName; | 53 appNameElement.textContent = appName; |
| 74 errorBanner.classList.add('visible'); | 54 errorBanner.classList.add('visible'); |
| 75 | 55 |
| 76 if (this.clearErrorTimer_) | 56 if (this.clearErrorTimer_) |
| 77 window.clearTimeout(this.clearErrorTimer_); | 57 window.clearTimeout(this.clearErrorTimer_); |
| 78 | 58 |
| 79 // Sets a timer to clear out error banner after 5 seconds. | 59 // Sets a timer to clear out error banner after 5 seconds. |
| 80 this.clearErrorTimer_ = window.setTimeout(function() { | 60 this.clearErrorTimer_ = window.setTimeout(function() { |
| 81 errorBanner.classList.remove('visible'); | 61 errorBanner.classList.remove('visible'); |
| 82 this.clearErrorTimer_ = null; | 62 this.clearErrorTimer_ = null; |
| 83 }.bind(this), 5000); | 63 }.bind(this), 5000); |
| 84 }, | 64 }, |
| 85 | 65 |
| 86 /** | 66 /** |
| 87 * Handles keypressed event in the app id input element. | 67 * Handles keypressed event in the app id input element. |
| 88 * @private | 68 * @private |
| 89 */ | 69 */ |
| 90 handleAppIdInputKeyPressed_: function(e) { | 70 handleAppIdInputKeyPressed_: function(e) { |
| 91 if (e.keyIdentifier == 'Enter' && e.target.value) { | 71 if (e.keyIdentifier == 'Enter' && e.target.value) { |
| 92 chrome.send('addKioskApp', [e.target.value]); | 72 chrome.send('addKioskApp', [e.target.value]); |
| 93 e.target.value = ''; | 73 e.target.value = ''; |
| 94 } | 74 } |
| 75 }, |
| 76 |
| 77 /** |
| 78 * Handles the overlay being dismissed. |
| 79 * @private |
| 80 */ |
| 81 handleDismiss_: function() { |
| 82 ExtensionSettings.showOverlay(null); |
| 95 } | 83 } |
| 96 }; | 84 }; |
| 97 | 85 |
| 98 /** | 86 /** |
| 99 * Sets apps to be displayed in kiosk-app-list. | 87 * Sets apps to be displayed in kiosk-app-list. |
| 100 * @param {!Array.<!Object>} apps An array of app info objects. | 88 * @param {!Object.<{apps: !Array.<Object>, disableBailout: boolean}>} |
| 89 * settings An object containing an array of app info objects and |
| 90 * disable bailout shortcut flag. |
| 101 */ | 91 */ |
| 102 KioskAppsOverlay.setApps = function(apps) { | 92 KioskAppsOverlay.setSettings = function(settings) { |
| 103 $('kiosk-app-list').setApps(apps); | 93 $('kiosk-app-list').setApps(settings.apps); |
| 94 $('kiosk-disable-bailout-shortcut').checked = settings.disableBailout; |
| 104 }; | 95 }; |
| 105 | 96 |
| 106 /** | 97 /** |
| 107 * Update an app in kiosk-app-list. | 98 * Update an app in kiosk-app-list. |
| 108 * @param {!Object} app App info to be updated. | 99 * @param {!Object} app App info to be updated. |
| 109 */ | 100 */ |
| 110 KioskAppsOverlay.updateApp = function(app) { | 101 KioskAppsOverlay.updateApp = function(app) { |
| 111 $('kiosk-app-list').updateApp(app); | 102 $('kiosk-app-list').updateApp(app); |
| 112 }; | 103 }; |
| 113 | 104 |
| 114 /** | 105 /** |
| 115 * Shows error for given app name/id. | 106 * Shows error for given app name/id. |
| 116 * @param {!string} appName App name/id to show in error banner. | 107 * @param {!string} appName App name/id to show in error banner. |
| 117 */ | 108 */ |
| 118 KioskAppsOverlay.showError = function(appName) { | 109 KioskAppsOverlay.showError = function(appName) { |
| 119 KioskAppsOverlay.getInstance().showError(appName); | 110 KioskAppsOverlay.getInstance().showError(appName); |
| 120 }; | 111 }; |
| 121 | 112 |
| 122 // Export | 113 // Export |
| 123 return { | 114 return { |
| 124 KioskAppsOverlay: KioskAppsOverlay | 115 KioskAppsOverlay: KioskAppsOverlay |
| 125 }; | 116 }; |
| 126 }); | 117 }); |
| 127 | 118 |
| 128 <include src="kiosk_app_list.js"></include> | 119 <include src="kiosk_app_list.js"></include> |
| 129 <include src="kiosk_app_disable_bailout_confirm.js"></include> | 120 <include src="kiosk_app_disable_bailout_confirm.js"></include> |
| OLD | NEW |