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/testharness-helpers.js"></script> | |
4 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
5 <script src="bluetooth-helpers.js"></script> | 4 <script src="bluetooth-helpers.js"></script> |
6 <script> | 5 <script> |
7 test(function(t) { assert_true(window.testRunner instanceof Object); t.done(); }
, | 6 test(function(t) { assert_true(window.testRunner instanceof Object); t.done(); }
, |
8 'window.testRunner is required for the following tests.'); | 7 'window.testRunner is required for the following tests.'); |
9 | 8 |
10 // Generic Access Service. | 9 // Generic Access Service. |
11 var serviceUUID = '00001800-0000-1000-8000-00805f9b34fb'; | 10 var serviceUUID = '00001800-0000-1000-8000-00805f9b34fb'; |
12 // Device Name Characteristic. Belongs to Generic Access. | 11 // Device Name Characteristic. Belongs to Generic Access. |
13 var includedCharacteristicUUID = '00002a00-0000-1000-8000-00805f9b34fb'; | 12 var includedCharacteristicUUID = '00002a00-0000-1000-8000-00805f9b34fb'; |
14 // Reconnection Address. Belongs to Generic Access. | 13 // Reconnection Address. Belongs to Generic Access. |
15 var unreadableCharacteristicUUID = '00002a03-0000-1000-8000-00805f9b34fb'; | 14 var unreadableCharacteristicUUID = '00002a03-0000-1000-8000-00805f9b34fb'; |
16 | 15 |
17 sequential_promise_test(function() { | 16 promise_test(function() { |
18 testRunner.setBluetoothMockDataSet('ConnectableDeviceAdapter'); | 17 testRunner.setBluetoothMockDataSet('ConnectableDeviceAdapter'); |
19 return navigator.bluetooth.requestDevice({ | 18 return navigator.bluetooth.requestDevice({ |
20 filters: [{services: [serviceUUID]}] | 19 filters: [{services: [serviceUUID]}] |
21 }).then(function(device) { | 20 }).then(function(device) { |
22 return device.connectGATT(); | 21 return device.connectGATT(); |
23 }).then(function(gattServer) { | 22 }).then(function(gattServer) { |
24 return gattServer.getPrimaryService(serviceUUID); | 23 return gattServer.getPrimaryService(serviceUUID); |
25 }).then(function(service) { | 24 }).then(function(service) { |
26 return service.getCharacteristic(includedCharacteristicUUID); | 25 return service.getCharacteristic(includedCharacteristicUUID); |
27 }).then(function(characteristic) { | 26 }).then(function(characteristic) { |
28 testRunner.setBluetoothMockDataSet('EmptyAdapter'); | 27 testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
29 return characteristic.readValue().then(function() { | 28 return characteristic.readValue().then(function() { |
30 assert_unreached('Device went out of range, should fail.'); | 29 assert_unreached('Device went out of range, should fail.'); |
31 }, function(e) { | 30 }, function(e) { |
32 assert_equals(e.name, 'NetworkError'); | 31 assert_equals(e.name, 'NetworkError'); |
33 assert_equals(e.message, 'Bluetooth Device is no longer in range.'); | 32 assert_equals(e.message, 'Bluetooth Device is no longer in range.'); |
34 }); | 33 }); |
35 }); | 34 }); |
36 }, 'Device goes out of range. Reject with NetworkError.'); | 35 }, 'Device goes out of range. Reject with NetworkError.'); |
37 | 36 |
38 sequential_promise_test(function() { | 37 promise_test(function() { |
39 testRunner.setBluetoothMockDataSet('ConnectableDeviceAdapter'); | 38 testRunner.setBluetoothMockDataSet('ConnectableDeviceAdapter'); |
40 return navigator.bluetooth.requestDevice({ | 39 return navigator.bluetooth.requestDevice({ |
41 filters: [{services: [serviceUUID]}] | 40 filters: [{services: [serviceUUID]}] |
42 }).then(function(device) { | 41 }).then(function(device) { |
43 return device.connectGATT(); | 42 return device.connectGATT(); |
44 }).then(function(gattServer) { | 43 }).then(function(gattServer) { |
45 return gattServer.getPrimaryService(serviceUUID); | 44 return gattServer.getPrimaryService(serviceUUID); |
46 }).then(function(service) { | 45 }).then(function(service) { |
47 return service.getCharacteristic(unreadableCharacteristicUUID); | 46 return service.getCharacteristic(unreadableCharacteristicUUID); |
48 }).then(function(characteristic) { | 47 }).then(function(characteristic) { |
49 return characteristic.readValue().then(function() { | 48 return characteristic.readValue().then(function() { |
50 assert_unreached('Characteristic is unreadable. Should fail.'); | 49 assert_unreached('Characteristic is unreadable. Should fail.'); |
51 }, function(e) { | 50 }, function(e) { |
52 assert_equals(e.name, 'NotSupportedError'); | 51 assert_equals(e.name, 'NotSupportedError'); |
53 }); | 52 }); |
54 }); | 53 }); |
55 }, 'Characteristic is not readable. Reject with NetworkError.'); | 54 }, 'Characteristic is not readable. Reject with NetworkError.'); |
56 | 55 |
57 // TODO(ortuno): Add a test for when a characterstics gets removed. | 56 // TODO(ortuno): Add a test for when a characterstics gets removed. |
58 // http://crbug.com/499552 | 57 // http://crbug.com/499552 |
59 | 58 |
60 sequential_promise_test(function() { | 59 promise_test(function() { |
61 testRunner.setBluetoothMockDataSet('ConnectableDeviceAdapter'); | 60 testRunner.setBluetoothMockDataSet('ConnectableDeviceAdapter'); |
62 return navigator.bluetooth.requestDevice({ | 61 return navigator.bluetooth.requestDevice({ |
63 filters: [{services: [serviceUUID]}] | 62 filters: [{services: [serviceUUID]}] |
64 }).then(function(device) { | 63 }).then(function(device) { |
65 return device.connectGATT(); | 64 return device.connectGATT(); |
66 }).then(function(gattServer) { | 65 }).then(function(gattServer) { |
67 return gattServer.getPrimaryService(serviceUUID); | 66 return gattServer.getPrimaryService(serviceUUID); |
68 }).then(function(service) { | 67 }).then(function(service) { |
69 return service.getCharacteristic(includedCharacteristicUUID); | 68 return service.getCharacteristic(includedCharacteristicUUID); |
70 }).then(function(characteristic) { | 69 }).then(function(characteristic) { |
71 return characteristic.readValue(); | 70 return characteristic.readValue(); |
72 }).then(function(value) { | 71 }).then(function(value) { |
73 var decoder = new TextDecoder('utf-8'); | 72 var decoder = new TextDecoder('utf-8'); |
74 var value_str = decoder.decode(value); | 73 var value_str = decoder.decode(value); |
75 assert_equals(value_str, 'Empty Mock Device'); | 74 assert_equals(value_str, 'Empty Mock Device'); |
76 }); | 75 }); |
77 }, 'Request for characteristic. Should return right characteristic'); | 76 }, 'Request for characteristic. Should return right characteristic'); |
78 </script> | 77 </script> |
OLD | NEW |