htmlmediaelement: Support seek requests for non seekable fetch context (#37264)

According to specification the data:// URL protocol doesn't support
range request
so be able make any seek request to required content position let's
allow
for non seekable fetch context discard fetched content bytes until seek
offset.
https://fetch.spec.whatwg.org/#scheme-fetch

Some scheme URLs (like data:// URL) doesn't expose "Content-Length"
header in response
so the total expected size of the stream is unknown and it causes some
additional
seek request (SeekData) from the media player. Try to post configure
stream size
after we reached fetch EOS response.

Related source code which breaks WPT tests:

[tests/wpt/tests/html/canvas/element/manual/imagebitmap/common.sub.js#L56-L78](https://github.com/servo/servo/tree/main/tests/wpt/tests/html/canvas/element/manual/imagebitmap/common.sub.js#L56-L78)

Testing: Improvements in the following tests:
 - html/canvas/element/manual/imagebitmap/createImageBitmap*

Fixes: https://github.com/servo/servo/issues/32645
Fixes: https://github.com/servo/servo/issues/32745
Fixes: https://github.com/servo/servo/issues/34119
Fixes: https://github.com/servo/servo/issues/34120
Fixes: https://github.com/servo/servo/issues/34151

Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
This commit is contained in:
Andrei Volykhin 2025-06-07 00:52:24 +03:00 committed by GitHub
parent 2c51d44b53
commit b81f1b135b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 52 additions and 42 deletions

View file

@ -1,5 +1,4 @@
[createImageBitmap-colorSpaceConversion.html]
expected: ERROR
[createImageBitmap from a bitmap HTMLImageElement, and drawImage on the created ImageBitmap with colorSpaceConversion: none]
expected: FAIL

View file

@ -1,5 +1,4 @@
[createImageBitmap-drawImage.html]
expected: ERROR
[createImageBitmap from an OffscreenCanvas resized, and drawImage on the created ImageBitmap]
expected: FAIL

View file

@ -1,5 +1,4 @@
[createImageBitmap-flipY.html]
expected: ERROR
[createImageBitmap from a vector SVGImageElement imageOrientation: "none", and drawImage on the created ImageBitmap]
expected: NOTRUN

View file

@ -1,5 +1,4 @@
[createImageBitmap-invalid-args.html]
expected: ERROR
[createImageBitmap with a vector HTMLImageElement source and sw set to 0]
expected: FAIL
@ -138,18 +137,12 @@
[createImageBitmap with a vector SVGImageElement source and a value between 0 and 1 in resizeHeight]
expected: FAIL
[createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeWidth]
expected: FAIL
[createImageBitmap with a vector SVGImageElement source and a value of 0 in resizeHeight]
expected: FAIL
[createImageBitmap with a bitmap SVGImageElement source and a value between 0 and 1 in resizeHeight]
expected: FAIL
[createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 in resizeHeight]
expected: FAIL
[createImageBitmap with an ImageBitmap source and a value of 0 in resizeHeight]
expected: FAIL
@ -162,11 +155,5 @@
[createImageBitmap with a bitmap SVGImageElement source and a value of 0 int resizeWidth]
expected: FAIL
[createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 int resizeWidth]
expected: FAIL
[createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeHeight]
expected: FAIL
[createImageBitmap with a vector SVGImageElement source and a value between 0 and 1 in resizeWidth]
expected: FAIL

View file

@ -1,5 +1,4 @@
[createImageBitmap-premultiplyAlpha.html]
expected: ERROR
[createImageBitmap: from ImageData, unpremultiplied, drawn to canvas]
expected: FAIL

View file

@ -1,5 +1,4 @@
[createImageBitmap-transfer.html]
expected: ERROR
[Transfer ImageBitmap created from a vector HTMLImageElement]
expected: FAIL

View file

@ -1,13 +1,7 @@
[video-tag.https.html]
expected: TIMEOUT
[Mixed-Content: Expects allowed for video-tag to same-https origin and keep-scheme redirection from https context.]
expected: TIMEOUT
[Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.]
expected: NOTRUN
[Mixed-Content: Expects blocked for video-tag to cross-http origin and keep-scheme redirection from https context.]
expected: NOTRUN
expected: TIMEOUT
[Mixed-Content: Expects blocked for video-tag to cross-http origin and no-redirect redirection from https context.]
expected: NOTRUN

View file

@ -1,10 +1,7 @@
[video-tag.https.html]
expected: TIMEOUT
[Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.]
expected: TIMEOUT
[Mixed-Content: Expects blocked for video-tag to cross-http origin and no-redirect redirection from https context.]
expected: NOTRUN
expected: TIMEOUT
[Mixed-Content: Expects blocked for video-tag to same-http origin and no-redirect redirection from https context.]
expected: NOTRUN

View file

@ -1,4 +1,4 @@
[texture-srgb-upload.html]
expected: TIMEOUT
expected: ERROR
[Overall test]
expected: NOTRUN