Closed Bug 1859418 Opened 1 year ago Closed 1 year ago

[wpt-sync] Sync PR 42575 - usb: Validate isochronous transfer packet lengths

Categories

(Core :: DOM: Device Interfaces, task, P4)

task

Tracking

()

RESOLVED FIXED
121 Branch
Tracking Status
firefox121 --- fixed

People

(Reporter: wpt-sync, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 42575 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/42575
Details from upstream follow.

Matt Reynolds <mattreynolds@google.com> wrote:

usb: Validate isochronous transfer packet lengths

USBDevice.isochronousTransferIn and
USBDevice.isochronousTransferOut take a parameter containing
a list of packet lengths. This CL adds validation that the
total packet length does not exceed the maximum buffer size.
For isochronousTransferOut, it also checks that the total
length of all packets in bytes is equal to the size of the
data buffer.

Passing invalid packet lengths causes the promise to be
rejected with a DataError.

Bug: 1492381, 1492384
Change-Id: Id9ae16c7e6f1c417e0fc4f21d53e9de11560b2b7
Reviewed-on: https://chromium-review.googlesource.com/4944690
WPT-Export-Revision: fc265e12b367e71c7199452602148f79c769ae66

Component: web-platform-tests → DOM: Device Interfaces
Product: Testing → Core

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 2 tests and 62 subtests

Status Summary

Firefox

OK : 2
FAIL : 124

Chrome

PASS : 116
FAIL : 4
TIMEOUT: 2
ERROR : 2
NOTRUN : 2

Safari

OK : 2
FAIL : 124

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /webusb/usbDevice.https.any.html [wpt.fyi]: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-lite-qr-opt-geckoview, Gecko-android-em-7.0-x86_64-qr-debug-geckoview, Gecko-android-em-7.0-x86_64-qr-opt-geckoview, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows11-32-2009-qr-debug, Gecko-windows11-32-2009-qr-opt, Gecko-windows11-64-2009-qr-debug, Gecko-windows11-64-2009-qr-opt] (Chrome: ERROR, Safari: OK)
    • open rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • disconnection closes the device: FAIL (Chrome: PASS, Safari: FAIL)
    • a device can be opened and closed: FAIL (Chrome: PASS, Safari: FAIL)
    • open and close can be called multiple times: FAIL (Chrome: PASS, Safari: FAIL)
    • open and close cannot be called again while open or close are in progress: FAIL (Chrome: PASS, Safari: FAIL)
    • device operations reject if an device state change is in progress: FAIL (Chrome: PASS, Safari: FAIL)
    • close rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • selectConfiguration rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • methods requiring it reject when the device is not open: FAIL (Chrome: PASS, Safari: FAIL)
    • device configuration can be set and queried: FAIL (Chrome: PASS, Safari: FAIL)
    • a device configuration value can be set again: FAIL (Chrome: PASS, Safari: FAIL)
    • selectConfiguration rejects on invalid configurations: FAIL (Chrome: PASS, Safari: FAIL)
    • methods requiring it reject when the device is unconfigured: FAIL (Chrome: PASS, Safari: FAIL)
    • interfaces can be claimed and released: FAIL (Chrome: PASS, Safari: FAIL)
    • interfaces can be claimed and released in parallel: FAIL (Chrome: PASS, Safari: FAIL)
    • an interface can be claimed multiple times: FAIL (Chrome: PASS, Safari: FAIL)
    • an interface can be released multiple times: FAIL (Chrome: PASS, Safari: FAIL)
    • device operations reject if an interface state change is in progress: FAIL (Chrome: PASS, Safari: FAIL)
    • interfaces are released on close: FAIL (Chrome: PASS, Safari: FAIL)
    • a non-existent interface cannot be claimed or released: FAIL (Chrome: PASS, Safari: FAIL)
    • claimInterface rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • releaseInterface rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can select an alternate interface: FAIL (Chrome: PASS, Safari: FAIL)
    • can select an alternate interface on a setting with non-sequential interface number: FAIL (Chrome: PASS, Safari: FAIL)
    • can select an alternate interface on a setting with non-sequential alternative setting value: FAIL (Chrome: PASS, Safari: FAIL)
    • cannot select a non-existent alternate interface: FAIL (Chrome: PASS, Safari: FAIL)
    • selectAlternateInterface rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue all types of IN control transfers: FAIL (Chrome: PASS, Safari: FAIL)
    • device-scope IN control transfers don't require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope IN control transfers require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope IN control transfers require claiming the interface: FAIL (Chrome: PASS, Safari: FAIL)
    • controlTransferIn rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue all types of OUT control transfers: FAIL (Chrome: PASS, Safari: FAIL)
    • device-scope OUT control transfers don't require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope OUT control transfers require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope OUT control transfers an interface claim: FAIL (Chrome: PASS, Safari: FAIL)
    • controlTransferOut rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • control transfers with a invalid request type reject: FAIL (Chrome: PASS, Safari: FAIL)
    • control transfers with a invalid recipient type reject: FAIL (Chrome: PASS, Safari: FAIL)
    • control transfers to a non-existant interface reject: FAIL (Chrome: PASS, Safari: FAIL)
    • requests to interfaces and endpoint require an interface claim: FAIL (Chrome: PASS, Safari: FAIL)
    • controlTransferOut rejects if called with a detached buffer: FAIL (Chrome: PASS, Safari: FAIL)
    • can clear a halt condition: FAIL (Chrome: PASS, Safari: FAIL)
    • clearHalt rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • transfers to unavailable endpoints are rejected: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue IN interrupt transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue IN bulk transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • transferIn rejects if called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue OUT bulk transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • transferOut rejects if called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • transferOut rejects if called with a detached buffer: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue IN isochronous transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferIn rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue OUT isochronous transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferOut rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferOut rejects when called with a detached buffer: FAIL (Chrome: PASS, Safari: FAIL)
    • can reset the device: FAIL (Chrome: PASS, Safari: FAIL)
    • resetDevice rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferOut rejects when buffer size exceeds packet lengths: FAIL (Chrome: FAIL, Safari: FAIL)
    • isochronousTransferOut rejects when packet lengths exceed buffer size: FAIL (Chrome: FAIL, Safari: FAIL)
    • isochronousTransferIn rejects when packet lengths exceed maximum size: FAIL (Chrome: TIMEOUT, Safari: FAIL)
    • isochronousTransferOut rejects when packet lengths exceed maximum size: FAIL (Chrome: NOTRUN, Safari: FAIL)
  • /webusb/usbDevice.https.any.worker.html [wpt.fyi]: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-lite-qr-opt-geckoview, Gecko-android-em-7.0-x86_64-qr-debug-geckoview, Gecko-android-em-7.0-x86_64-qr-opt-geckoview, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows11-32-2009-qr-debug, Gecko-windows11-32-2009-qr-opt, Gecko-windows11-64-2009-qr-debug, Gecko-windows11-64-2009-qr-opt] (Chrome: ERROR, Safari: OK)
    • open rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • disconnection closes the device: FAIL (Chrome: PASS, Safari: FAIL)
    • a device can be opened and closed: FAIL (Chrome: PASS, Safari: FAIL)
    • open and close can be called multiple times: FAIL (Chrome: PASS, Safari: FAIL)
    • open and close cannot be called again while open or close are in progress: FAIL (Chrome: PASS, Safari: FAIL)
    • device operations reject if an device state change is in progress: FAIL (Chrome: PASS, Safari: FAIL)
    • close rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • selectConfiguration rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • methods requiring it reject when the device is not open: FAIL (Chrome: PASS, Safari: FAIL)
    • device configuration can be set and queried: FAIL (Chrome: PASS, Safari: FAIL)
    • a device configuration value can be set again: FAIL (Chrome: PASS, Safari: FAIL)
    • selectConfiguration rejects on invalid configurations: FAIL (Chrome: PASS, Safari: FAIL)
    • methods requiring it reject when the device is unconfigured: FAIL (Chrome: PASS, Safari: FAIL)
    • interfaces can be claimed and released: FAIL (Chrome: PASS, Safari: FAIL)
    • interfaces can be claimed and released in parallel: FAIL (Chrome: PASS, Safari: FAIL)
    • an interface can be claimed multiple times: FAIL (Chrome: PASS, Safari: FAIL)
    • an interface can be released multiple times: FAIL (Chrome: PASS, Safari: FAIL)
    • device operations reject if an interface state change is in progress: FAIL (Chrome: PASS, Safari: FAIL)
    • interfaces are released on close: FAIL (Chrome: PASS, Safari: FAIL)
    • a non-existent interface cannot be claimed or released: FAIL (Chrome: PASS, Safari: FAIL)
    • claimInterface rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • releaseInterface rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can select an alternate interface: FAIL (Chrome: PASS, Safari: FAIL)
    • can select an alternate interface on a setting with non-sequential interface number: FAIL (Chrome: PASS, Safari: FAIL)
    • can select an alternate interface on a setting with non-sequential alternative setting value: FAIL (Chrome: PASS, Safari: FAIL)
    • cannot select a non-existent alternate interface: FAIL (Chrome: PASS, Safari: FAIL)
    • selectAlternateInterface rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue all types of IN control transfers: FAIL (Chrome: PASS, Safari: FAIL)
    • device-scope IN control transfers don't require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope IN control transfers require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope IN control transfers require claiming the interface: FAIL (Chrome: PASS, Safari: FAIL)
    • controlTransferIn rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue all types of OUT control transfers: FAIL (Chrome: PASS, Safari: FAIL)
    • device-scope OUT control transfers don't require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope OUT control transfers require configuration: FAIL (Chrome: PASS, Safari: FAIL)
    • interface-scope OUT control transfers an interface claim: FAIL (Chrome: PASS, Safari: FAIL)
    • controlTransferOut rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • control transfers with a invalid request type reject: FAIL (Chrome: PASS, Safari: FAIL)
    • control transfers with a invalid recipient type reject: FAIL (Chrome: PASS, Safari: FAIL)
    • control transfers to a non-existant interface reject: FAIL (Chrome: PASS, Safari: FAIL)
    • requests to interfaces and endpoint require an interface claim: FAIL (Chrome: PASS, Safari: FAIL)
    • controlTransferOut rejects if called with a detached buffer: FAIL (Chrome: PASS, Safari: FAIL)
    • can clear a halt condition: FAIL (Chrome: PASS, Safari: FAIL)
    • clearHalt rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • transfers to unavailable endpoints are rejected: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue IN interrupt transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue IN bulk transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • transferIn rejects if called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue OUT bulk transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • transferOut rejects if called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • transferOut rejects if called with a detached buffer: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue IN isochronous transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferIn rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • can issue OUT isochronous transfer: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferOut rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferOut rejects when called with a detached buffer: FAIL (Chrome: PASS, Safari: FAIL)
    • can reset the device: FAIL (Chrome: PASS, Safari: FAIL)
    • resetDevice rejects when called on a disconnected device: FAIL (Chrome: PASS, Safari: FAIL)
    • isochronousTransferOut rejects when buffer size exceeds packet lengths: FAIL (Chrome: FAIL, Safari: FAIL)
    • isochronousTransferOut rejects when packet lengths exceed buffer size: FAIL (Chrome: FAIL, Safari: FAIL)
    • isochronousTransferIn rejects when packet lengths exceed maximum size: FAIL (Chrome: TIMEOUT, Safari: FAIL)
    • isochronousTransferOut rejects when packet lengths exceed maximum size: FAIL (Chrome: NOTRUN, Safari: FAIL)

Tests Disabled in Gecko Infrastructure

  • /webusb/usbDevice.https.any.html [wpt.fyi]: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-lite-qr-opt-geckoview, Gecko-android-em-7.0-x86_64-qr-debug-geckoview, Gecko-android-em-7.0-x86_64-qr-opt-geckoview, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows11-32-2009-qr-debug, Gecko-windows11-32-2009-qr-opt, Gecko-windows11-64-2009-qr-debug, Gecko-windows11-64-2009-qr-opt] (Chrome: ERROR, Safari: OK)
  • /webusb/usbDevice.https.any.worker.html [wpt.fyi]: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-lite-qr-opt-geckoview, Gecko-android-em-7.0-x86_64-qr-debug-geckoview, Gecko-android-em-7.0-x86_64-qr-opt-geckoview, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows11-32-2009-qr-debug, Gecko-windows11-32-2009-qr-opt, Gecko-windows11-64-2009-qr-debug, Gecko-windows11-64-2009-qr-opt] (Chrome: ERROR, Safari: OK)
Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/94b3207cfabb [wpt PR 42575] - usb: Validate isochronous transfer packet lengths, a=testonly
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 121 Branch
You need to log in before you can comment on or make changes to this bug.