| OLD | NEW |
| 1 'use strict'; | 1 'use strict'; |
| 2 | 2 |
| 3 // TODO(reillyg): Remove when jyasskin upstreams this to testharness.js: | 3 // TODO(reillyg): Remove when jyasskin upstreams this to testharness.js: |
| 4 // https://crbug.com/509058. | 4 // https://crbug.com/509058. |
| 5 function callWithKeyDown(functionCalledOnKeyPress) { | 5 function callWithKeyDown(functionCalledOnKeyPress) { |
| 6 return new Promise(resolve => { | 6 return new Promise(resolve => { |
| 7 function onKeyPress() { | 7 function onKeyPress() { |
| 8 document.removeEventListener('keypress', onKeyPress, false); | 8 document.removeEventListener('keypress', onKeyPress, false); |
| 9 resolve(functionCalledOnKeyPress()); | 9 resolve(functionCalledOnKeyPress()); |
| 10 } | 10 } |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 if (selected_configuration !== undefined) { | 153 if (selected_configuration !== undefined) { |
| 154 this.currentConfiguration_ = selected_configuration; | 154 this.currentConfiguration_ = selected_configuration; |
| 155 return Promise.resolve({ success: true }); | 155 return Promise.resolve({ success: true }); |
| 156 } else { | 156 } else { |
| 157 return Promise.resolve({ success: false }); | 157 return Promise.resolve({ success: false }); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 claimInterface(interfaceNumber) { | 161 claimInterface(interfaceNumber) { |
| 162 assert_true(this.opened_); | 162 assert_true(this.opened_); |
| 163 | 163 assert_true(this.currentConfiguration_ !== undefined, |
| 164 if (this.currentConfiguration_ === undefined) | 164 'device configured'); |
| 165 return Promise.resolve({ success: false }); | |
| 166 | 165 |
| 167 if (this.claimedInterfaces_.has(interfaceNumber)) | 166 if (this.claimedInterfaces_.has(interfaceNumber)) |
| 168 return Promise.resolve({ success: false }); | 167 return Promise.resolve({ success: false }); |
| 169 | 168 |
| 170 if (this.currentConfiguration_.interfaces.some( | 169 if (this.currentConfiguration_.interfaces.some( |
| 171 iface => iface.interface_number == interfaceNumber)) { | 170 iface => iface.interface_number == interfaceNumber)) { |
| 172 this.claimedInterfaces_.set(interfaceNumber, 0); | 171 this.claimedInterfaces_.set(interfaceNumber, 0); |
| 173 return Promise.resolve({ success: true }); | 172 return Promise.resolve({ success: true }); |
| 174 } else { | 173 } else { |
| 175 return Promise.resolve({ success: false }); | 174 return Promise.resolve({ success: false }); |
| 176 } | 175 } |
| 177 } | 176 } |
| 178 | 177 |
| 179 releaseInterface(interfaceNumber) { | 178 releaseInterface(interfaceNumber) { |
| 180 assert_true(this.opened_); | 179 assert_true(this.opened_); |
| 181 | 180 assert_true(this.currentConfiguration_ !== undefined, |
| 182 if (this.currentConfiguration_ === undefined) | 181 'device configured'); |
| 183 return Promise.resolve({ success: false }); | |
| 184 | 182 |
| 185 if (this.claimedInterfaces_.has(interfaceNumber)) { | 183 if (this.claimedInterfaces_.has(interfaceNumber)) { |
| 186 this.claimedInterfaces_.delete(interfaceNumber); | 184 this.claimedInterfaces_.delete(interfaceNumber); |
| 187 return Promise.resolve({ success: true }); | 185 return Promise.resolve({ success: true }); |
| 188 } else { | 186 } else { |
| 189 return Promise.resolve({ success: false }); | 187 return Promise.resolve({ success: false }); |
| 190 } | 188 } |
| 191 } | 189 } |
| 192 | 190 |
| 193 setInterfaceAlternateSetting(interfaceNumber, alternateSetting) { | 191 setInterfaceAlternateSetting(interfaceNumber, alternateSetting) { |
| 194 assert_true(this.opened_); | 192 assert_true(this.opened_); |
| 195 | 193 assert_true(this.currentConfiguration_ !== undefined, |
| 196 if (this.currentConfiguration_ === undefined) | 194 'device configured'); |
| 197 return Promise.resolve({ success: false }); | |
| 198 | 195 |
| 199 if (!this.claimedInterfaces_.has(interfaceNumber)) | 196 if (!this.claimedInterfaces_.has(interfaceNumber)) |
| 200 return Promise.resolve({ success: false }); | 197 return Promise.resolve({ success: false }); |
| 201 | 198 |
| 202 let iface = this.currentConfiguration_.interfaces.find( | 199 let iface = this.currentConfiguration_.interfaces.find( |
| 203 iface => iface.interface_number == interfaceNumber); | 200 iface => iface.interface_number == interfaceNumber); |
| 204 if (iface === undefined) | 201 if (iface === undefined) |
| 205 return Promise.resolve({ success: false }); | 202 return Promise.resolve({ success: false }); |
| 206 | 203 |
| 207 if (iface.alternates.some( | 204 if (iface.alternates.some( |
| 208 x => x.alternate_setting == alternateSetting)) { | 205 x => x.alternate_setting == alternateSetting)) { |
| 209 this.claimedInterfaces_.set(interfaceNumber, alternateSetting); | 206 this.claimedInterfaces_.set(interfaceNumber, alternateSetting); |
| 210 return Promise.resolve({ success: true }); | 207 return Promise.resolve({ success: true }); |
| 211 } else { | 208 } else { |
| 212 return Promise.resolve({ success: false }); | 209 return Promise.resolve({ success: false }); |
| 213 } | 210 } |
| 214 } | 211 } |
| 215 | 212 |
| 216 reset() { | 213 reset() { |
| 217 assert_true(this.opened_); | 214 assert_true(this.opened_); |
| 218 return Promise.resolve({ success: true }); | 215 return Promise.resolve({ success: true }); |
| 219 } | 216 } |
| 220 | 217 |
| 221 clearHalt(endpoint) { | 218 clearHalt(endpoint) { |
| 222 assert_true(this.opened_); | 219 assert_true(this.opened_); |
| 220 assert_true(this.currentConfiguration_ !== undefined, |
| 221 'device configured'); |
| 223 // TODO(reillyg): Check that endpoint is valid. | 222 // TODO(reillyg): Check that endpoint is valid. |
| 224 return Promise.resolve({ success: true }); | 223 return Promise.resolve({ success: true }); |
| 225 } | 224 } |
| 226 | 225 |
| 227 controlTransferIn(params, length, timeout) { | 226 controlTransferIn(params, length, timeout) { |
| 228 assert_true(this.opened_); | 227 assert_true(this.opened_); |
| 228 assert_true(this.currentConfiguration_ !== undefined, |
| 229 'device configured'); |
| 229 return Promise.resolve({ | 230 return Promise.resolve({ |
| 230 status: device.TransferStatus.OK, | 231 status: device.TransferStatus.OK, |
| 231 data: [length >> 8, length & 0xff, params.request, params.value >> 8, | 232 data: [length >> 8, length & 0xff, params.request, params.value >> 8, |
| 232 params.value & 0xff, params.index >> 8, params.index & 0xff] | 233 params.value & 0xff, params.index >> 8, params.index & 0xff] |
| 233 }); | 234 }); |
| 234 } | 235 } |
| 235 | 236 |
| 236 controlTransferOut(params, data, timeout) { | 237 controlTransferOut(params, data, timeout) { |
| 237 assert_true(this.opened_); | 238 assert_true(this.opened_); |
| 239 assert_true(this.currentConfiguration_ !== undefined, |
| 240 'device configured'); |
| 238 return Promise.resolve({ | 241 return Promise.resolve({ |
| 239 status: device.TransferStatus.OK, | 242 status: device.TransferStatus.OK, |
| 240 bytesWritten: data.byteLength | 243 bytesWritten: data.byteLength |
| 241 }); | 244 }); |
| 242 } | 245 } |
| 243 | 246 |
| 244 genericTransferIn(endpointNumber, length, timeout) { | 247 genericTransferIn(endpointNumber, length, timeout) { |
| 245 assert_true(this.opened_); | 248 assert_true(this.opened_); |
| 249 assert_true(this.currentConfiguration_ !== undefined, |
| 250 'device configured'); |
| 246 // TODO(reillyg): Check that endpoint is valid. | 251 // TODO(reillyg): Check that endpoint is valid. |
| 247 let data = new Array(length); | 252 let data = new Array(length); |
| 248 for (let i = 0; i < length; ++i) | 253 for (let i = 0; i < length; ++i) |
| 249 data[i] = i & 0xff; | 254 data[i] = i & 0xff; |
| 250 return Promise.resolve({ | 255 return Promise.resolve({ |
| 251 status: device.TransferStatus.OK, | 256 status: device.TransferStatus.OK, |
| 252 data: data | 257 data: data |
| 253 }); | 258 }); |
| 254 } | 259 } |
| 255 | 260 |
| 256 genericTransferOut(endpointNumber, data, timeout) { | 261 genericTransferOut(endpointNumber, data, timeout) { |
| 257 assert_true(this.opened_); | 262 assert_true(this.opened_); |
| 263 assert_true(this.currentConfiguration_ !== undefined, |
| 264 'device configured'); |
| 258 // TODO(reillyg): Check that endpoint is valid. | 265 // TODO(reillyg): Check that endpoint is valid. |
| 259 return Promise.resolve({ | 266 return Promise.resolve({ |
| 260 status: device.TransferStatus.OK, | 267 status: device.TransferStatus.OK, |
| 261 bytesWritten: data.byteLength | 268 bytesWritten: data.byteLength |
| 262 }); | 269 }); |
| 263 } | 270 } |
| 264 | 271 |
| 265 isochronousTransferIn(endpointNumber, packetLengths, timeout) { | 272 isochronousTransferIn(endpointNumber, packetLengths, timeout) { |
| 266 assert_true(this.opened_); | 273 assert_true(this.opened_); |
| 274 assert_true(this.currentConfiguration_ !== undefined, |
| 275 'device configured'); |
| 267 // TODO(reillyg): Check that endpoint is valid. | 276 // TODO(reillyg): Check that endpoint is valid. |
| 268 let data = new Array(packetLengths.reduce((a, b) => a + b, 0)); | 277 let data = new Array(packetLengths.reduce((a, b) => a + b, 0)); |
| 269 let dataOffset = 0; | 278 let dataOffset = 0; |
| 270 let packets = new Array(packetLengths.length); | 279 let packets = new Array(packetLengths.length); |
| 271 for (let i = 0; i < packetLengths.length; ++i) { | 280 for (let i = 0; i < packetLengths.length; ++i) { |
| 272 for (let j = 0; j < packetLengths[i]; ++j) | 281 for (let j = 0; j < packetLengths[i]; ++j) |
| 273 data[dataOffset++] = j & 0xff; | 282 data[dataOffset++] = j & 0xff; |
| 274 packets[i] = { | 283 packets[i] = { |
| 275 length: packetLengths[i], | 284 length: packetLengths[i], |
| 276 transferred_length: packetLengths[i], | 285 transferred_length: packetLengths[i], |
| 277 status: device.TransferStatus.OK | 286 status: device.TransferStatus.OK |
| 278 }; | 287 }; |
| 279 } | 288 } |
| 280 return Promise.resolve({ data: data, packets: packets }); | 289 return Promise.resolve({ data: data, packets: packets }); |
| 281 } | 290 } |
| 282 | 291 |
| 283 isochronousTransferOut(endpointNumber, data, packetLengths, timeout) { | 292 isochronousTransferOut(endpointNumber, data, packetLengths, timeout) { |
| 284 assert_true(this.opened_); | 293 assert_true(this.opened_); |
| 294 assert_true(this.currentConfiguration_ !== undefined, |
| 295 'device configured'); |
| 285 // TODO(reillyg): Check that endpoint is valid. | 296 // TODO(reillyg): Check that endpoint is valid. |
| 286 let packets = new Array(packetLengths.length); | 297 let packets = new Array(packetLengths.length); |
| 287 for (let i = 0; i < packetLengths.length; ++i) { | 298 for (let i = 0; i < packetLengths.length; ++i) { |
| 288 packets[i] = { | 299 packets[i] = { |
| 289 length: packetLengths[i], | 300 length: packetLengths[i], |
| 290 transferred_length: packetLengths[i], | 301 transferred_length: packetLengths[i], |
| 291 status: device.TransferStatus.OK | 302 status: device.TransferStatus.OK |
| 292 }; | 303 }; |
| 293 } | 304 } |
| 294 return Promise.resolve({ packets: packets }); | 305 return Promise.resolve({ packets: packets }); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 } | 448 } |
| 438 | 449 |
| 439 function usb_test(func, name, properties) { | 450 function usb_test(func, name, properties) { |
| 440 mojo_test(mojo => usbMocks(mojo).then(usb => { | 451 mojo_test(mojo => usbMocks(mojo).then(usb => { |
| 441 let result = Promise.resolve(func(usb)); | 452 let result = Promise.resolve(func(usb)); |
| 442 let cleanUp = () => usb.mockDeviceManager.reset(); | 453 let cleanUp = () => usb.mockDeviceManager.reset(); |
| 443 result.then(cleanUp, cleanUp); | 454 result.then(cleanUp, cleanUp); |
| 444 return result; | 455 return result; |
| 445 }), name, properties); | 456 }), name, properties); |
| 446 } | 457 } |
| OLD | NEW |