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 adapterPage.adapterFieldSet.value[event.detail.property] = |
| 129 event.detail.value; |
| 130 adapterPage.redraw(); |
125 | 131 |
126 adapterBroker.addEventListener('adapterchanged', function(event) { | |
127 if (event.detail.property == adapter_broker.AdapterProperty.DISCOVERING && | 132 if (event.detail.property == adapter_broker.AdapterProperty.DISCOVERING && |
128 !event.detail.value && !userRequestedScanStop && discoverySession) { | 133 !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 }); |
| 139 |
| 140 adapterPage.setAdapterInfo(response.info); |
| 141 |
| 142 adapterPage.pageDiv.addEventListener('refreshpressed', function() { |
| 143 adapterBroker.getInfo().then(function(response) { |
| 144 adapterPage.setAdapterInfo(response.info); |
| 145 }); |
| 146 }); |
134 } | 147 } |
135 | 148 |
136 function setupDeviceSystem(response) { | 149 function setupDeviceSystem(response) { |
137 // Hook up device collection events. | 150 // Hook up device collection events. |
138 adapterBroker.addEventListener('deviceadded', function(event) { | 151 adapterBroker.addEventListener('deviceadded', function(event) { |
139 devices.addOrUpdate(event.detail.deviceInfo); | 152 devices.addOrUpdate(event.detail.deviceInfo); |
140 }); | 153 }); |
141 adapterBroker.addEventListener('devicechanged', function(event) { | 154 adapterBroker.addEventListener('devicechanged', function(event) { |
142 devices.addOrUpdate(event.detail.deviceInfo); | 155 devices.addOrUpdate(event.detail.deviceInfo); |
143 }); | 156 }); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 } | 203 } |
191 | 204 |
192 function setupPages() { | 205 function setupPages() { |
193 sidebarObj = new window.sidebar.Sidebar($('sidebar')); | 206 sidebarObj = new window.sidebar.Sidebar($('sidebar')); |
194 $('menu-btn').addEventListener('click', function() { sidebarObj.open(); }); | 207 $('menu-btn').addEventListener('click', function() { sidebarObj.open(); }); |
195 PageManager.addObserver(sidebarObj); | 208 PageManager.addObserver(sidebarObj); |
196 PageManager.addObserver(new PageObserver()); | 209 PageManager.addObserver(new PageObserver()); |
197 | 210 |
198 devicesPage = new DevicesPage(); | 211 devicesPage = new DevicesPage(); |
199 PageManager.register(devicesPage); | 212 PageManager.register(devicesPage); |
| 213 adapterPage = new AdapterPage(); |
| 214 PageManager.register(adapterPage); |
200 | 215 |
201 // Set up hash-based navigation. | 216 // Set up hash-based navigation. |
202 window.addEventListener('hashchange', function() { | 217 window.addEventListener('hashchange', function() { |
203 PageManager.showPageByName(window.location.hash.substr(1)); | 218 PageManager.showPageByName(window.location.hash.substr(1)); |
204 }); | 219 }); |
205 | 220 |
206 if (!window.location.hash) { | 221 if (!window.location.hash) { |
207 PageManager.showPageByName(devicesPage.name); | 222 PageManager.showPageByName(adapterPage.name); |
208 return; | 223 return; |
209 } | 224 } |
210 | 225 |
211 PageManager.showPageByName(window.location.hash.substr(1)); | 226 PageManager.showPageByName(window.location.hash.substr(1)); |
212 } | 227 } |
213 | 228 |
214 function initializeViews() { | 229 function initializeViews() { |
215 setupPages(); | 230 setupPages(); |
216 | 231 |
217 adapter_broker.getAdapterBroker() | 232 adapter_broker.getAdapterBroker() |
218 .then(function(broker) { adapterBroker = broker; }) | 233 .then(function(broker) { adapterBroker = broker; }) |
219 .then(function() { return adapterBroker.getInfo(); }) | 234 .then(function() { return adapterBroker.getInfo(); }) |
220 .then(setupAdapterSystem) | 235 .then(setupAdapterSystem) |
221 .then(function() { return adapterBroker.getDevices(); }) | 236 .then(function() { return adapterBroker.getDevices(); }) |
222 .then(setupDeviceSystem) | 237 .then(setupDeviceSystem) |
223 .catch(function(error) { | 238 .catch(function(error) { |
224 Snackbar.show(error.message, SnackbarType.ERROR); | 239 Snackbar.show(error.message, SnackbarType.ERROR); |
225 console.error(error); | 240 console.error(error); |
226 }); | 241 }); |
227 } | 242 } |
228 | 243 |
229 return { | 244 return { |
230 initializeViews: initializeViews | 245 initializeViews: initializeViews |
231 }; | 246 }; |
232 }); | 247 }); |
233 | 248 |
234 document.addEventListener( | 249 document.addEventListener( |
235 'DOMContentLoaded', bluetooth_internals.initializeViews); | 250 'DOMContentLoaded', bluetooth_internals.initializeViews); |
OLD | NEW |