| OLD | NEW | 
|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> | 
| 2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> | 
| 3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> | 
| 4 <script src="resources/bluetooth-helpers.js"></script> | 4 <script src="resources/bluetooth-helpers.js"></script> | 
| 5 <script> | 5 <script> | 
| 6 'use strict'; | 6 'use strict'; | 
| 7 test(t => { assert_true(window.testRunner instanceof Object); t.done(); }, | 7 test(t => { assert_true(window.testRunner instanceof Object); t.done(); }, | 
| 8      'window.testRunner is required for the following tests.'); | 8      'window.testRunner is required for the following tests.'); | 
| 9 | 9 | 
| 10 promise_test(() => { | 10 promise_test(() => { | 
| 11   testRunner.setBluetoothMockDataSet('HeartRateAdapter'); | 11   return setBluetoothFakeAdapter('HeartRateAdapter') | 
| 12   return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) | 12     .then(() => requestDeviceWithKeyDown({ | 
|  | 13       filters: [{services: ['heart_rate']}]})) | 
| 13     .then(device => device.gatt.connect()) | 14     .then(device => device.gatt.connect()) | 
| 14     .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 15     .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 
| 15     .then(service => service.getCharacteristic('body_sensor_location')) | 16     .then(service => service.getCharacteristic('body_sensor_location')) | 
| 16     .then(characteristic => { | 17     .then(characteristic => { | 
| 17       return assert_event_fires_after_promise(characteristic, | 18       return assert_event_fires_after_promise(characteristic, | 
| 18                                               'readValue', | 19                                               'readValue', | 
| 19                                               'characteristicvaluechanged'); | 20                                               'characteristicvaluechanged'); | 
| 20     }).then(results => { | 21     }).then(results => { | 
| 21       let read_value = results[0].buffer; | 22       let read_value = results[0].buffer; | 
| 22       let event_value = results[1].buffer; | 23       let event_value = results[1].buffer; | 
| 23       // TODO(ortuno): The DataView used to resolve the promise | 24       // TODO(ortuno): The DataView used to resolve the promise | 
| 24       // should be the same DataView as the one saved in the | 25       // should be the same DataView as the one saved in the | 
| 25       // characteristic. | 26       // characteristic. | 
| 26       // http://crbug.com/543347 | 27       // http://crbug.com/543347 | 
| 27       // assert_equals(event.target.value, value); | 28       // assert_equals(event.target.value, value); | 
| 28       assert_array_equals(event_value, read_value); | 29       assert_array_equals(event_value, read_value); | 
| 29     }); | 30     }); | 
| 30 }, 'Reading a characteristic should fire an event.'); | 31 }, 'Reading a characteristic should fire an event.'); | 
| 31 | 32 | 
| 32 promise_test(() => { | 33 promise_test(() => { | 
| 33   testRunner.setBluetoothMockDataSet('HeartRateAdapter'); | 34   return setBluetoothFakeAdapter('HeartRateAdapter') | 
| 34   return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) | 35     .then(() => requestDeviceWithKeyDown({ | 
|  | 36       filters: [{services: ['heart_rate']}]})) | 
| 35     .then(device => device.gatt.connect()) | 37     .then(device => device.gatt.connect()) | 
| 36     .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 38     .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 
| 37     .then(service => service.getCharacteristic('body_sensor_location')) | 39     .then(service => service.getCharacteristic('body_sensor_location')) | 
| 38     .then(characteristic => { | 40     .then(characteristic => { | 
| 39       return assert_event_fires_after_promise(characteristic, | 41       return assert_event_fires_after_promise(characteristic, | 
| 40                                               'readValue', | 42                                               'readValue', | 
| 41                                               'characteristicvaluechanged', | 43                                               'characteristicvaluechanged', | 
| 42                                               3 /* attach 3 listeners */); | 44                                               3 /* attach 3 listeners */); | 
| 43     }).then(results => { | 45     }).then(results => { | 
| 44       let read_value = results[0].buffer; | 46       let read_value = results[0].buffer; | 
| 45       let event_values = results.slice(1).map(v => v.buffer); | 47       let event_values = results.slice(1).map(v => v.buffer); | 
| 46       for (let event_value of event_values) { | 48       for (let event_value of event_values) { | 
| 47         // TODO(ortuno): The DataView used to resolve the promise | 49         // TODO(ortuno): The DataView used to resolve the promise | 
| 48         // should be the same DataView as the one saved in the | 50         // should be the same DataView as the one saved in the | 
| 49         // characteristic. | 51         // characteristic. | 
| 50         // http://crbug.com/543347 | 52         // http://crbug.com/543347 | 
| 51         // assert_equals(event.target.value, value); | 53         // assert_equals(event.target.value, value); | 
| 52         assert_array_equals(event_value, read_value); | 54         assert_array_equals(event_value, read_value); | 
| 53       } | 55       } | 
| 54     }); | 56     }); | 
| 55 }, 'Add multiple event listeners then readValue().'); | 57 }, 'Add multiple event listeners then readValue().'); | 
| 56 | 58 | 
| 57 promise_test(() => { | 59 promise_test(() => { | 
| 58   testRunner.setBluetoothMockDataSet('HeartRateAdapter'); |  | 
| 59   let char; | 60   let char; | 
| 60   return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) | 61   return setBluetoothFakeAdapter('HeartRateAdapter') | 
| 61    .then(device => device.gatt.connect()) | 62     .then(() => requestDeviceWithKeyDown({ | 
| 62    .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 63       filters: [{services: ['heart_rate']}]})) | 
| 63    .then(service => service.getCharacteristic('heart_rate_measurement')) | 64     .then(device => device.gatt.connect()) | 
| 64    .then(characteristic => { | 65     .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 
| 65      char = characteristic; | 66     .then(service => service.getCharacteristic('heart_rate_measurement')) | 
| 66      return assert_event_fires_after_promise(characteristic, | 67     .then(characteristic => { | 
| 67                                              'startNotifications', | 68       char = characteristic; | 
| 68                                              'characteristicvaluechanged'); | 69       return assert_event_fires_after_promise(characteristic, | 
| 69    }).then(() => char.stopNotifications()) | 70                                               'startNotifications', | 
| 70    .then(() => assert_no_events(char, 'characteristicvaluechanged')); | 71                                               'characteristicvaluechanged'); | 
|  | 72     }) | 
|  | 73     .then(() => char.stopNotifications()) | 
|  | 74     .then(() => assert_no_events(char, 'characteristicvaluechanged')); | 
| 71 }, 'Starting notifications should fire an event.'); | 75 }, 'Starting notifications should fire an event.'); | 
| 72 | 76 | 
| 73 promise_test(() => { | 77 promise_test(() => { | 
| 74   testRunner.setBluetoothMockDataSet('HeartRateAdapter'); |  | 
| 75   let char; | 78   let char; | 
| 76   return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) | 79   return setBluetoothFakeAdapter('HeartRateAdapter') | 
| 77    .then(device => device.gatt.connect()) | 80     .then(() => requestDeviceWithKeyDown({ | 
| 78    .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 81       filters: [{services: ['heart_rate']}]})) | 
| 79    .then(service => service.getCharacteristic('heart_rate_measurement')) | 82     .then(device => device.gatt.connect()) | 
| 80    .then(characteristic => { | 83     .then(gattServer => gattServer.getPrimaryService('heart_rate')) | 
| 81      char = characteristic; | 84     .then(service => service.getCharacteristic('heart_rate_measurement')) | 
| 82      return assert_event_fires_after_promise(characteristic, | 85     .then(characteristic => { | 
| 83                                              'startNotifications', | 86       char = characteristic; | 
| 84                                              'characteristicvaluechanged', | 87       return assert_event_fires_after_promise(characteristic, | 
| 85                                              3 /* add 3 listeners */); | 88                                               'startNotifications', | 
| 86    }).then(() => char.stopNotifications()) | 89                                               'characteristicvaluechanged', | 
| 87    .then(() => assert_no_events(char, 'characteristicvaluechanged')); | 90                                               3 /* add 3 listeners */); | 
|  | 91     }) | 
|  | 92     .then(() => char.stopNotifications()) | 
|  | 93     .then(() => assert_no_events(char, 'characteristicvaluechanged')); | 
| 88 }, 'Add multiple event listeners then startNotifications().'); | 94 }, 'Add multiple event listeners then startNotifications().'); | 
| 89 </script> | 95 </script> | 
| OLD | NEW | 
|---|