| 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 d391827f227e120cff52f08b585481fc11e3d79f..a5d586453073eae31d221c9899fad8a2c71a05ac 100644
|
| --- a/third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js
|
| +++ b/third_party/WebKit/LayoutTests/resources/bluetooth/web-bluetooth-test.js
|
| @@ -15,7 +15,14 @@
|
| 'device/bluetooth/public/interfaces/test/fake_bluetooth.mojom'
|
| ]);
|
|
|
| - [mojo_.bindings, mojo_.FakeBluetooth] = mojo_.modules;
|
| + [mojo_.bindings, {
|
| + LECentralObserverManagerState: mojo_.LECentralObserverManagerState,
|
| + FakeBluetooth: mojo_.FakeBluetooth,
|
| + FakeBluetoothPtr: mojo_.FakeBluetoothPtr,
|
| + FakeLECentralObserverManager: mojo_.FakeLECentralObserverManager,
|
| + FakeLECentralObserverManagerPtr: mojo_.FakeLECentralObserverManagerPtr,
|
| + }] = mojo_.modules;
|
| +
|
| return mojo_;
|
| }
|
|
|
| @@ -41,6 +48,44 @@
|
| };
|
| }
|
|
|
| + // Returns a promise that resolves with a FakeLECentralObserverManager that
|
| + // clients can use to simulate events that a device in the Central/Observer
|
| + // role would receive as well as monitor the operations performed by the
|
| + // device in the Central/Observer role.
|
| + async simulateCentralObserverManager({state}) {
|
| + // Call setBluetoothFakeAdapter() to clean up any fake adapters left over
|
| + // by legacy tests.
|
| + // Legacy tests that use setBluetoothFakeAdapter() sometimes fail to clean
|
| + // their fake adapter. This is not a problem for these tests because the
|
| + // next setBluetoothFakeAdapter() will clean it up anyway but it is a
|
| + // problem for the new tests that do not use setBluetoothFakeAdapter().
|
| + // TODO(crbug.com/569709): Remove once setBluetoothFakeAdapter is no
|
| + // longer used.
|
| + await setBluetoothFakeAdapter('');
|
| + let mojo = await loadFakeBluetoothInterfaces();
|
| +
|
| + let mojo_manager_state;
|
| + switch (state) {
|
| + case 'absent':
|
| + mojo_manager_state = mojo.LECentralObserverManagerState.ABSENT;
|
| + break;
|
| + case 'poweredoff':
|
| + mojo_manager_state = mojo.LECentralObserverManagerState.POWERED_OFF;
|
| + break;
|
| + case 'poweredon':
|
| + mojo_manager_state = mojo.LECentralObserverManagerState.POWERED_ON;
|
| + break;
|
| + default:
|
| + throw `Unsupported value ${state} for state.`;
|
| + }
|
| +
|
| + let {fake_manager:fake_manager_ptr} =
|
| + await (await this.getFakeBluetoothInterface_())
|
| + .simulateLECentralObserverManager(mojo_manager_state);
|
| +
|
| + return new FakeLECentralObserverManager(fake_manager_ptr);
|
| + }
|
| +
|
| async getFakeBluetoothInterface_() {
|
| if (typeof this.fake_bluetooth_ptr_ !== 'undefined') {
|
| return this.fake_bluetooth_ptr_;
|
| @@ -48,13 +93,21 @@
|
|
|
| let mojo = await loadFakeBluetoothInterfaces();
|
|
|
| - this.fake_bluetooth_ptr_ = new mojo.FakeBluetooth.FakeBluetoothPtr(
|
| - mojo.interfaces.getInterface(
|
| - mojo.FakeBluetooth.FakeBluetooth.name));
|
| + this.fake_bluetooth_ptr_ = new mojo.FakeBluetoothPtr(
|
| + mojo.interfaces.getInterface(mojo.FakeBluetooth.name));
|
|
|
| return this.fake_bluetooth_ptr_;
|
| }
|
| }
|
|
|
| + // FakeLECentralObserverManager allows clients to simulate events that a device
|
| + // in the Central/Observer role would receive as well as monitor the operations
|
| + // performed by the device in the Central/Observer role.
|
| + class FakeLECentralObserverManager {
|
| + constructor(fake_manager_ptr) {
|
| + this.fake_manager_ptr = fake_manager_ptr;
|
| + }
|
| + }
|
| +
|
| navigator.bluetooth.test = new FakeBluetooth();
|
| })();
|
|
|