| // META: script=/resources/testdriver.js |
| // META: script=/resources/testdriver-vendor.js |
| // META: script=/bluetooth/resources/bluetooth-test.js |
| // META: script=/bluetooth/resources/bluetooth-fake-devices.js |
| 'use strict'; |
| const test_desc = 'AbortController on subsequent watchAdvertisements() call ' + |
| 'cancels the watch advertisements operation.'; |
| |
| bluetooth_test(async (t) => { |
| let {device} = await getDiscoveredHealthThermometerDevice(); |
| const watcher = new EventWatcher(t, device, ['advertisementreceived']); |
| |
| // Start a watchAdvertisements() operation. |
| await device.watchAdvertisements(); |
| assert_true(device.watchingAdvertisements); |
| |
| // Start a second watchAdvertisements() operation after the first one |
| // resolves. This operation should resolve successfully. |
| let abortController = new AbortController(); |
| await device.watchAdvertisements({signal: abortController.signal}); |
| abortController.abort(); |
| assert_false(device.watchingAdvertisements); |
| |
| // This advertisement packet should not cause the event to be fired. |
| await fake_central.simulateAdvertisementReceived(heart_rate_ad_packet); |
| }, test_desc); |