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

Side by Side Diff: third_party/WebKit/LayoutTests/usb/resources/usb-helpers.js

Issue 1784733002: Track USB device configuration state in Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blink_open_state
Patch Set: Rebased. Created 4 years, 9 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 '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
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
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 }
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/usb/resources/fake-devices.js ('k') | third_party/WebKit/LayoutTests/usb/usbDevice.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698