Chromium Code Reviews| 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);}); |
| + }); |
| +})(); |