| 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..e7e6ae3c4254447ca74ad9224b40e06cd78f00ee 100644
|
| --- a/chrome/browser/resources/bluetooth_internals/device_collection.js
|
| +++ b/chrome/browser/resources/bluetooth_internals/device_collection.js
|
| @@ -8,12 +8,25 @@
|
| */
|
|
|
| cr.define('device_collection', function() {
|
| + /**
|
| + * Enum of connection status for a device. Used for
|
| + * DeviceCollection.updateConnectionStatus which sets the connectionStatus
|
| + * on the DeviceInfo object. New DeviceInfo objects have a DISCONNECTED status
|
| + * by default.
|
| + * @enum {number}
|
| + */
|
| + var ConnectionStatus = {
|
| + DISCONNECTED: 0,
|
| + CONNECTING: 1,
|
| + CONNECTED: 2,
|
| + };
|
| +
|
| /*
|
| * Collection of devices. Extends ArrayDataModel which provides a set of
|
| * functions and events that notifies observers when the collection changes.
|
| * @constructor
|
| - * @param {!Array<device_collection.Device>} array The starting collection of
|
| - * devices.
|
| + * @param {!Array<!device_collection.DeviceInfo>} array The starting
|
| + * collection of devices.
|
| * @extends {cr.ui.ArrayDataModel}
|
| */
|
| var DeviceCollection = function(array) {
|
| @@ -29,7 +42,7 @@ cr.define('device_collection', function() {
|
| getByAddress: function(address) {
|
| for (var i = 0; i < this.length; i++) {
|
| var device = this.item(i);
|
| - if (address == device.info.address)
|
| + if (address == device.address)
|
| return device;
|
| }
|
| return null;
|
| @@ -40,19 +53,23 @@ cr.define('device_collection', function() {
|
| * @param {!interfaces.BluetoothDevice.DeviceInfo} deviceInfo
|
| */
|
| addOrUpdate: function(deviceInfo) {
|
| - var oldDevice = this.getByAddress(deviceInfo.address);
|
| - if (oldDevice) {
|
| + deviceInfo.removed = false;
|
| + var oldDeviceInfo = this.getByAddress(deviceInfo.address);
|
| +
|
| + if (oldDeviceInfo) {
|
| // Update rssi if it's valid
|
| var rssi = (deviceInfo.rssi && deviceInfo.rssi.value) ||
|
| - (oldDevice.info.rssi && oldDevice.info.rssi.value);
|
| + (oldDeviceInfo.rssi && oldDeviceInfo.rssi.value);
|
|
|
| - oldDevice.info = deviceInfo;
|
| - oldDevice.info.rssi = { value: rssi };
|
| - oldDevice.removed = false;
|
| -
|
| - this.updateIndex(this.indexOf(oldDevice));
|
| + // The connectionStatus and connectionMessage properties may not exist
|
| + // on |deviceInfo|. The rssi property may be null, so it must be
|
| + // re-assigned.
|
| + Object.assign(oldDeviceInfo, deviceInfo);
|
| + oldDeviceInfo.rssi = { value: rssi };
|
| + this.updateIndex(this.indexOf(oldDeviceInfo));
|
| } else {
|
| - this.push(new Device(deviceInfo));
|
| + deviceInfo.connectionStatus = ConnectionStatus.DISCONNECTED;
|
| + this.push(deviceInfo);
|
| }
|
| },
|
|
|
| @@ -65,21 +82,29 @@ cr.define('device_collection', function() {
|
| assert(device, 'Device does not exist.');
|
| device.removed = true;
|
| this.updateIndex(this.indexOf(device));
|
| - }
|
| - };
|
| + },
|
|
|
| - /*
|
| - * Data model for a cached device.
|
| - * @constructor
|
| - * @param {!interfaces.BluetoothDevice.DeviceInfo} info
|
| - */
|
| - var Device = function(info) {
|
| - this.info = info;
|
| - this.removed = false;
|
| + /**
|
| + * Updates the device connection status.
|
| + * @param {string} address The address of the device.
|
| + * @param {number} status .
|
| + * @param {?Error} opt_error Optional Error from connection.
|
| + */
|
| + updateConnectionStatus: function(address, status, opt_error) {
|
| + var message = (opt_error && opt_error.message) || '';
|
| +
|
| + var device = assert(this.getByAddress(address), 'Device does not exist');
|
| + device.connectionStatus = status;
|
| +
|
| + // TODO(crbug.com/663830): Replace connection error column with better
|
| + // notification system.
|
| + device.connectionMessage = message;
|
| + this.updateIndex(this.indexOf(device));
|
| + },
|
| };
|
|
|
| return {
|
| - Device: Device,
|
| + ConnectionStatus: ConnectionStatus,
|
| DeviceCollection: DeviceCollection,
|
| };
|
| });
|
|
|