The following layout test fails when moving it over to the new framework:
https://cs.chromium.org/chromium/src/third_party/WebKit/LayoutTests/bluetooth/characteristic/notifications/concurrent-starts.html?type=cs&q=concurrent-starts.h&sq=package:chromium&l=1
'use strict';
promise_test(() => {
return setBluetoothFakeAdapter('HeartRateAdapter')
.then(() => requestDeviceWithKeyDown({
filters: [{services: ['heart_rate']}]}))
.then(device => device.gatt.connect())
.then(gattServer => gattServer.getPrimaryService('heart_rate'))
.then(service => service.getCharacteristic('heart_rate_measurement'))
.then(characteristic => Promise.all([
characteristic.startNotifications(),
characteristic.startNotifications(),
characteristic.startNotifications()]));
// TODO(ortuno): Assert that notifications are active.
// http://crbug.com/600762
}, 'Multiple starts in a row.');
It seems that after the startNotifications calls the end state is "Not subscribed". Probably a problem with how we do queuing in the underlying layer, currently writing a device_unittest to check.
Comment 1 by ortuno@chromium.org
, Jun 23 2017