forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This change relands https://codereview.chromium.org/1734753003/ with additional layout tests that provide basic coverage of all the functions defined by the WebUSB API. The tests are implemented by providing mock implementations of the Mojo services that Blink depends on to provide the WebUSB API, allowing the entire test implementation to be done in Javascript. Discovered a number of bugs in isochronous packet handling while writing these. BUG=492204 Review URL: https://codereview.chromium.org/1730403006 Cr-Commit-Position: refs/heads/master@{#378578}
- Loading branch information
Showing
9 changed files
with
994 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<!DOCTYPE html> | ||
<script src="../resources/testharness.js"></script> | ||
<script src="../resources/testharnessreport.js"></script> | ||
<script src="../resources/mojo-helpers.js"></script> | ||
<script src="resources/fake-devices.js"></script> | ||
<script src="resources/usb-helpers.js"></script> | ||
<script> | ||
'use strict'; | ||
|
||
usb_test(usb => { | ||
assert_true(usb instanceof Object); | ||
assert_true(usb.DeviceManager instanceof Object); | ||
assert_true(usb.Device instanceof Object); | ||
assert_true(usb.mockDeviceManager instanceof Object); | ||
assert_true(usb.mockPermissionBubble instanceof Object); | ||
}, 'USB Mojo bindings and mock interfaces are available to tests.') | ||
</script> |
120 changes: 120 additions & 0 deletions
120
third_party/WebKit/LayoutTests/usb/resources/fake-devices.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
'use strict'; | ||
|
||
function fakeUsbDevices() { | ||
return define('Fake USB Devices', [ | ||
'device/usb/public/interfaces/device.mojom', | ||
], device => Promise.resolve([ | ||
{ | ||
guid: 'CD9FA048-FC9B-7A71-DBFC-FD44B78D6397', | ||
usb_version_major: 2, | ||
usb_version_minor: 0, | ||
usb_version_subminor: 0, | ||
class_code: 7, | ||
subclass_code: 1, | ||
protocol_code: 2, | ||
vendor_id: 0x18d1, | ||
product_id: 0xf00d, | ||
device_version_major: 1, | ||
device_version_minor: 2, | ||
device_version_subminor: 3, | ||
manufacturer_name: 'Google, Inc.', | ||
product_name: 'The amazing imaginary printer', | ||
serial_number: '4', | ||
configurations: [ | ||
{ | ||
configuration_value: 1, | ||
configuration_name: 'Printer Mode', | ||
interfaces: [ | ||
{ | ||
interface_number: 0, | ||
alternates: [ | ||
{ | ||
alternate_setting: 0, | ||
class_code: 0xff, | ||
subclass_code: 0x01, | ||
protocol_code: 0x01, | ||
interface_name: 'Control', | ||
endpoints: [ | ||
{ | ||
endpoint_number: 1, | ||
direction: device.TransferDirection.INBOUND, | ||
type: device.EndpointType.INTERRUPT, | ||
packet_size: 8 | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
{ | ||
interface_number: 1, | ||
alternates: [ | ||
{ | ||
alternate_setting: 0, | ||
class_code: 0xff, | ||
subclass_code: 0x02, | ||
protocol_code: 0x01, | ||
interface_name: 'Data', | ||
endpoints: [ | ||
{ | ||
endpoint_number: 2, | ||
direction: device.TransferDirection.INBOUND, | ||
type: device.EndpointType.BULK, | ||
packet_size: 1024 | ||
}, | ||
{ | ||
endpoint_number: 2, | ||
direction: device.TransferDirection.OUTBOUND, | ||
type: device.EndpointType.BULK, | ||
packet_size: 1024 | ||
} | ||
] | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
{ | ||
configuration_value: 2, | ||
configuration_name: 'Fighting Robot Mode', | ||
interfaces: [ | ||
{ | ||
interface_number: 0, | ||
alternates: [ | ||
{ | ||
alternate_setting: 0, | ||
class_code: 0xff, | ||
subclass_code: 0x42, | ||
protocol_code: 0x01, | ||
interface_name: 'Disabled', | ||
endpoints: [] | ||
}, | ||
{ | ||
alternate_setting: 1, | ||
class_code: 0xff, | ||
subclass_code: 0x42, | ||
protocol_code: 0x01, | ||
interface_name: 'Activate!', | ||
endpoints: [ | ||
{ | ||
endpoint_number: 1, | ||
direction: device.TransferDirection.INBOUND, | ||
type: device.EndpointType.ISOCHRONOUS, | ||
packet_size: 1024 | ||
}, | ||
{ | ||
endpoint_number: 1, | ||
direction: device.TransferDirection.OUTBOUND, | ||
type: device.EndpointType.ISOCHRONOUS, | ||
packet_size: 1024 | ||
} | ||
] | ||
} | ||
] | ||
}, | ||
] | ||
} | ||
], | ||
webusb_allowed_origins: { origins: [], configurations: [] }, | ||
} | ||
])); | ||
} |
Oops, something went wrong.