Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Side by Side Diff: chrome/browser/resources/bluetooth_internals/bluetooth_internals.js

Issue 2418343002: bluetooth: Add device list UI for chrome://bluetooth-internals. (Closed)
Patch Set: Merge upstream Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 (function() { 10 (function() {
(...skipping 11 matching lines...) Expand all
22 * device/bluetooth/public/interfaces/adapter.mojom. 22 * device/bluetooth/public/interfaces/adapter.mojom.
23 */ 23 */
24 var AdapterClient = function() {}; 24 var AdapterClient = function() {};
25 AdapterClient.prototype = { 25 AdapterClient.prototype = {
26 /** 26 /**
27 * Logs added device to console, caches the device info, and sets the 27 * Logs added device to console, caches the device info, and sets the
28 * GattClient. 28 * GattClient.
29 * @param {!bluetoothDevice.DeviceInfo} device 29 * @param {!bluetoothDevice.DeviceInfo} device
30 */ 30 */
31 deviceAdded: function(device) { 31 deviceAdded: function(device) {
32 console.log('Device added', device); 32 console.log('Device added', device);
scheib 2016/10/15 03:51:45 Remove .log lines now that there's a display?
mbrunson 2016/10/18 00:21:25 I'll remove them but leave the log for adapter.get
33 devices[device.address] = new Device(); 33 devices[device.address] = new Device();
34 devices[device.address].info = device; 34 devices[device.address].info = device;
35 setDeviceClient(device); 35 setDeviceClient(device);
36 refreshDeviceList();
36 }, 37 },
37 38
38 /** 39 /**
39 * Logs removed device to console and removes the cached device. 40 * Logs removed device to console and removes the cached device.
40 * @param {!bluetoothDevice.DeviceInfo} device 41 * @param {!bluetoothDevice.DeviceInfo} device
41 */ 42 */
42 deviceRemoved: function(device) { 43 deviceRemoved: function(device) {
43 console.log('Device removed', device); 44 console.log('Device removed', device);
44 delete devices[device.address]; 45 delete devices[device.address];
46 refreshDeviceList();
45 } 47 }
46 }; 48 };
47 49
48 /** 50 /**
49 * The implementation of GattClient in 51 * The implementation of GattClient in
50 * device/bluetooth/public/interfaces/device.mojom. 52 * device/bluetooth/public/interfaces/device.mojom.
51 */ 53 */
52 var GattClient = function() {}; 54 var GattClient = function() {};
53 GattClient.prototype = { 55 GattClient.prototype = {
54 /** 56 /**
55 * Logs received advertising packet to console. caches the last valid 57 * Logs received advertising packet to console. caches the last valid
56 * RSSI, and refreshes the device list. 58 * RSSI, and refreshes the device list.
57 * @param {!bluetoothDevice.AdvertisingPacket} advertisingPacket the 59 * @param {!bluetoothDevice.AdvertisingPacket} advertisingPacket the
58 * advertising packet received from the device. 60 * advertising packet received from the device.
59 */ 61 */
60 packetReceived: function(advertisingPacket) { 62 packetReceived: function(advertisingPacket) {
61 console.log(new Date(advertisingPacket.timestamp), advertisingPacket); 63 console.log(new Date(advertisingPacket.timestamp), advertisingPacket);
62 64
63 if (advertisingPacket.rssi) { 65 if (advertisingPacket.rssi) {
64 devices[advertisingPacket.device.address].info.rssi = 66 devices[advertisingPacket.device.address].info.rssi =
65 advertisingPacket.rssi; 67 advertisingPacket.rssi;
66 } 68 }
69 refreshDeviceList();
67 } 70 }
68 }; 71 };
69 72
70 /** 73 /**
71 * TODO(crbug.com/652361): Move to shared location. 74 * TODO(crbug.com/652361): Move to shared location.
72 * Helper to convert callback-based define() API to a promise-based API. 75 * Helper to convert callback-based define() API to a promise-based API.
73 * @param {!Array<string>} moduleNames 76 * @param {!Array<string>} moduleNames
74 * @return {!Promise} 77 * @return {!Promise}
75 */ 78 */
76 function importModules(moduleNames) { 79 function importModules(moduleNames) {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 170
168 if (!devices[deviceInfo.address]) { 171 if (!devices[deviceInfo.address]) {
169 devices[deviceInfo.address] = new Device(); 172 devices[deviceInfo.address] = new Device();
170 } 173 }
171 174
172 devices[deviceInfo.address].proxy = device; 175 devices[deviceInfo.address].proxy = device;
173 return device; 176 return device;
174 }); 177 });
175 } 178 }
176 179
180 /**
181 * Updates the device list with the current devices from the |devices|
182 * dictionary.
183 */
184 function refreshDeviceList() {
185 var deviceRowTemplate = $('device-row-template');
186 var deviceList = $('device-list');
187 deviceList.innerHTML = '';
188
189 for (var address in devices) {
190 var info = devices[address].info;
191 var deviceRow = deviceRowTemplate.content.cloneNode(true);
192 deviceRow.querySelector('.device-name').innerText =
193 info.name_for_display;
194 deviceRow.querySelector('.device-address').innerText = info.address;
195 deviceRow.querySelector('.device-rssi').innerText = info.rssi || '0';
196 deviceList.appendChild(deviceRow);
197 }
198 }
199
177 document.addEventListener('DOMContentLoaded', function() { 200 document.addEventListener('DOMContentLoaded', function() {
178 initializeProxies() 201 initializeProxies()
179 .then(function() { return adapter.getInfo(); }) 202 .then(function() { return adapter.getInfo(); })
180 .then(function(response) { console.log('adapter', response.info); }) 203 .then(function(response) { console.log('adapter', response.info); })
181 .then(function() { return adapter.getDevices(); }) 204 .then(function() { return adapter.getDevices(); })
182 .then(function(response) { 205 .then(function(response) {
183 console.log('devices', response.devices.length); 206 console.log('devices', response.devices.length);
184 207
185 response.devices.forEach(function(deviceInfo) { 208 response.devices.forEach(function(deviceInfo) {
186 devices[deviceInfo.address] = new Device(); 209 devices[deviceInfo.address] = new Device();
187 devices[deviceInfo.address].info = deviceInfo; 210 devices[deviceInfo.address].info = deviceInfo;
188 console.log(deviceInfo.name_for_display, deviceInfo);
189 }); 211 });
190 212
191 return Promise.all(response.devices.map(setDeviceClient)); 213 return Promise.all(response.devices.map(setDeviceClient));
192 }) 214 })
215 .then(refreshDeviceList)
193 .catch(function(error) { console.error(error); }); 216 .catch(function(error) { console.error(error); });
194 }); 217 });
195 })(); 218 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698