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 /** |
23 * Initialize the page. | |
24 */ | |
32 initializePage: function() { | 25 initializePage: function() { |
Dan Beam
2013/05/30 21:14:55
same
xiyuan
2013/05/30 23:03:38
Done.
| |
33 // Call base class implementation to starts preference initialization. | 26 extensions.KioskAppList.decorate($('kiosk-app-list')); |
34 OptionsPage.prototype.initializePage.call(this); | |
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.<{ |
89 * apps: !Array.<Object>, | |
Dan Beam
2013/05/30 21:14:55
@param {!Object.<{apps: !Array.<!Object>, disableB
xiyuan
2013/05/30 23:03:38
Done.
| |
90 * disableBailout: boolean | |
91 * }>} settings An object containing an array of app info objects and | |
92 * disable bailout shortcut flag. | |
101 */ | 93 */ |
102 KioskAppsOverlay.setApps = function(apps) { | 94 KioskAppsOverlay.setSettings = function(settings) { |
103 $('kiosk-app-list').setApps(apps); | 95 $('kiosk-app-list').setApps(settings.apps); |
96 $('kiosk-disable-bailout-shortcut').checked = settings.disableBailout; | |
104 }; | 97 }; |
105 | 98 |
106 /** | 99 /** |
107 * Update an app in kiosk-app-list. | 100 * Update an app in kiosk-app-list. |
108 * @param {!Object} app App info to be updated. | 101 * @param {!Object} app App info to be updated. |
109 */ | 102 */ |
110 KioskAppsOverlay.updateApp = function(app) { | 103 KioskAppsOverlay.updateApp = function(app) { |
111 $('kiosk-app-list').updateApp(app); | 104 $('kiosk-app-list').updateApp(app); |
112 }; | 105 }; |
113 | 106 |
114 /** | 107 /** |
115 * Shows error for given app name/id. | 108 * Shows error for given app name/id. |
116 * @param {!string} appName App name/id to show in error banner. | 109 * @param {!string} appName App name/id to show in error banner. |
117 */ | 110 */ |
118 KioskAppsOverlay.showError = function(appName) { | 111 KioskAppsOverlay.showError = function(appName) { |
119 KioskAppsOverlay.getInstance().showError(appName); | 112 KioskAppsOverlay.getInstance().showError(appName); |
120 }; | 113 }; |
121 | 114 |
122 // Export | 115 // Export |
123 return { | 116 return { |
124 KioskAppsOverlay: KioskAppsOverlay | 117 KioskAppsOverlay: KioskAppsOverlay |
125 }; | 118 }; |
126 }); | 119 }); |
127 | 120 |
128 <include src="kiosk_app_list.js"></include> | 121 <include src="kiosk_app_list.js"></include> |
129 <include src="kiosk_app_disable_bailout_confirm.js"></include> | 122 <include src="kiosk_app_disable_bailout_confirm.js"></include> |
OLD | NEW |