OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 /** | 5 /** |
6 * Javascript for bluetooth_internals.html, served from | 6 * Javascript for bluetooth_internals.html, served from |
7 * chrome://bluetooth-internals/. | 7 * chrome://bluetooth-internals/. |
8 */ | 8 */ |
9 | 9 |
10 // Expose for testing. | 10 // Expose for testing. |
11 var adapterBroker = null; | 11 var adapterBroker = null; |
12 var devices = null; | 12 var devices = null; |
13 var sidebarObj = null; | 13 var sidebarObj = null; |
14 | 14 |
15 cr.define('bluetooth_internals', function() { | 15 cr.define('bluetooth_internals', function() { |
| 16 /** @const */ var AdapterPage = adapter_page.AdapterPage; |
16 /** @const */ var DevicesPage = devices_page.DevicesPage; | 17 /** @const */ var DevicesPage = devices_page.DevicesPage; |
17 /** @const */ var PageManager = cr.ui.pageManager.PageManager; | 18 /** @const */ var PageManager = cr.ui.pageManager.PageManager; |
18 /** @const */ var Snackbar = snackbar.Snackbar; | 19 /** @const */ var Snackbar = snackbar.Snackbar; |
19 /** @const */ var SnackbarType = snackbar.SnackbarType; | 20 /** @const */ var SnackbarType = snackbar.SnackbarType; |
20 | 21 |
21 /** | 22 /** |
22 * Observer for page changes. Used to update page title header. | 23 * Observer for page changes. Used to update page title header. |
23 * @extends {cr.ui.pageManager.PageManager.Observer} | 24 * @extends {cr.ui.pageManager.PageManager.Observer} |
24 */ | 25 */ |
25 var PageObserver = function() {}; | 26 var PageObserver = function() {}; |
(...skipping 14 matching lines...) Expand all Loading... |
40 document.querySelector('.page-title').textContent = title; | 41 document.querySelector('.page-title').textContent = title; |
41 }, | 42 }, |
42 }; | 43 }; |
43 | 44 |
44 /** @type {!Map<string, !interfaces.BluetoothDevice.DevicePtr>} */ | 45 /** @type {!Map<string, !interfaces.BluetoothDevice.DevicePtr>} */ |
45 var deviceAddressToProxy = new Map(); | 46 var deviceAddressToProxy = new Map(); |
46 | 47 |
47 /** @type {!device_collection.DeviceCollection} */ | 48 /** @type {!device_collection.DeviceCollection} */ |
48 devices = new device_collection.DeviceCollection([]); | 49 devices = new device_collection.DeviceCollection([]); |
49 | 50 |
| 51 /** @type {adapter_page.AdapterPage} */ |
| 52 var adapterPage = null; |
50 /** @type {devices_page.DevicesPage} */ | 53 /** @type {devices_page.DevicesPage} */ |
51 var devicesPage = null; | 54 var devicesPage = null; |
52 | 55 |
53 /** @type {interfaces.BluetoothAdapter.DiscoverySession.ptrClass} */ | 56 /** @type {interfaces.BluetoothAdapter.DiscoverySession.ptrClass} */ |
54 var discoverySession = null; | 57 var discoverySession = null; |
55 | 58 |
56 /** @type {boolean} */ | 59 /** @type {boolean} */ |
57 var userRequestedScanStop = false; | 60 var userRequestedScanStop = false; |
58 | 61 |
59 function handleInspect(event) { | 62 function handleInspect(event) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 }); | 117 }); |
115 } | 118 } |
116 | 119 |
117 function updateStoppedDiscoverySession() { | 120 function updateStoppedDiscoverySession() { |
118 devicesPage.setScanStatus(devices_page.ScanStatus.OFF); | 121 devicesPage.setScanStatus(devices_page.ScanStatus.OFF); |
119 discoverySession.ptr.reset(); | 122 discoverySession.ptr.reset(); |
120 discoverySession = null; | 123 discoverySession = null; |
121 } | 124 } |
122 | 125 |
123 function setupAdapterSystem(response) { | 126 function setupAdapterSystem(response) { |
124 console.log('adapter', response.info); | 127 adapterBroker.addEventListener('adapterchanged', function(event) { |
| 128 var detail = event.detail; |
| 129 adapterPage.adapterFieldSet.value[detail.property] = detail.value; |
| 130 adapterPage.redraw(); |
125 | 131 |
126 adapterBroker.addEventListener('adapterchanged', function(event) { | |
127 if (event.detail.property === 'discovering') { | 132 if (event.detail.property === 'discovering') { |
128 if (!event.detail.value && !userRequestedScanStop && discoverySession) { | 133 if (!event.detail.value && !userRequestedScanStop && discoverySession) { |
129 updateStoppedDiscoverySession(); | 134 updateStoppedDiscoverySession(); |
130 Snackbar.show( | 135 Snackbar.show( |
131 'Discovery session ended unexpectedly', SnackbarType.WARNING); | 136 'Discovery session ended unexpectedly', SnackbarType.WARNING); |
132 } | 137 } |
133 } | 138 } |
134 }); | 139 }); |
| 140 |
| 141 adapterPage.setAdapterInfo(response.info); |
| 142 |
| 143 adapterPage.pageDiv.addEventListener('refreshpressed', function() { |
| 144 adapterBroker.getInfo().then(function(response) { |
| 145 adapterPage.setAdapterInfo(response.info); |
| 146 }); |
| 147 }); |
135 } | 148 } |
136 | 149 |
137 function setupDeviceSystem(response) { | 150 function setupDeviceSystem(response) { |
138 // Hook up device collection events. | 151 // Hook up device collection events. |
139 adapterBroker.addEventListener('deviceadded', function(event) { | 152 adapterBroker.addEventListener('deviceadded', function(event) { |
140 devices.addOrUpdate(event.detail.deviceInfo); | 153 devices.addOrUpdate(event.detail.deviceInfo); |
141 }); | 154 }); |
142 adapterBroker.addEventListener('devicechanged', function(event) { | 155 adapterBroker.addEventListener('devicechanged', function(event) { |
143 devices.addOrUpdate(event.detail.deviceInfo); | 156 devices.addOrUpdate(event.detail.deviceInfo); |
144 }); | 157 }); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 } | 204 } |
192 | 205 |
193 function setupPages() { | 206 function setupPages() { |
194 sidebarObj = new window.sidebar.Sidebar($('sidebar')); | 207 sidebarObj = new window.sidebar.Sidebar($('sidebar')); |
195 $('menu-btn').addEventListener('click', function() { sidebarObj.open(); }); | 208 $('menu-btn').addEventListener('click', function() { sidebarObj.open(); }); |
196 PageManager.addObserver(sidebarObj); | 209 PageManager.addObserver(sidebarObj); |
197 PageManager.addObserver(new PageObserver()); | 210 PageManager.addObserver(new PageObserver()); |
198 | 211 |
199 devicesPage = new DevicesPage(); | 212 devicesPage = new DevicesPage(); |
200 PageManager.register(devicesPage); | 213 PageManager.register(devicesPage); |
| 214 adapterPage = new AdapterPage(); |
| 215 PageManager.register(adapterPage); |
201 | 216 |
202 // Set up hash-based navigation. | 217 // Set up hash-based navigation. |
203 window.addEventListener('hashchange', function() { | 218 window.addEventListener('hashchange', function() { |
204 PageManager.showPageByName(window.location.hash.substr(1)); | 219 PageManager.showPageByName(window.location.hash.substr(1)); |
205 }); | 220 }); |
206 | 221 |
207 if (!window.location.hash) { | 222 if (!window.location.hash) { |
208 PageManager.showPageByName(devicesPage.name); | 223 PageManager.showPageByName(adapterPage.name); |
209 return; | 224 return; |
210 } | 225 } |
211 | 226 |
212 PageManager.showPageByName(window.location.hash.substr(1)); | 227 PageManager.showPageByName(window.location.hash.substr(1)); |
213 } | 228 } |
214 | 229 |
215 function initializeViews() { | 230 function initializeViews() { |
216 setupPages(); | 231 setupPages(); |
217 | 232 |
218 adapter_broker.getAdapterBroker() | 233 adapter_broker.getAdapterBroker() |
219 .then(function(broker) { adapterBroker = broker; }) | 234 .then(function(broker) { adapterBroker = broker; }) |
220 .then(function() { return adapterBroker.getInfo(); }) | 235 .then(function() { return adapterBroker.getInfo(); }) |
221 .then(setupAdapterSystem) | 236 .then(setupAdapterSystem) |
222 .then(function() { return adapterBroker.getDevices(); }) | 237 .then(function() { return adapterBroker.getDevices(); }) |
223 .then(setupDeviceSystem) | 238 .then(setupDeviceSystem) |
224 .catch(function(error) { | 239 .catch(function(error) { |
225 Snackbar.show(error.message, SnackbarType.ERROR); | 240 Snackbar.show(error.message, SnackbarType.ERROR); |
226 console.error(error); | 241 console.error(error); |
227 }); | 242 }); |
228 } | 243 } |
229 | 244 |
230 return { | 245 return { |
231 initializeViews: initializeViews | 246 initializeViews: initializeViews |
232 }; | 247 }; |
233 }); | 248 }); |
234 | 249 |
235 document.addEventListener( | 250 document.addEventListener( |
236 'DOMContentLoaded', bluetooth_internals.initializeViews); | 251 'DOMContentLoaded', bluetooth_internals.initializeViews); |
OLD | NEW |