| 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 cr.define('bluetooth_internals', function() { | 10 cr.define('bluetooth_internals', function() { | 
|  | 11 | 
|  | 12   /** @type {!Map<string, !interfaces.BluetoothDevice.Device.proxyClass>} */ | 
|  | 13   var deviceAddressToProxy = new Map(); | 
|  | 14 | 
| 11   function initializeViews() { | 15   function initializeViews() { | 
| 12     var adapterBroker = null; | 16     var adapterBroker = null; | 
| 13     adapter_broker.getAdapterBroker() | 17     adapter_broker.getAdapterBroker() | 
| 14       .then(function(broker) { adapterBroker = broker; }) | 18       .then(function(broker) { adapterBroker = broker; }) | 
| 15       .then(function() { return adapterBroker.getInfo(); }) | 19       .then(function() { return adapterBroker.getInfo(); }) | 
| 16       .then(function(response) { console.log('adapter', response.info); }) | 20       .then(function(response) { console.log('adapter', response.info); }) | 
| 17       .then(function() { return adapterBroker.getDevices(); }) | 21       .then(function() { return adapterBroker.getDevices(); }) | 
| 18       .then(function(response) { | 22       .then(function(response) { | 
| 19         // Hook up device collection events. | 23         // Hook up device collection events. | 
| 20         var devices = new device_collection.DeviceCollection([]); | 24         var devices = new device_collection.DeviceCollection([]); | 
| 21         adapterBroker.addEventListener('deviceadded', function(event) { | 25         adapterBroker.addEventListener('deviceadded', function(event) { | 
| 22           devices.addOrUpdate(event.detail.deviceInfo); | 26           devices.addOrUpdate(event.detail.deviceInfo); | 
| 23         }); | 27         }); | 
| 24         adapterBroker.addEventListener('devicechanged', function(event) { | 28         adapterBroker.addEventListener('devicechanged', function(event) { | 
| 25           devices.addOrUpdate(event.detail.deviceInfo); | 29           devices.addOrUpdate(event.detail.deviceInfo); | 
| 26         }); | 30         }); | 
| 27         adapterBroker.addEventListener('deviceremoved', function(event) { | 31         adapterBroker.addEventListener('deviceremoved', function(event) { | 
| 28           devices.remove(event.detail.deviceInfo); | 32           devices.remove(event.detail.deviceInfo); | 
| 29         }); | 33         }); | 
| 30 | 34 | 
| 31         response.devices.forEach(devices.addOrUpdate, | 35         response.devices.forEach(devices.addOrUpdate, | 
| 32                                  devices /* this */); | 36                                  devices /* this */); | 
| 33 | 37 | 
| 34         var deviceTable = new device_table.DeviceTable(); | 38         var deviceTable = new device_table.DeviceTable(); | 
|  | 39 | 
|  | 40         deviceTable.addEventListener('inspectpressed', function(event) { | 
|  | 41           // TODO(crbug.com/663470): Move connection logic to DeviceDetailsView | 
|  | 42           // when it's added in chrome://bluetooth-internals. | 
|  | 43           var address = event.detail.address; | 
|  | 44           var proxy = deviceAddressToProxy.get(address); | 
|  | 45 | 
|  | 46           if (proxy) { | 
|  | 47             // Device is already connected, so disconnect. | 
|  | 48             proxy.disconnect(); | 
|  | 49             deviceAddressToProxy.delete(address); | 
|  | 50             devices.updateConnectionStatus( | 
|  | 51                 address, device_collection.ConnectionStatus.DISCONNECTED); | 
|  | 52             return; | 
|  | 53           } | 
|  | 54 | 
|  | 55           devices.updateConnectionStatus( | 
|  | 56               address, device_collection.ConnectionStatus.CONNECTING); | 
|  | 57           adapterBroker.connectToDevice(address).then(function(deviceProxy) { | 
|  | 58             if (!devices.getByAddress(address)) { | 
|  | 59               // Device no longer in list, so drop the connection. | 
|  | 60               deviceProxy.disconnect(); | 
|  | 61               return; | 
|  | 62             } | 
|  | 63 | 
|  | 64             deviceAddressToProxy.set(address, deviceProxy); | 
|  | 65             devices.updateConnectionStatus( | 
|  | 66                 address, device_collection.ConnectionStatus.CONNECTED); | 
|  | 67 | 
|  | 68             // Fetch services asynchronously. | 
|  | 69             return deviceProxy.getServices(); | 
|  | 70           }).then(function(response) { | 
|  | 71             var deviceInfo = devices.getByAddress(address); | 
|  | 72             deviceInfo.services = response.services; | 
|  | 73             devices.addOrUpdate(deviceInfo); | 
|  | 74           }).catch(function(error) { | 
|  | 75             devices.updateConnectionStatus( | 
|  | 76                 address, | 
|  | 77                 device_collection.ConnectionStatus.DISCONNECTED, | 
|  | 78                 error); | 
|  | 79           }); | 
|  | 80         }); | 
|  | 81 | 
| 35         deviceTable.setDevices(devices); | 82         deviceTable.setDevices(devices); | 
| 36         document.body.appendChild(deviceTable); | 83         document.body.appendChild(deviceTable); | 
| 37       }) | 84       }) | 
| 38       .catch(function(error) { console.error(error); }); | 85       .catch(function(error) { console.error(error); }); | 
| 39   } | 86   } | 
| 40 | 87 | 
| 41   return { | 88   return { | 
| 42     initializeViews: initializeViews | 89     initializeViews: initializeViews | 
| 43   }; | 90   }; | 
| 44 | 91 | 
| 45 }); | 92 }); | 
| 46 | 93 | 
| 47 document.addEventListener( | 94 document.addEventListener( | 
| 48     'DOMContentLoaded', bluetooth_internals.initializeViews); | 95     'DOMContentLoaded', bluetooth_internals.initializeViews); | 
| OLD | NEW | 
|---|