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

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

Issue 2357383002: bluetooth: Add device list retrieval for chrome://bluetooth-internals (Closed)
Patch Set: Update visibility 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..f3ed54f0e3f5b571c165eee42e6f792fa419295b 100644
--- a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
+++ b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
@@ -7,6 +7,83 @@
* chrome://bluetooth-internals/.
*/
-document.addEventListener('DOMContentLoaded', function() {
- console.log('Welcome to Bluetooth Internals.');
-});
+/**
+ * The implementation of AdapterClient in
+ * device/bluetooth/public/interfaces/adapter.mojom.
+ */
+class AdapterClient {
+ /**
+ * Prints added device to console.
+ * @param {!Object} device the device that was added
+ */
+ deviceAdded(device) {
+ console.log('Device added');
+ console.log(device);
+ }
+
+ /**
+ * Prints removed device to console.
+ * @param {!Object} device the device that was removed
+ */
+ deviceRemoved(device) {
+ console.log('Device removed');
+ console.log(device);
+ }
+};
+
+(function() {
+ let adapter = null;
+ let adapterClient = null;
+ let adapterClientHandle = null;
+
+ /**
+ * Helper to convert callback-based define() API to a promise-based API.
+ * @param {!Array<string>} moduleNames
+ * @return {!Promise}
+ */
+ function importModules(moduleNames) {
+ 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',
+ 'device/bluetooth/public/interfaces/adapter.mojom',
+ 'mojo/public/js/connection',
+ ])
+ .then(([frameInterfaces, bluetoothAdapter, connection]) => {
+ console.log('Loaded modules');
+
+ // Hook up the instance properties
+ Object.setPrototypeOf(
+ AdapterClient.prototype,
+ bluetoothAdapter.AdapterClient.stubClass.prototype);
+
+
+ // Create a message pipe and bind one end to client
+ // implementation
+ 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(() => adapter.getDevices())
+ .then(response => console.log(response.devices));
+ });
+})();

Powered by Google App Engine
This is Rietveld 408576698