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

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

Issue 2357383002: bluetooth: Add device list retrieval for chrome://bluetooth-internals (Closed)
Patch Set: Remove scoped_refptr get calls Created 4 years, 3 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 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 308779cb50e4ed62fb1168bf63515bbd91d2ec74..68efb06a83edcdabab79e611aacd535d7ff84a85 100644
--- a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
+++ b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
@@ -7,6 +7,86 @@
* chrome://bluetooth-internals/.
*/
-document.addEventListener('DOMContentLoaded', function() {
- console.log('Welcome to Bluetooth Internals.');
-});
+/**
+ * The implementation of AdapterClient in
+ * device/bluetooth/public/interfaces/adapter.mojom.
+ */
+var AdapterClient = function() {};
+AdapterClient.prototype = {
+ /**
+ * Prints added device to console.
+ * @param {!Object} device the device that was added
+ */
+ deviceAdded: function(device) {
+ console.log('Device added');
dpapad 2016/10/03 17:51:03 Are those console.logs temporary?
mbrunson 2016/10/03 18:56:03 Yes. They are temporary.
+ console.log(device);
+ },
+
+ /**
+ * Prints removed device to console.
+ * @param {!Object} device the device that was removed
+ */
+ deviceRemoved: function(device) {
+ console.log('Device removed');
+ console.log(device);
+ }
+};
+
+(function() {
+ var adapter = null;
+ var adapterClient = null;
+ var adapterClientHandle = null;
+
+ /**
+ * Helper to convert callback-based define() API to a promise-based API.
+ * @param {!Array<string>} moduleNames
+ * @return {!Promise}
+ */
+ function importModules(moduleNames) {
dpapad 2016/10/03 17:51:03 This function is repeated 3 times (and now 4), acr
mbrunson 2016/10/03 18:56:02 I've made a bug for this and added a TODO: crbug.c
+ return new Promise(function(resolve, reject) {
+ define(moduleNames, function(var_args) {
+ resolve(Array.prototype.slice.call(arguments, 0));
+ });
+ });
+ }
+
+ /**
+ * Initializes Mojo proxies for page and Bluetooth services.
+ * @return {!Promise}
+ */
+ function initializeProxies() {
+ return importModules([
+ 'content/public/renderer/frame_interfaces',
dpapad 2016/10/03 17:51:03 Indentation seems quite a bit off here. Shouldn't
mbrunson 2016/10/03 18:56:02 Done.
+ 'device/bluetooth/public/interfaces/adapter.mojom',
+ 'mojo/public/js/connection',
+ ])
+ .then(function(modules) {
+ var frameInterfaces = modules[0];
dpapad 2016/10/03 17:51:03 Nit: I believe that you can use destructuring assi
mbrunson 2016/10/03 18:56:03 Done.
+ var bluetoothAdapter = modules[1];
+ var connection = modules[2];
+
+ console.log('Loaded modules');
+
+ // Hook up the instance properties
+ AdapterClient.prototype.__proto__ =
+ bluetoothAdapter.AdapterClient.stubClass.prototype;
+
+ // Create a message pipe and bind one end to client
+ // implementation
dpapad 2016/10/03 17:51:03 Nit: Comments should have proper punctuation.
mbrunson 2016/10/03 18:56:02 Done.
+ adapterClient = new AdapterClient();
+ adapterClientHandle = connection.bindStubDerivedImpl(adapterClient);
+
+ adapter = connection.bindHandleToProxy(
+ frameInterfaces.getInterface(bluetoothAdapter.Adapter.name),
+ bluetoothAdapter.Adapter);
+
+ adapter.setClient(adapterClientHandle);
+ });
+ }
+
+ document.addEventListener('DOMContentLoaded', function() {
+ initializeProxies()
+ .then(function() { return adapter.getDevices();})
+ .then(function(response) {console.log(response.devices);});
+ });
+})();

Powered by Google App Engine
This is Rietveld 408576698