1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
// Copyright 2013 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('extensions', function() {
/**
* Encapsulated handling of ChromeOS kiosk apps options page.
* @constructor
*/
function KioskAppsOverlay() {
}
cr.addSingletonGetter(KioskAppsOverlay);
KioskAppsOverlay.prototype = {
/**
* Clear error timer id.
* @type {?number}
*/
clearErrorTimer_: null,
/**
* Initialize the page.
*/
initialize: function() {
chrome.send('initializeKioskAppSettings');
extensions.KioskAppList.decorate($('kiosk-app-list'));
var overlay = $('kiosk-apps-page');
cr.ui.overlay.setupOverlay(overlay);
cr.ui.overlay.globalInitialization();
overlay.addEventListener('cancelOverlay', this.handleDismiss_.bind(this));
$('kiosk-options-overlay-confirm').onclick =
this.handleDismiss_.bind(this);
$('kiosk-app-id-edit').addEventListener('keypress',
this.handleAppIdInputKeyPressed_.bind(this));
$('kiosk-app-add').onclick = this.handleAddButtonClick_.bind(this);
},
/*
* Invoked when the page is shown.
*/
didShowPage: function() {
chrome.send('getKioskAppSettings');
$('kiosk-app-id-edit').focus();
},
/**
* Shows error for given app name/id and schedules it to cleared.
* @param {!string} appName App name/id to show in error banner.
*/
showError: function(appName) {
var errorBanner = $('kiosk-apps-error-banner');
var appNameElement = errorBanner.querySelector('.kiosk-app-name');
appNameElement.textContent = appName;
errorBanner.classList.add('visible');
if (this.clearErrorTimer_)
window.clearTimeout(this.clearErrorTimer_);
// Sets a timer to clear out error banner after 5 seconds.
this.clearErrorTimer_ = window.setTimeout(function() {
errorBanner.classList.remove('visible');
this.clearErrorTimer_ = null;
}.bind(this), 5000);
},
/**
* Handles keypressed event in the app id input element.
* @private
*/
handleAppIdInputKeyPressed_: function(e) {
if (e.keyIdentifier == 'Enter' && e.target.value)
this.handleAddButtonClick_();
},
/**
* Handles click event on the add button.
* @private
*/
handleAddButtonClick_: function() {
var appId = $('kiosk-app-id-edit').value;
if (!appId)
return;
chrome.send('addKioskApp', [appId]);
$('kiosk-app-id-edit').value = '';
},
/**
* Handles the overlay being dismissed.
* @private
*/
handleDismiss_: function() {
this.handleAddButtonClick_();
extensions.ExtensionSettings.showOverlay(null);
}
};
/**
* Sets apps to be displayed in kiosk-app-list.
* @param {!Object.<{apps: !Array.<Object>, disableBailout: boolean}>}
* settings An object containing an array of app info objects and
* disable bailout shortcut flag.
*/
KioskAppsOverlay.setSettings = function(settings) {
$('kiosk-app-list').setApps(settings.apps);
$('kiosk-disable-bailout-shortcut').checked = settings.disableBailout;
};
/**
* Update an app in kiosk-app-list.
* @param {!Object} app App info to be updated.
*/
KioskAppsOverlay.updateApp = function(app) {
$('kiosk-app-list').updateApp(app);
};
/**
* Shows error for given app name/id.
* @param {!string} appName App name/id to show in error banner.
*/
KioskAppsOverlay.showError = function(appName) {
KioskAppsOverlay.getInstance().showError(appName);
};
/**
* Enables consumer kiosk.
* @param {!boolean} enable True if consumer kiosk feature is enabled.
*/
KioskAppsOverlay.enableKiosk = function(enable) {
$('add-kiosk-app').hidden = !enable;
};
// Export
return {
KioskAppsOverlay: KioskAppsOverlay
};
});
<include src="kiosk_app_list.js"></include>
<include src="kiosk_app_disable_bailout_confirm.js"></include>
|