| 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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 getConfiguration() { | 127 getConfiguration() { |
| 128 if (this.currentConfiguration_ === undefined) { | 128 if (this.currentConfiguration_ === undefined) { |
| 129 return Promise.resolve({ value: 0 }); | 129 return Promise.resolve({ value: 0 }); |
| 130 } else { | 130 } else { |
| 131 return Promise.resolve({ | 131 return Promise.resolve({ |
| 132 value: this.currentConfiguration_.configuration_value }); | 132 value: this.currentConfiguration_.configuration_value }); |
| 133 } | 133 } |
| 134 } | 134 } |
| 135 | 135 |
| 136 open() { | 136 open() { |
| 137 // TODO(reillyg): Check if the device is opened and return | 137 assert_false(this.opened_); |
| 138 // OpenDeviceError.ALREADY_OPEN. | |
| 139 this.opened_ = true; | 138 this.opened_ = true; |
| 140 return Promise.resolve({ error: device.OpenDeviceError.OK }); | 139 return Promise.resolve({ error: device.OpenDeviceError.OK }); |
| 141 } | 140 } |
| 142 | 141 |
| 143 close() { | 142 close() { |
| 143 assert_true(this.opened_); |
| 144 this.opened_ = false; | 144 this.opened_ = false; |
| 145 return Promise.resolve({}); | 145 return Promise.resolve({ error: device.OpenDeviceError.OK }); |
| 146 } | 146 } |
| 147 | 147 |
| 148 setConfiguration(value) { | 148 setConfiguration(value) { |
| 149 if (!this.opened_) | 149 assert_true(this.opened_); |
| 150 return Promise.resolve({ success: false }); | |
| 151 | 150 |
| 152 let selected_configuration = this.info_.configurations.find( | 151 let selected_configuration = this.info_.configurations.find( |
| 153 configuration => configuration.configuration_value == value); | 152 configuration => configuration.configuration_value == value); |
| 154 if (selected_configuration !== undefined) { | 153 if (selected_configuration !== undefined) { |
| 155 this.currentConfiguration_ = selected_configuration; | 154 this.currentConfiguration_ = selected_configuration; |
| 156 return Promise.resolve({ success: true }); | 155 return Promise.resolve({ success: true }); |
| 157 } else { | 156 } else { |
| 158 return Promise.resolve({ success: false }); | 157 return Promise.resolve({ success: false }); |
| 159 } | 158 } |
| 160 } | 159 } |
| 161 | 160 |
| 162 claimInterface(interfaceNumber) { | 161 claimInterface(interfaceNumber) { |
| 163 if (!this.opened_) | 162 assert_true(this.opened_); |
| 164 return Promise.resolve({ success: false }); | |
| 165 | 163 |
| 166 if (this.currentConfiguration_ === undefined) | 164 if (this.currentConfiguration_ === undefined) |
| 167 return Promise.resolve({ success: false }); | 165 return Promise.resolve({ success: false }); |
| 168 | 166 |
| 169 if (this.claimedInterfaces_.has(interfaceNumber)) | 167 if (this.claimedInterfaces_.has(interfaceNumber)) |
| 170 return Promise.resolve({ success: false }); | 168 return Promise.resolve({ success: false }); |
| 171 | 169 |
| 172 if (this.currentConfiguration_.interfaces.some( | 170 if (this.currentConfiguration_.interfaces.some( |
| 173 iface => iface.interface_number == interfaceNumber)) { | 171 iface => iface.interface_number == interfaceNumber)) { |
| 174 this.claimedInterfaces_.set(interfaceNumber, 0); | 172 this.claimedInterfaces_.set(interfaceNumber, 0); |
| 175 return Promise.resolve({ success: true }); | 173 return Promise.resolve({ success: true }); |
| 176 } else { | 174 } else { |
| 177 return Promise.resolve({ success: false }); | 175 return Promise.resolve({ success: false }); |
| 178 } | 176 } |
| 179 } | 177 } |
| 180 | 178 |
| 181 releaseInterface(interfaceNumber) { | 179 releaseInterface(interfaceNumber) { |
| 182 if (!this.opened_) | 180 assert_true(this.opened_); |
| 183 return Promise.resolve({ success: false }); | |
| 184 | 181 |
| 185 if (this.currentConfiguration_ === undefined) | 182 if (this.currentConfiguration_ === undefined) |
| 186 return Promise.resolve({ success: false }); | 183 return Promise.resolve({ success: false }); |
| 187 | 184 |
| 188 if (this.claimedInterfaces_.has(interfaceNumber)) { | 185 if (this.claimedInterfaces_.has(interfaceNumber)) { |
| 189 this.claimedInterfaces_.delete(interfaceNumber); | 186 this.claimedInterfaces_.delete(interfaceNumber); |
| 190 return Promise.resolve({ success: true }); | 187 return Promise.resolve({ success: true }); |
| 191 } else { | 188 } else { |
| 192 return Promise.resolve({ success: false }); | 189 return Promise.resolve({ success: false }); |
| 193 } | 190 } |
| 194 } | 191 } |
| 195 | 192 |
| 196 setInterfaceAlternateSetting(interfaceNumber, alternateSetting) { | 193 setInterfaceAlternateSetting(interfaceNumber, alternateSetting) { |
| 197 if (!this.opened_ || this.currentConfiguration_ === undefined) | 194 assert_true(this.opened_); |
| 195 |
| 196 if (this.currentConfiguration_ === undefined) |
| 198 return Promise.resolve({ success: false }); | 197 return Promise.resolve({ success: false }); |
| 199 | 198 |
| 200 if (!this.claimedInterfaces_.has(interfaceNumber)) | 199 if (!this.claimedInterfaces_.has(interfaceNumber)) |
| 201 return Promise.resolve({ success: false }); | 200 return Promise.resolve({ success: false }); |
| 202 | 201 |
| 203 let iface = this.currentConfiguration_.interfaces.find( | 202 let iface = this.currentConfiguration_.interfaces.find( |
| 204 iface => iface.interface_number == interfaceNumber); | 203 iface => iface.interface_number == interfaceNumber); |
| 205 if (iface === undefined) | 204 if (iface === undefined) |
| 206 return Promise.resolve({ success: false }); | 205 return Promise.resolve({ success: false }); |
| 207 | 206 |
| 208 if (iface.alternates.some( | 207 if (iface.alternates.some( |
| 209 x => x.alternate_setting == alternateSetting)) { | 208 x => x.alternate_setting == alternateSetting)) { |
| 210 this.claimedInterfaces_.set(interfaceNumber, alternateSetting); | 209 this.claimedInterfaces_.set(interfaceNumber, alternateSetting); |
| 211 return Promise.resolve({ success: true }); | 210 return Promise.resolve({ success: true }); |
| 212 } else { | 211 } else { |
| 213 return Promise.resolve({ success: false }); | 212 return Promise.resolve({ success: false }); |
| 214 } | 213 } |
| 215 } | 214 } |
| 216 | 215 |
| 217 reset() { | 216 reset() { |
| 218 return Promise.resolve({ success: this.opened_ }); | 217 assert_true(this.opened_); |
| 218 return Promise.resolve({ success: true }); |
| 219 } | 219 } |
| 220 | 220 |
| 221 clearHalt(endpoint) { | 221 clearHalt(endpoint) { |
| 222 assert_true(this.opened_); |
| 222 // TODO(reillyg): Check that endpoint is valid. | 223 // TODO(reillyg): Check that endpoint is valid. |
| 223 return Promise.resolve({ success: this.opened_ }); | 224 return Promise.resolve({ success: true }); |
| 224 } | 225 } |
| 225 | 226 |
| 226 controlTransferIn(params, length, timeout) { | 227 controlTransferIn(params, length, timeout) { |
| 228 assert_true(this.opened_); |
| 227 return Promise.resolve({ | 229 return Promise.resolve({ |
| 228 status: device.TransferStatus.OK, | 230 status: device.TransferStatus.OK, |
| 229 data: [length >> 8, length & 0xff, params.request, params.value >> 8, | 231 data: [length >> 8, length & 0xff, params.request, params.value >> 8, |
| 230 params.value & 0xff, params.index >> 8, params.index & 0xff] | 232 params.value & 0xff, params.index >> 8, params.index & 0xff] |
| 231 }); | 233 }); |
| 232 } | 234 } |
| 233 | 235 |
| 234 controlTransferOut(params, data, timeout) { | 236 controlTransferOut(params, data, timeout) { |
| 237 assert_true(this.opened_); |
| 235 return Promise.resolve({ | 238 return Promise.resolve({ |
| 236 status: device.TransferStatus.OK, | 239 status: device.TransferStatus.OK, |
| 237 bytesWritten: data.byteLength | 240 bytesWritten: data.byteLength |
| 238 }); | 241 }); |
| 239 } | 242 } |
| 240 | 243 |
| 241 genericTransferIn(endpointNumber, length, timeout) { | 244 genericTransferIn(endpointNumber, length, timeout) { |
| 245 assert_true(this.opened_); |
| 242 // TODO(reillyg): Check that endpoint is valid. | 246 // TODO(reillyg): Check that endpoint is valid. |
| 243 let data = new Array(length); | 247 let data = new Array(length); |
| 244 for (let i = 0; i < length; ++i) | 248 for (let i = 0; i < length; ++i) |
| 245 data[i] = i & 0xff; | 249 data[i] = i & 0xff; |
| 246 return Promise.resolve({ | 250 return Promise.resolve({ |
| 247 status: device.TransferStatus.OK, | 251 status: device.TransferStatus.OK, |
| 248 data: data | 252 data: data |
| 249 }); | 253 }); |
| 250 } | 254 } |
| 251 | 255 |
| 252 genericTransferOut(endpointNumber, data, timeout) { | 256 genericTransferOut(endpointNumber, data, timeout) { |
| 257 assert_true(this.opened_); |
| 253 // TODO(reillyg): Check that endpoint is valid. | 258 // TODO(reillyg): Check that endpoint is valid. |
| 254 return Promise.resolve({ | 259 return Promise.resolve({ |
| 255 status: device.TransferStatus.OK, | 260 status: device.TransferStatus.OK, |
| 256 bytesWritten: data.byteLength | 261 bytesWritten: data.byteLength |
| 257 }); | 262 }); |
| 258 } | 263 } |
| 259 | 264 |
| 260 isochronousTransferIn(endpointNumber, packetLengths, timeout) { | 265 isochronousTransferIn(endpointNumber, packetLengths, timeout) { |
| 266 assert_true(this.opened_); |
| 261 // TODO(reillyg): Check that endpoint is valid. | 267 // TODO(reillyg): Check that endpoint is valid. |
| 262 let data = new Array(packetLengths.reduce((a, b) => a + b, 0)); | 268 let data = new Array(packetLengths.reduce((a, b) => a + b, 0)); |
| 263 let dataOffset = 0; | 269 let dataOffset = 0; |
| 264 let packets = new Array(packetLengths.length); | 270 let packets = new Array(packetLengths.length); |
| 265 for (let i = 0; i < packetLengths.length; ++i) { | 271 for (let i = 0; i < packetLengths.length; ++i) { |
| 266 for (let j = 0; j < packetLengths[i]; ++j) | 272 for (let j = 0; j < packetLengths[i]; ++j) |
| 267 data[dataOffset++] = j & 0xff; | 273 data[dataOffset++] = j & 0xff; |
| 268 packets[i] = { | 274 packets[i] = { |
| 269 length: packetLengths[i], | 275 length: packetLengths[i], |
| 270 transferred_length: packetLengths[i], | 276 transferred_length: packetLengths[i], |
| 271 status: device.TransferStatus.OK | 277 status: device.TransferStatus.OK |
| 272 }; | 278 }; |
| 273 } | 279 } |
| 274 return Promise.resolve({ data: data, packets: packets }); | 280 return Promise.resolve({ data: data, packets: packets }); |
| 275 } | 281 } |
| 276 | 282 |
| 277 isochronousTransferOut(endpointNumber, data, packetLengths, timeout) { | 283 isochronousTransferOut(endpointNumber, data, packetLengths, timeout) { |
| 284 assert_true(this.opened_); |
| 278 // TODO(reillyg): Check that endpoint is valid. | 285 // TODO(reillyg): Check that endpoint is valid. |
| 279 let packets = new Array(packetLengths.length); | 286 let packets = new Array(packetLengths.length); |
| 280 for (let i = 0; i < packetLengths.length; ++i) { | 287 for (let i = 0; i < packetLengths.length; ++i) { |
| 281 packets[i] = { | 288 packets[i] = { |
| 282 length: packetLengths[i], | 289 length: packetLengths[i], |
| 283 transferred_length: packetLengths[i], | 290 transferred_length: packetLengths[i], |
| 284 status: device.TransferStatus.OK | 291 status: device.TransferStatus.OK |
| 285 }; | 292 }; |
| 286 } | 293 } |
| 287 return Promise.resolve({ packets: packets }); | 294 return Promise.resolve({ packets: packets }); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 } | 437 } |
| 431 | 438 |
| 432 function usb_test(func, name, properties) { | 439 function usb_test(func, name, properties) { |
| 433 mojo_test(mojo => usbMocks(mojo).then(usb => { | 440 mojo_test(mojo => usbMocks(mojo).then(usb => { |
| 434 let result = Promise.resolve(func(usb)); | 441 let result = Promise.resolve(func(usb)); |
| 435 let cleanUp = () => usb.mockDeviceManager.reset(); | 442 let cleanUp = () => usb.mockDeviceManager.reset(); |
| 436 result.then(cleanUp, cleanUp); | 443 result.then(cleanUp, cleanUp); |
| 437 return result; | 444 return result; |
| 438 }), name, properties); | 445 }), name, properties); |
| 439 } | 446 } |
| OLD | NEW |