| 'use strict'; |
| const test_desc = 'Calls on services after we disconnect and connect again. '+ |
| 'Should reject with InvalidStateError.'; |
| let device, services; |
| |
| bluetooth_test(() => getHealthThermometerDevice({ |
| filters: [{services: ['health_thermometer']}] |
| }) |
| .then(_ => ({device} = _)) |
| .then(() => device.gatt.CALLS([ |
| getPrimaryService('health_thermometer')| |
| getPrimaryServices()| |
| getPrimaryServices('health_thermometer')[UUID]])) |
| // Convert to array if necessary. |
| .then(s => services = [].concat(s)) |
| .then(() => device.gatt.disconnect()) |
| .then(() => device.gatt.connect()) |
| .then(() => { |
| let promises = Promise.resolve(); |
| for (let service of services) { |
| let error = new DOMException( |
| `Service with UUID ${service.uuid} is no longer valid. Remember ` + |
| `to retrieve the service again after reconnecting.`, |
| 'InvalidStateError'); |
| promises = promises.then(() => |
| assert_promise_rejects_with_message( |
| service.getCharacteristic('measurement_interval'), |
| error)); |
| promises = promises.then(() => |
| assert_promise_rejects_with_message( |
| service.getCharacteristics(), |
| error)); |
| promises = promises.then(() => |
| assert_promise_rejects_with_message( |
| service.getCharacteristics('measurement_interval'), |
| error)); |
| } |
| return promises; |
| }), test_desc); |