Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 (function() { | |
| 10 let adapterService = null; | |
| 11 let adapterClient = null; | |
| 12 let adapterHandle = null; | |
| 13 let clientHandle = null; | |
| 9 | 14 |
| 10 document.addEventListener('DOMContentLoaded', function() { | 15 /** |
| 11 console.log('Welcome to Bluetooth Internals.'); | 16 * Helper to convert callback-based define() API to a promise-based API. |
| 12 }); | 17 * @param {!Array<string>} moduleNames |
| 18 * @return {!Promise} | |
| 19 */ | |
| 20 function importModules(moduleNames) { | |
| 21 return new Promise(function(resolve, reject) { | |
| 22 define(moduleNames, function(var_args) { | |
| 23 resolve(Array.prototype.slice.call(arguments, 0)); | |
| 24 }); | |
| 25 }); | |
| 26 } | |
| 27 | |
| 28 /** | |
| 29 * Initializes Mojo proxies for page and Bluetooth services. | |
| 30 * @return {!Promise} | |
| 31 */ | |
| 32 function initializeProxies() { | |
| 33 return importModules([ | |
| 34 'content/public/renderer/frame_interfaces', | |
| 35 'chrome/browser/ui/webui/bluetooth_internals/' + | |
| 36 'bluetooth_internals.mojom', | |
| 37 'device/bluetooth/public/interfaces/bluetooth.mojom', | |
| 38 'mojo/public/js/connection', | |
| 39 ]) | |
| 40 .then((modules) => { | |
|
ortuno
2016/09/26 01:57:56
Unless I'm missing something you should be able to
mbrunson
2016/09/28 02:18:22
Done.
| |
| 41 let [frameInterfaces, mojom, bluetooth, connection] = modules; | |
| 42 let pageHandler = connection.bindHandleToProxy( | |
|
ortuno
2016/09/26 01:57:56
Consider moving this further down to where it is u
mbrunson
2016/09/28 02:18:22
Done.
| |
| 43 frameInterfaces.getInterface(mojom.InternalsPageHandler.name), | |
| 44 mojom.InternalsPageHandler); | |
| 45 | |
| 46 class AdapterClientImpl extends bluetooth.AdapterClient.stubClass { | |
|
scheib
2016/09/26 19:37:26
Move the AdapterClientImpl class definition to the
mbrunson
2016/09/28 02:18:22
I've moved the declaration up and put the subclass
| |
| 47 constructor() { super(); } | |
| 48 | |
| 49 /** | |
| 50 * Prints added device to console | |
| 51 * @param {!Object} device the device that was added | |
| 52 */ | |
| 53 deviceAdded(device) { | |
| 54 console.log('Device added'); | |
| 55 console.log(device); | |
| 56 } | |
| 57 | |
| 58 /** | |
| 59 * Prints removed device to console | |
| 60 * @param {!Object} device the device that was removed | |
| 61 */ | |
| 62 deviceRemoved(device) { | |
| 63 console.log('Device added'); | |
|
ortuno
2016/09/26 01:57:56
Device removed :)
mbrunson
2016/09/28 02:18:22
Yes. That makes much more sense. :)
| |
| 64 console.log(device); | |
| 65 } | |
| 66 } | |
| 67 | |
| 68 adapterClient = new AdapterClientImpl(); | |
| 69 | |
| 70 return new Promise((resolve) => { | |
|
ortuno
2016/09/26 01:57:56
There is no indication that initializeProxies() wi
| |
| 71 | |
| 72 // Create adapter service interface request | |
| 73 adapterHandle = connection.bindProxy(resolve, bluetooth.Adapter); | |
| 74 | |
| 75 // Create a message pipe and bind one end to client implementation | |
| 76 clientHandle = connection.bindStubDerivedImpl(adapterClient); | |
|
ortuno
2016/09/26 07:45:17
You are creating a different pipe for the client.
scheib
2016/09/26 18:00:37
https://www.chromium.org/developers/design-documen
mbrunson
2016/09/28 02:18:22
Ok. When I was writing the adapter service, I spec
| |
| 77 | |
| 78 // Send interface request and other end of client message pipe to | |
| 79 // C++ | |
| 80 pageHandler.getAdapterService(adapterHandle, clientHandle); | |
| 81 }); | |
| 82 }); | |
| 83 } | |
| 84 | |
| 85 document.addEventListener('DOMContentLoaded', function() { | |
| 86 initializeProxies() | |
| 87 .then((service) => { | |
| 88 adapterService = service; | |
| 89 return service.getDevices(); | |
| 90 }) | |
| 91 .then((response) => console.log(response.devices)); | |
| 92 }); | |
| 93 })(); | |
| OLD | NEW |