Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(894)

Side by Side Diff: third_party/WebKit/LayoutTests/bluetooth/notifications.html

Issue 1815483003: bluetooth: Create Mojo equivalent of SetBluetoothMockDataSet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-mojo
Patch Set: MMerge with ToT Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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');
12 let start_promise; 11 let start_promise;
13 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 12 return setBluetoothFakeAdapter('HeartRateAdapter')
13 .then(() => requestDeviceWithKeyDown({
14 filters: [{services: ['heart_rate']}]}))
14 .then(device => device.gatt.connect()) 15 .then(device => device.gatt.connect())
15 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 16 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
16 .then(service => service.getCharacteristic('heart_rate_measurement')) 17 .then(service => service.getCharacteristic('heart_rate_measurement'))
17 .then(characteristic => { 18 .then(characteristic => {
18 start_promise = characteristic.startNotifications(); 19 start_promise = characteristic.startNotifications();
19 // We itentionally don't return the promise so that 'characteristic' goes 20 // We itentionally don't return the promise so that 'characteristic' goes
20 // out of scope while the request is still pending. 21 // out of scope while the request is still pending.
21 }).then(() => runGarbageCollection()) 22 }).then(() => runGarbageCollection())
22 .then(() => start_promise); 23 .then(() => start_promise);
23 }, 'Object gets garbage collected while start request is pending.'); 24 }, 'Object gets garbage collected while start request is pending.');
24 25
25 promise_test(() => { 26 promise_test(() => {
26 testRunner.setBluetoothMockDataSet('HeartRateAdapter');
27 let stop_promise; 27 let stop_promise;
28 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 28 return setBluetoothFakeAdapter('HeartRateAdapter')
29 .then(() => requestDeviceWithKeyDown({
30 filters: [{services: ['heart_rate']}]}))
29 .then(device => device.gatt.connect()) 31 .then(device => device.gatt.connect())
30 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 32 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
31 .then(service => service.getCharacteristic('heart_rate_measurement')) 33 .then(service => service.getCharacteristic('heart_rate_measurement'))
32 .then(characteristic => { 34 .then(characteristic => {
33 return characteristic.startNotifications().then(() => { 35 return characteristic.startNotifications().then(() => {
34 stop_promise = characteristic.stopNotifications(); 36 stop_promise = characteristic.stopNotifications();
35 // We itentionally don't return the promise so that 'characteristic' goes 37 // We itentionally don't return the promise so that 'characteristic' goes
36 // out of scope while the request is still pending. 38 // out of scope while the request is still pending.
37 }); 39 });
38 }).then(() => runGarbageCollection()) 40 }).then(() => runGarbageCollection())
39 .then(() => stop_promise); 41 .then(() => stop_promise);
40 }, 'Object gets garbage collected while stop request is pending.'); 42 }, 'Object gets garbage collected while stop request is pending.');
41 43
42 promise_test(() => { 44 promise_test(() => {
43 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 45 return setBluetoothFakeAdapter('HeartRateAdapter')
44 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 46 .then(() => requestDeviceWithKeyDown({
47 filters: [{services: ['heart_rate']}]}))
45 .then(device => device.gatt.connect()) 48 .then(device => device.gatt.connect())
46 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 49 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
47 .then(service => service.getCharacteristic('heart_rate_measurement')) 50 .then(service => service.getCharacteristic('heart_rate_measurement'))
48 .then(characteristic => { 51 .then(characteristic => {
49 return characteristic.startNotifications() 52 return characteristic.startNotifications()
50 .then(() => characteristic.stopNotifications()); 53 .then(() => characteristic.stopNotifications());
51 }).then(() => runGarbageCollection()); 54 }).then(() => runGarbageCollection());
52 }, 'Single start notifications succeeds.'); 55 }, 'Single start notifications succeeds.');
53 56
54 57
55 promise_test(() => { 58 promise_test(() => {
56 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 59 return setBluetoothFakeAdapter('HeartRateAdapter')
57 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 60 .then(() => requestDeviceWithKeyDown({
61 filters: [{services: ['heart_rate']}]}))
58 .then(device => device.gatt.connect()) 62 .then(device => device.gatt.connect())
59 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 63 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
60 .then(service => service.getCharacteristic('heart_rate_measurement')) 64 .then(service => service.getCharacteristic('heart_rate_measurement'))
61 .then(characteristic => { 65 .then(characteristic => {
62 return characteristic.startNotifications().then(() => { 66 return characteristic.startNotifications().then(() => {
63 return characteristic.startNotifications() 67 return characteristic.startNotifications()
64 .then(() => characteristic.stopNotifications()); 68 .then(() => characteristic.stopNotifications());
65 }); 69 });
66 }).then(() => runGarbageCollection()); 70 }).then(() => runGarbageCollection());
67 }, 'Start notifications after succesfully starting before.'); 71 }, 'Start notifications after succesfully starting before.');
68 72
69 promise_test(() => { 73 promise_test(() => {
70 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 74 return setBluetoothFakeAdapter('HeartRateAdapter')
71 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 75 .then(() => requestDeviceWithKeyDown({
76 filters: [{services: ['heart_rate']}]}))
72 .then(device => device.gatt.connect()) 77 .then(device => device.gatt.connect())
73 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 78 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
74 .then(service => service.getCharacteristic('heart_rate_measurement')) 79 .then(service => service.getCharacteristic('heart_rate_measurement'))
75 .then(characteristic => { 80 .then(characteristic => {
76 return characteristic.startNotifications() 81 return characteristic.startNotifications()
77 .then(() => characteristic.stopNotifications()) 82 .then(() => characteristic.stopNotifications())
78 .then(() => characteristic.startNotifications()) 83 .then(() => characteristic.startNotifications())
79 .then(() => characteristic.stopNotifications()); 84 .then(() => characteristic.stopNotifications());
80 }).then(() => runGarbageCollection()); 85 }).then(() => runGarbageCollection());
81 }, 'Start -> stop -> start -> stop.'); 86 }, 'Start -> stop -> start -> stop.');
82 87
83 promise_test(() => { 88 promise_test(() => {
84 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 89 return setBluetoothFakeAdapter('HeartRateAdapter')
85 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 90 .then(() => requestDeviceWithKeyDown({
91 filters: [{services: ['heart_rate']}]}))
86 .then(device => device.gatt.connect()) 92 .then(device => device.gatt.connect())
87 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 93 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
88 .then(service => service.getCharacteristic('heart_rate_measurement')) 94 .then(service => service.getCharacteristic('heart_rate_measurement'))
89 .then(characteristic => { 95 .then(characteristic => {
90 return Promise.all([characteristic.startNotifications(), 96 return Promise.all([characteristic.startNotifications(),
91 characteristic.startNotifications(), 97 characteristic.startNotifications(),
92 characteristic.startNotifications()]) 98 characteristic.startNotifications()])
93 .then(() => characteristic.stopNotifications()); 99 .then(() => characteristic.stopNotifications());
94 }).then(() => runGarbageCollection()); 100 }).then(() => runGarbageCollection());
95 }, 'Multiple starts in a row.'); 101 }, 'Multiple starts in a row.');
96 102
97 promise_test(() => { 103 promise_test(() => {
98 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 104 return setBluetoothFakeAdapter('HeartRateAdapter')
99 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 105 .then(() => requestDeviceWithKeyDown({
106 filters: [{services: ['heart_rate']}]}))
100 .then(device => device.gatt.connect()) 107 .then(device => device.gatt.connect())
101 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 108 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
102 .then(service => service.getCharacteristic('heart_rate_measurement')) 109 .then(service => service.getCharacteristic('heart_rate_measurement'))
103 .then(characteristic => { 110 .then(characteristic => {
104 return Promise.all([characteristic.startNotifications(), 111 return Promise.all([characteristic.startNotifications(),
105 characteristic.stopNotifications()]); 112 characteristic.stopNotifications()]);
106 }).then(() => runGarbageCollection()); 113 }).then(() => runGarbageCollection());
107 }, "Parallel start and stop."); 114 }, "Parallel start and stop.");
108 115
109 promise_test(() => { 116 promise_test(() => {
110 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 117 return setBluetoothFakeAdapter('HeartRateAdapter')
111 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 118 .then(() => requestDeviceWithKeyDown({
119 filters: [{services: ['heart_rate']}]}))
112 .then(device => device.gatt.connect()) 120 .then(device => device.gatt.connect())
113 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 121 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
114 .then(service => service.getCharacteristic('heart_rate_measurement')) 122 .then(service => service.getCharacteristic('heart_rate_measurement'))
115 .then(characteristic => { 123 .then(characteristic => {
116 return characteristic.startNotifications().then(() => { 124 return characteristic.startNotifications().then(() => {
117 return Promise.all([characteristic.stopNotifications(), 125 return Promise.all([characteristic.stopNotifications(),
118 characteristic.stopNotifications()]); 126 characteristic.stopNotifications()]);
119 }); 127 });
120 }).then(() => runGarbageCollection()); 128 }).then(() => runGarbageCollection());
121 }, "Concurrent stop requests."); 129 }, "Concurrent stop requests.");
122 130
123 promise_test(() => { 131 promise_test(() => {
124 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 132 return setBluetoothFakeAdapter('HeartRateAdapter')
125 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 133 .then(() => requestDeviceWithKeyDown({
134 filters: [{services: ['heart_rate']}]}))
126 .then(device => device.gatt.connect()) 135 .then(device => device.gatt.connect())
127 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 136 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
128 .then(service => service.getCharacteristic('heart_rate_measurement')) 137 .then(service => service.getCharacteristic('heart_rate_measurement'))
129 .then(characteristic => { 138 .then(characteristic => {
130 return characteristic.startNotifications() 139 return characteristic.startNotifications()
131 .then(() => characteristic.stopNotifications()) 140 .then(() => characteristic.stopNotifications())
132 .then(() => characteristic.stopNotifications()); 141 .then(() => characteristic.stopNotifications());
133 }).then(() => runGarbageCollection()); 142 }).then(() => runGarbageCollection());
134 }, "Stopping twice."); 143 }, "Stopping twice.");
135 144
136 promise_test(() => { 145 promise_test(() => {
137 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 146 return setBluetoothFakeAdapter('HeartRateAdapter')
138 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 147 .then(() => requestDeviceWithKeyDown({
148 filters: [{services: ['heart_rate']}]}))
139 .then(device => device.gatt.connect()) 149 .then(device => device.gatt.connect())
140 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 150 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
141 .then(service => service.getCharacteristic('heart_rate_measurement')) 151 .then(service => service.getCharacteristic('heart_rate_measurement'))
142 .then(characteristic => { 152 .then(characteristic => {
143 return characteristic.startNotifications().then(() => { 153 return characteristic.startNotifications().then(() => {
144 return Promise.all([characteristic.stopNotifications(), 154 return Promise.all([characteristic.stopNotifications(),
145 characteristic.startNotifications()]); 155 characteristic.startNotifications()]);
146 }).then(() => characteristic.stopNotifications()); 156 }).then(() => characteristic.stopNotifications());
147 }).then(() => runGarbageCollection()); 157 }).then(() => runGarbageCollection());
148 }, "Start request before stop request resolves"); 158 }, "Start request before stop request resolves");
149 159
150 promise_test(() => { 160 promise_test(() => {
151 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 161 return setBluetoothFakeAdapter('HeartRateAdapter')
152 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 162 .then(() => requestDeviceWithKeyDown({
163 filters: [{services: ['heart_rate']}]}))
153 .then(device => device.gatt.connect()) 164 .then(device => device.gatt.connect())
154 .then(gattServer => gattServer.getPrimaryService('heart_rate')) 165 .then(gattServer => gattServer.getPrimaryService('heart_rate'))
155 .then(service => service.getCharacteristic('heart_rate_measurement')) 166 .then(service => service.getCharacteristic('heart_rate_measurement'))
156 .then(characteristic => characteristic.stopNotifications()) 167 .then(characteristic => characteristic.stopNotifications())
157 .then(() => runGarbageCollection()); 168 .then(() => runGarbageCollection());
158 }, "Stop without starting."); 169 }, "Stop without starting.");
159 170
160 gatt_errors_tests.forEach(testSpec => { 171 gatt_errors_tests.forEach(testSpec => {
161 promise_test(() => { 172 promise_test(() => {
162 testRunner.setBluetoothMockDataSet('FailingGATTOperationsAdapter'); 173 return setBluetoothFakeAdapter('FailingGATTOperationsAdapter')
163 return requestDeviceWithKeyDown({filters: [{services: [errorUUID(0xA0)]}]}) 174 .then(() => requestDeviceWithKeyDown({
175 filters: [{services: [errorUUID(0xA0)]}]}))
164 .then(device => device.gatt.connect()) 176 .then(device => device.gatt.connect())
165 .then(gattServer => gattServer.getPrimaryService(errorUUID(0xA0))) 177 .then(gattServer => gattServer.getPrimaryService(errorUUID(0xA0)))
166 .then(service => service.getCharacteristic(testSpec.uuid)) 178 .then(service => service.getCharacteristic(testSpec.uuid))
167 .then(characteristic => { 179 .then(characteristic => {
168 return assert_promise_rejects_with_message( 180 return assert_promise_rejects_with_message(
169 characteristic.startNotifications(), 181 characteristic.startNotifications(),
170 testSpec.error, 182 testSpec.error,
171 'Trying to write to a characteristic failed.'); 183 'Trying to write to a characteristic failed.');
172 }); 184 });
173 }, testSpec.testName); 185 }, testSpec.testName);
174 }); 186 });
175 </script> 187 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698