commit 7c7078130cf50bc244d793a9a7c715de4cc24fac parent cd76cd6715d969f29c07ff2547bbb25c9eba2341 Author: Philip Jägenstedt <philip@foolip.org> Date: Tue, 16 Dec 2025 08:47:58 +0000 Bug 2005493 [wpt PR 56681] - Fix timeupdate on seek test, a=testonly Automatic update from web-platform-tests Partially fix timeupdate on seek test The Python handler for this was still in Python 2 style and didn't work at all. With these fixes the mp4 variant of the test passes in Safari, while everything else is still a timeout. The test does appear correct per spec, where a timeout even it fired when readyState changes from >=HAVE_FUTURE_DATA to <=HAVE_CURRENT_DATA, which should happen if seeking into unbuffered data: https://html.spec.whatwg.org/multipage/media.html#ready-states -- fixup! Partially fix timeupdate on seek test -- Undo variable rename -- wpt-commits: 8f94bb18922d00cfe338db7cf95366e86b911c0a, 1091e73a56e73b40f102034fe73358e105ec63c0, 6a7ff7e7437ec7647d86db27ddc8defe7eb75b27 wpt-pr: 56681 Diffstat:
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-video-element/timeout_on_seek.py b/testing/web-platform/tests/html/semantics/embedded-content/the-video-element/timeout_on_seek.py @@ -1,21 +1,19 @@ -from __future__ import print_function import os import re -from urlparse import parse_qs def parse_range(header_value, file_size): if header_value is None: # HTTP Range header range end is inclusive return 0, file_size - 1 - match = re.match("bytes=(\d*)-(\d*)", header_value) + match = re.match(r"bytes=(\d*)-(\d*)", header_value.decode()) start = int(match.group(1)) if match.group(1).strip() != "" else 0 last = int(match.group(2)) if match.group(2).strip() != "" else file_size - 1 return start, last def main(request, response): - file_extension = parse_qs(request.url_parts.query)["extension"][0] - with open("media/movie_300." + file_extension, "rb") as f: + file_extension = request.GET.first(b"extension").decode() + with open(f"media/movie_300.{file_extension}", "rb") as f: f.seek(0, os.SEEK_END) file_size = f.tell() @@ -26,10 +24,9 @@ def main(request, response): response.add_required_headers = False response.writer.write_status(206 if range_header else 200) response.writer.write_header("Accept-Ranges", "bytes") - response.writer.write_header("Content-Type", "video/mp4") + response.writer.write_header("Content-Type", f"video/{file_extension}") if range_header: - response.writer.write_header("Content-Range", "bytes %d-%d/%d" % - (req_start, req_last, file_size)) + response.writer.write_header("Content-Range", f"bytes {req_start}-{req_last}/{file_size}") response.writer.write_header("Content-Length", str(req_last - req_start + 1)) response.writer.end_headers() diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-video-element/video_timeupdate_on_seek.html b/testing/web-platform/tests/html/semantics/embedded-content/the-video-element/video_timeupdate_on_seek.html @@ -23,7 +23,7 @@ function videoCanPlay() { video.addEventListener("timeupdate", test.step_func(onTimeUpdate)); - video.play(); + video.play().catch(() => test.unreached_func("play() rejected")); video.currentTime = seekTime; } @@ -40,8 +40,8 @@ const testerVideo = document.createElement("video"); if (testerVideo.canPlayType("video/mp4")) testTimeupdateOnSeek("mp4"); - if (testerVideo.canPlayType("video/ogg")) - testTimeupdateOnSeek("ogv"); + if (testerVideo.canPlayType("video/webm")) + testTimeupdateOnSeek("webm"); } </script> </body>