Chromium Code Reviews| Index: chrome/browser/resources/bluetooth_internals/device_collection.js |
| diff --git a/chrome/browser/resources/bluetooth_internals/device_collection.js b/chrome/browser/resources/bluetooth_internals/device_collection.js |
| index 4d86d99c79d47e972aa809d210f54b8a59528384..30329ba6e19f73aeb9dbd51bd957cac4b70d2a76 100644 |
| --- a/chrome/browser/resources/bluetooth_internals/device_collection.js |
| +++ b/chrome/browser/resources/bluetooth_internals/device_collection.js |
| @@ -46,7 +46,7 @@ cr.define('device_collection', function() { |
| var rssi = (deviceInfo.rssi && deviceInfo.rssi.value) || |
| (oldDevice.info.rssi && oldDevice.info.rssi.value); |
| - oldDevice.info = deviceInfo; |
| + Object.assign(oldDevice.info, deviceInfo); |
| oldDevice.info.rssi = { value: rssi }; |
| oldDevice.removed = false; |
| @@ -63,9 +63,25 @@ cr.define('device_collection', function() { |
| remove: function(deviceInfo) { |
| var device = this.getByAddress(deviceInfo.address); |
| assert(device, 'Device does not exist.'); |
| + |
| device.removed = true; |
| + device.proxy = null; |
| this.updateIndex(this.indexOf(device)); |
| - } |
| + }, |
| + |
| + /** |
| + * |
| + */ |
| + updateConnectionStatus: function(index, optional_error) { |
|
ortuno
2016/11/09 03:24:03
I would use the address instead. If I understand c
mbrunson
2016/11/09 23:39:37
Done.
|
| + var message = (optional_error && optional_error.message) || ''; |
|
ortuno
2016/11/09 03:24:03
I would save the information in the device object
mbrunson
2016/11/09 23:39:37
Done.
|
| + var event = new CustomEvent('connectstatus', { |
| + detail: { |
| + index: index, |
| + message: message, |
| + } |
| + }); |
| + this.dispatchEvent(event); |
| + }, |
| }; |
| /* |
| @@ -78,6 +94,37 @@ cr.define('device_collection', function() { |
| this.removed = false; |
| }; |
| + Device.prototype = { |
|
ortuno
2016/11/09 03:24:03
Before this patch this class used to only hold inf
mbrunson
2016/11/09 23:39:37
Hmm ok. So in the final design, DeviceDetailsView
|
| + /** |
| + * Creates a connection to this device and updates the service list. |
| + * @return {Promise} rejects if connection failed, resolves otherwise. |
| + */ |
| + connect: function() { |
| + return adapter_broker.getAdapterBroker().then(function(broker) { |
| + return broker.connectToDevice(this.info.address); |
| + }.bind(this)).then(function(response) { |
| + this.proxy = response.device; |
| + }.bind(this)); |
| + }, |
| + |
| + /** |
| + * Disconnects the device and removes the Device interface proxy. |
| + */ |
| + disconnect: function() { |
| + if (this.proxy) { |
| + this.proxy.disconnect(); |
| + this.proxy = null; |
| + } |
| + }, |
| + |
| + getServices: function() { |
| + return this.proxy.getServices().then(function(response) { |
| + this.info.services = response.services; |
| + return this.info.services; |
| + }.bind(this)); |
| + } |
| + }; |
| + |
| return { |
| Device: Device, |
| DeviceCollection: DeviceCollection, |