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

Unified Diff: chrome/browser/resources/bluetooth_internals/bluetooth_internals.js

Issue 2448713002: bluetooth: Add Device connection logic and accompanying user interface. (Closed)
Patch Set: Add pub/sub system for device events, various issue fixes Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
diff --git a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
index 4057293273bc1ddaa7726553896bef63b21fd86d..b5650775ec3b74636a7e654f3ebbf8d83cead834 100644
--- a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
+++ b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
@@ -31,6 +31,28 @@ cr.define('bluetooth_internals', function() {
response.devices.forEach(devices.addOrUpdate,
devices /* this */);
+ // TODO(crbug.com/663470): Move subscribe statements to DevicesView when
+ // it's added.
+ bluetooth_internals.subscribe('connectrequest', function(event) {
ortuno 2016/11/09 03:24:03 I think we want to do this the other way around. D
mbrunson 2016/11/09 23:39:37 We can use addEventListener on DeviceTable since i
+ var index = event.detail.index;
+ var device = devices.item(index);
+
+ if (device.proxy) {
+ device.disconnect();
+ devices.updateConnectionStatus(index);
+ } else {
+ device.connect().then(function() {
+ devices.updateConnectionStatus(index);
+
+ device.getServices().then(function() {
+ devices.updateIndex(index);
+ });
+ }).catch(function(error) {
+ devices.updateConnectionStatus(index, error);
+ });
+ }
+ });
ortuno 2016/11/09 03:24:03 Should this be bound to bluetooth_internals?
mbrunson 2016/11/09 23:39:37 It doesn't really need to be.
+
var deviceTable = new device_table.DeviceTable();
deviceTable.setDevices(devices);
document.body.appendChild(deviceTable);
@@ -38,7 +60,26 @@ cr.define('bluetooth_internals', function() {
.catch(function(error) { console.error(error); });
}
+ var eventHandlersMap = new Map();
+
+ function publish(event) {
+ var handlers = eventHandlersMap.get(event.type);
+ handlers.forEach(function(handler) {
+ handler(event);
+ });
+ }
+
+ function subscribe(eventName, delegate) {
+ if (!eventHandlersMap.has(eventName)) {
+ eventHandlersMap.set(eventName, []);
+ }
+
+ eventHandlersMap.get(eventName).push(delegate);
+ }
+
return {
+ publish: publish,
+ subscribe: subscribe,
initializeViews: initializeViews
};

Powered by Google App Engine
This is Rietveld 408576698