Bug 247804
| Summary: | Media element timeupdates continue after turning wi-fi off, no network error | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Robert Bryer <robert.bryer> |
| Component: | Media | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | eric.carlson, jer.noble, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari 16 | ||
| Hardware: | All | ||
| OS: | Unspecified | ||
Robert Bryer
1. Start playing a video (HLS)
2. Turn the wifi (or other internet) off in settings and await buffer exhaustion after a few minutes of playback
After running out of data, timeupdates continue with increasing currentTime values still come out. There's no data so the media is not progressing.
I would expect instead an error MEDIA_ERR_NETWORK (2) — this does not come out.
When playback resumes when the wifi is back on, it seems to jump forward.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/102514414>
Robert Bryer
Ok, so along the same lines here, if there's any failure at all to download HLS fragments, there's no error event at all.
Here's an example HLS programme but only the first four segments (~30s) exist, so all the rest 404:
http://smp-scratch.tools.bbc.co.uk/bob/samples/hls/partial/hls-plain.html
In this case, after the 30s, I _sometimes_ get the increasing timeupdates, sometimes just a waiting event.
Regardless of bad timeupdates or waiting, I'm not getting any MediaElement network error - and there's no way to tell that anything has gone wrong loading the resource at all.
Smoley
Thanks for filing, I've not been able to reproduce this on Safari 16.1 or 16.4 (STP). On which version of Safari are you seeing this issue?
Robert Bryer
It's definitely on Safari 16.1
Testing a bit more, I think it needs the video to be muted (I've amended the example page to start muted) and also the video has to go out and back in to visibility before the connection is cut (background suspension?).
Robert Bryer
Regardless of the timeupdates, is there any hope of adding in the error event once it's given up trying to fetch segments? If I want to detect a problem with the example stream, I need to set a timer on the waiting event and trigger after waiting for too long.