| Index: third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js
|
| diff --git a/third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js b/third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js
|
| index 4ff126f700c4495d0dc470b3101db2cc936a94bf..450c27d360293c32dec0bf33b16d4700e956ae02 100644
|
| --- a/third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js
|
| +++ b/third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js
|
| @@ -26,6 +26,19 @@
|
| return mojo_;
|
| }
|
|
|
| + function toMojoCentralState(state) {
|
| + switch (state) {
|
| + case 'absent':
|
| + return mojo_.CentralState.ABSENT;
|
| + case 'powered-off':
|
| + return mojo_.CentralState.POWERED_OFF;
|
| + case 'powered-on':
|
| + return mojo_.CentralState.POWERED_ON;
|
| + default:
|
| + throw `Unsupported value ${state} for state.`;
|
| + }
|
| + }
|
| +
|
| class FakeBluetooth {
|
| constructor() {
|
| this.fake_bluetooth_ptr_ = undefined;
|
| @@ -45,9 +58,10 @@
|
| // TODO(crbug.com/569709): Remove once setBluetoothFakeAdapter is no
|
| // longer used.
|
| await setBluetoothFakeAdapter('');
|
| + await this.initFakeBluetoothInterfacePtr_();
|
|
|
| if (typeof supported !== 'boolean') throw 'Type Not Supported';
|
| - await (await this.getFakeBluetoothInterface_()).setLESupported(supported);
|
| + await this.fake_bluetooth_ptr_.setLESupported(supported);
|
| }
|
|
|
| // Returns a promise that resolves with a FakeCentral that clients can use
|
| @@ -71,33 +85,17 @@
|
| // TODO(crbug.com/569709): Remove once setBluetoothFakeAdapter is no
|
| // longer used.
|
| await setBluetoothFakeAdapter('');
|
| + await this.initFakeBluetoothInterfacePtr_();
|
|
|
| await this.setLESupported(true);
|
| - let mojo = await loadFakeBluetoothInterfaces();
|
| -
|
| - let mojo_manager_state;
|
| - switch (state) {
|
| - case 'absent':
|
| - mojo_manager_state = mojo.CentralState.ABSENT;
|
| - break;
|
| - case 'powered-off':
|
| - mojo_manager_state = mojo.CentralState.POWERED_OFF;
|
| - break;
|
| - case 'powered-on':
|
| - mojo_manager_state = mojo.CentralState.POWERED_ON;
|
| - break;
|
| - default:
|
| - throw `Unsupported value ${state} for state.`;
|
| - }
|
|
|
| let {fake_central:fake_central_ptr} =
|
| - await (await this.getFakeBluetoothInterface_()).simulateCentral(
|
| - mojo_manager_state);
|
| -
|
| + await this.fake_bluetooth_ptr_.simulateCentral(
|
| + toMojoCentralState(state));
|
| return new FakeCentral(fake_central_ptr);
|
| }
|
|
|
| - async getFakeBluetoothInterface_() {
|
| + async initFakeBluetoothInterfacePtr_() {
|
| if (typeof this.fake_bluetooth_ptr_ !== 'undefined') {
|
| return this.fake_bluetooth_ptr_;
|
| }
|
| @@ -106,8 +104,6 @@
|
|
|
| this.fake_bluetooth_ptr_ = new mojo.FakeBluetoothPtr(
|
| mojo.interfaces.getInterface(mojo.FakeBluetooth.name));
|
| -
|
| - return this.fake_bluetooth_ptr_;
|
| }
|
| }
|
|
|
| @@ -120,17 +116,26 @@
|
| this.peripherals_ = new Map();
|
| }
|
|
|
| - // Simulates a peripheral with |address| and |name| that has already
|
| - // been connected to the system. If the peripheral existed already it
|
| - // updates its name.
|
| + // Simulates a peripheral with |address|, |name| and |known_service_uuids|
|
| + // that has already been connected to the system. If the peripheral existed
|
| + // already it updates its name and known UUIDs. |known_service_uuids| should
|
| + // be an array of BluetoothServiceUUIDs
|
| + // https://webbluetoothcg.github.io/web-bluetooth/#typedefdef-bluetoothserviceuuid
|
| //
|
| // Platforms offer methods to retrieve devices that have already been
|
| - // connected to the system or weren't connected through the UA e.g. a
|
| - // user connected a peripheral through the system's settings. This method is
|
| + // connected to the system or weren't connected through the UA e.g. a user
|
| + // connected a peripheral through the system's settings. This method is
|
| // intended to simulate peripherals that those methods would return.
|
| - async simulatePreconnectedPeripheral({address, name}) {
|
| + async simulatePreconnectedPeripheral({
|
| + address, name, knownServiceUUIDs = []}) {
|
| +
|
| + // Canonicalize and convert to mojo UUIDs.
|
| + knownServiceUUIDs.forEach((val, i, arr) => {
|
| + knownServiceUUIDs[i] = {uuid: BluetoothUUID.getService(val)};
|
| + });
|
| +
|
| await this.fake_central_ptr_.simulatePreconnectedPeripheral(
|
| - address, name);
|
| + address, name, knownServiceUUIDs);
|
|
|
| let peripheral = this.peripherals_.get(address);
|
| if (peripheral === undefined) {
|
|
|