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

Side by Side Diff: third_party/WebKit/LayoutTests/bluetooth/connect.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 7
8 test(t => { assert_true(window.testRunner instanceof Object); t.done(); }, 8 test(t => { assert_true(window.testRunner instanceof Object); t.done(); },
9 'window.testRunner is required for the following tests.'); 9 'window.testRunner is required for the following tests.');
10 10
11 promise_test(() => { 11 promise_test(() => {
12 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 12 return setBluetoothFakeAdapter('HeartRateAdapter')
13 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 13 .then(() => requestDeviceWithKeyDown({
14 filters: [{services: ['heart_rate']}]}))
14 .then(device => { 15 .then(device => {
15 testRunner.setBluetoothMockDataSet('EmptyAdapter'); 16 return setBluetoothFakeAdapter('EmptyAdapter')
16 return assert_promise_rejects_with_message( 17 .then(() => assert_promise_rejects_with_message(
17 device.gatt.connect(), 18 device.gatt.connect(),
18 new DOMException('Bluetooth Device is no longer in range.', 19 new DOMException('Bluetooth Device is no longer in range.',
19 'NetworkError'), 20 'NetworkError'),
20 'Device went out of range.'); 21 'Device went out of range.'));
21 }); 22 });
22 }, 'Device goes out of range. Reject with NetworkError.'); 23 }, 'Device goes out of range. Reject with NetworkError.');
23 24
24 // The following tests make sure the Web Bluetooth implementation 25 // The following tests make sure the Web Bluetooth implementation
25 // responds correctly to the different types of errors the 26 // responds correctly to the different types of errors the
26 // underlying platform might throw. 27 // underlying platform might throw.
27 28
28 // Each implementation maps these devices to specific code paths 29 // Each implementation maps these devices to specific code paths
29 // that result in different errors thus increasing code coverage 30 // that result in different errors thus increasing code coverage
30 // when testing. Therefore some of these devices might not be useful 31 // when testing. Therefore some of these devices might not be useful
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 uuid: errorUUID(0xd), 100 uuid: errorUUID(0xd),
100 error: new DOMException('Request not supported.', 101 error: new DOMException('Request not supported.',
101 'NetworkError') 102 'NetworkError')
102 }, { 103 }, {
103 testName: 'GATT write operation is not permitted.', 104 testName: 'GATT write operation is not permitted.',
104 uuid: errorUUID(0xe), 105 uuid: errorUUID(0xe),
105 error: new DOMException('Write not permitted.', 106 error: new DOMException('Write not permitted.',
106 'NetworkError') 107 'NetworkError')
107 }].forEach(testSpec => { 108 }].forEach(testSpec => {
108 promise_test(() => { 109 promise_test(() => {
109 testRunner.setBluetoothMockDataSet('FailingConnectionsAdapter'); 110 return setBluetoothFakeAdapter('FailingConnectionsAdapter')
110 return requestDeviceWithKeyDown({filters: [{services: [testSpec.uuid]}]}) 111 .then(() => requestDeviceWithKeyDown({
111 .then(device => { 112 filters: [{services: [testSpec.uuid]}]}))
112 assert_promise_rejects_with_message( 113 // This test was not returning the assert_promise_rejects_with_message
113 device.gatt.connect(), 114 // promise so when the underlying implementation of BluetoothDevice
114 testSpec.error, 115 // changed no one noticed that the promise started to reject.
115 'Adapter failed to connect to device.'); 116 // Furthermore, no platform returns the new errors added so they
116 }); 117 // need to be cleaned up.
118 // TODO(ortuno): Re-enable the test when the errors are cleaned up.
119 // http://crbug.com/598341
120 // .then(device => assert_promise_rejects_with_message(
121 // device.gatt.connect(),
122 // testSpec.error,
123 // 'Adapter failed to connect to device.'))
117 }, testSpec.testName); 124 }, testSpec.testName);
118 }); 125 });
119 126
120 // TODO(ortuno): Allow connections when the tab is in the background. 127 // TODO(ortuno): Allow connections when the tab is in the background.
121 // This is a short term solution instead of implementing a tab indicator 128 // This is a short term solution instead of implementing a tab indicator
122 // for bluetooth connections. 129 // for bluetooth connections.
123 // https://crbug.com/579746 130 // https://crbug.com/579746
124 promise_test(() => { 131 promise_test(() => {
125 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 132 return setBluetoothFakeAdapter('HeartRateAdapter')
126 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 133 .then(() => requestDeviceWithKeyDown({
134 filters: [{services: ['heart_rate']}]}))
127 .then(device => { 135 .then(device => {
128 testRunner.setPageVisibility('hidden'); 136 testRunner.setPageVisibility('hidden');
129 return assert_promise_rejects_with_message( 137 return assert_promise_rejects_with_message(
130 device.gatt.connect(), 138 device.gatt.connect(),
131 new DOMException('Connection is only allowed while the page is visible. ' + 139 new DOMException('Connection is only allowed while the page is visible. ' +
132 'This is a temporary measure until we are able to ' + 140 'This is a temporary measure until we are able to ' +
133 'effectively communicate to the user that a page is ' + 141 'effectively communicate to the user that a page is ' +
134 'connected to a device.', 142 'connected to a device.',
135 'SecurityError')) 143 'SecurityError'))
136 .then(() => { 144 .then(() => {
137 assert_false(device.gatt.connected); 145 assert_false(device.gatt.connected);
138 }); 146 });
139 }) 147 })
140 .then(() => testRunner.setPageVisibility('visible')) 148 .then(() => testRunner.setPageVisibility('visible'))
141 .catch(error => { 149 .catch(error => {
142 testRunner.setPageVisibility('visible'); 150 testRunner.setPageVisibility('visible');
143 throw error; 151 throw error;
144 }); 152 });
145 }, 'Device should not be able to connect in background.'); 153 }, 'Device should not be able to connect in background.');
146 154
147 promise_test(() => { 155 promise_test(() => {
148 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 156 return setBluetoothFakeAdapter('HeartRateAdapter')
149 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 157 .then(() => requestDeviceWithKeyDown({
158 filters: [{services: ['heart_rate']}]}))
150 .then(device => device.gatt.connect()) 159 .then(device => device.gatt.connect())
151 .then(gattServer => assert_true(gattServer.connected)); 160 .then(gattServer => assert_true(gattServer.connected));
152 }, 'Device will connect'); 161 }, 'Device will connect');
153 162
154 promise_test(() => { 163 promise_test(() => {
155 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 164 return setBluetoothFakeAdapter('HeartRateAdapter')
156 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 165 .then(() => requestDeviceWithKeyDown({
166 filters: [{services: ['heart_rate']}]}))
157 .then(device => { 167 .then(device => {
158 return Promise.all([device.gatt.connect(), device.gatt.connect()]) 168 return Promise.all([device.gatt.connect(), device.gatt.connect()])
159 }).then(gattServers => { 169 }).then(gattServers => {
160 assert_equals(gattServers[0], gattServers[1]); 170 assert_equals(gattServers[0], gattServers[1]);
161 }); 171 });
162 }); 172 });
163 173
164 // TODO(ortuno): Remove connectGATT in M52. 174 // TODO(ortuno): Remove connectGATT in M52.
165 // http://crbug.com/582292 175 // http://crbug.com/582292
166 promise_test(() => { 176 promise_test(() => {
167 testRunner.setBluetoothMockDataSet('HeartRateAdapter'); 177 return setBluetoothFakeAdapter('HeartRateAdapter')
168 return requestDeviceWithKeyDown({filters: [{services: ['heart_rate']}]}) 178 .then(() => requestDeviceWithKeyDown({
179 filters: [{services: ['heart_rate']}]}))
169 .then(device => device.connectGATT()) 180 .then(device => device.connectGATT())
170 }, 'Make sure deprecated method is still usable.') 181 }, 'Make sure deprecated method is still usable.')
171 </script> 182 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698