| 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 |