| OLD | NEW |
| 1 'use strict'; | 1 'use strict'; |
| 2 | 2 |
| 3 // Sometimes we need to test that using either the name, alias, or UUID | 3 // Sometimes we need to test that using either the name, alias, or UUID |
| 4 // produces the same result. The following objects help us do that. | 4 // produces the same result. The following objects help us do that. |
| 5 var generic_access = { | 5 var generic_access = { |
| 6 alias: 0x1800, | 6 alias: 0x1800, |
| 7 name: 'generic_access', | 7 name: 'generic_access', |
| 8 uuid: '00001800-0000-1000-8000-00805f9b34fb' | 8 uuid: '00001800-0000-1000-8000-00805f9b34fb' |
| 9 }; | 9 }; |
| 10 var device_name = { | 10 var device_name = { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 eventSender.keyDown(' ', []); | 50 eventSender.keyDown(' ', []); |
| 51 }); | 51 }); |
| 52 } | 52 } |
| 53 | 53 |
| 54 // Calls requestDevice() in a context that's 'allowed to show a popup'. | 54 // Calls requestDevice() in a context that's 'allowed to show a popup'. |
| 55 function requestDeviceWithKeyDown() { | 55 function requestDeviceWithKeyDown() { |
| 56 let args = arguments; | 56 let args = arguments; |
| 57 return callWithKeyDown(() => navigator.bluetooth.requestDevice.apply(navigator
.bluetooth, args)); | 57 return callWithKeyDown(() => navigator.bluetooth.requestDevice.apply(navigator
.bluetooth, args)); |
| 58 } | 58 } |
| 59 | 59 |
| 60 // Calls testRunner.getBluetoothManualChooserEvents() until it's returned |
| 61 // |expected_count| events. Or just once if |expected_count| is undefined. |
| 62 function getBluetoothManualChooserEvents(expected_count) { |
| 63 if (expected_count === undefined) { |
| 64 expected_count = 0; |
| 65 } |
| 66 return new Promise((resolve, reject) => { |
| 67 let events = []; |
| 68 let accumulate_events = new_events => { |
| 69 events.push(...new_events); |
| 70 if (events.length >= expected_count) { |
| 71 resolve(events); |
| 72 } else { |
| 73 testRunner.getBluetoothManualChooserEvents(accumulate_events); |
| 74 } |
| 75 }; |
| 76 testRunner.getBluetoothManualChooserEvents(accumulate_events); |
| 77 }); |
| 78 } |
| 79 |
| 60 // errorUUID(alias) returns a UUID with the top 32 bits of | 80 // errorUUID(alias) returns a UUID with the top 32 bits of |
| 61 // '00000000-97e5-4cd7-b9f1-f5a427670c59' replaced with the bits of |alias|. | 81 // '00000000-97e5-4cd7-b9f1-f5a427670c59' replaced with the bits of |alias|. |
| 62 // For example, errorUUID(0xDEADBEEF) returns | 82 // For example, errorUUID(0xDEADBEEF) returns |
| 63 // 'deadbeef-97e5-4cd7-b9f1-f5a427670c59'. The bottom 96 bits of error UUIDs | 83 // 'deadbeef-97e5-4cd7-b9f1-f5a427670c59'. The bottom 96 bits of error UUIDs |
| 64 // were generated as a type 4 (random) UUID. | 84 // were generated as a type 4 (random) UUID. |
| 65 function errorUUID(uuidAlias) { | 85 function errorUUID(uuidAlias) { |
| 66 // Make the number positive. | 86 // Make the number positive. |
| 67 uuidAlias >>>= 0; | 87 uuidAlias >>>= 0; |
| 68 // Append the alias as a hex number. | 88 // Append the alias as a hex number. |
| 69 var strAlias = '0000000' + uuidAlias.toString(16); | 89 var strAlias = '0000000' + uuidAlias.toString(16); |
| 70 // Get last 8 digits of strAlias. | 90 // Get last 8 digits of strAlias. |
| 71 strAlias = strAlias.substr(-8); | 91 strAlias = strAlias.substr(-8); |
| 72 // Append Base Error UUID | 92 // Append Base Error UUID |
| 73 return strAlias + '-97e5-4cd7-b9f1-f5a427670c59'; | 93 return strAlias + '-97e5-4cd7-b9f1-f5a427670c59'; |
| 74 } | 94 } |
| 75 | 95 |
| 76 // Function to test that a promise rejects with the expected error type and | 96 // Function to test that a promise rejects with the expected error type and |
| 77 // message. | 97 // message. |
| 78 function assert_promise_rejects_with_message(promise, expected, description) { | 98 function assert_promise_rejects_with_message(promise, expected, description) { |
| 79 return promise.then(() => { | 99 return promise.then(() => { |
| 80 assert_unreached('Promise should have rejected: ' + description); | 100 assert_unreached('Promise should have rejected: ' + description); |
| 81 }, error => { | 101 }, error => { |
| 82 assert_equals(error.name, expected.name, 'Unexpected Error Name:'); | 102 assert_equals(error.name, expected.name, 'Unexpected Error Name:'); |
| 83 if (expected.message) { | 103 if (expected.message) { |
| 84 assert_equals(error.message, expected.message, 'Unexpected Error Message:'
); | 104 assert_equals(error.message, expected.message, 'Unexpected Error Message:'
); |
| 85 } | 105 } |
| 86 }); | 106 }); |
| 87 } | 107 } |
| 108 |
| 109 // Parses add-device(name)=id lines in |
| 110 // testRunner.getBluetoothManualChooserEvents() output, and exposes the name->id |
| 111 // mapping. |
| 112 class AddDeviceEventSet { |
| 113 constructor() { |
| 114 this._idsByName = new Map(); |
| 115 this._addDeviceRegex = /^add-device\(([^)]+)\)=(.+)$/; |
| 116 } |
| 117 assert_add_device_event(event, description) { |
| 118 let match = this._addDeviceRegex.exec(event); |
| 119 assert_true(!!match, event + "isn't an add-device event: " + description); |
| 120 this._idsByName.set(match[1], match[2]); |
| 121 } |
| 122 has(name) { |
| 123 return this._idsByName.has(name); |
| 124 } |
| 125 get(name) { |
| 126 return this._idsByName.get(name); |
| 127 } |
| 128 } |
| OLD | NEW |