html: Enhance media network and decoding error handling#39899
Conversation
|
🔨 Triggering try run (#18530785328) for Linux (WPT) |
|
Test results for linux-wpt from try job (#18530785328): Flaky unexpected result (31)
Stable unexpected results that are known to be intermittent (30)
|
|
✨ Try run (#18530785328) succeeded. |
5e36812 to
4a70410
Compare
4a70410 to
459c7f8
Compare
|
🔨 Triggering try run (#18552070911) for Linux (WPT) |
|
Test results for linux-wpt from try job (#18552070911): Flaky unexpected result (31)
Stable unexpected results that are known to be intermittent (27)
|
|
✨ Try run (#18552070911) succeeded. |
jdm
left a comment
There was a problem hiding this comment.
Looks good, but I'd like to take another look after the CanGc-related changes have been made!
459c7f8 to
7b8d515
Compare
7b8d515 to
0b08b29
Compare
@jdm < Please take a look. The fine-grained borrowing still could be added as well... |
0b08b29 to
6410633
Compare
|
|
|
🔨 Triggering try run (#18710671296) for Linux (WPT) |
|
Test results for linux-wpt from try job (#18710671296): Flaky unexpected result (21)
Stable unexpected results that are known to be intermittent (27)
|
|
✨ Try run (#18710671296) succeeded. |
|
I'll have a closer look tonight, but I'm worried that fixes like marking fields |
|
Of course there are some risk to implement it wrong with introduced a transitive GC member to the field in future, but it is trade off between performance and safety (no point to trace non js manageable objects during CG). BTW, I think |
The 'media' element has multiple media data processing steps for media source loading and requires properly handling any media network and decoding errors between different components: - element (resource selection algorithm) - fetch context/listener (async response) - media backend (async playback events) The fetch listener will stop processing any actions (response/chunk/eof) in case if current fetch request was cancelled (due to a network/decoding error or it was aborted by user). Also send EOS event to media backend ONLY once the entire media resource has been fetched so media pipeline will not generate decoding (playback) error for fetched empty sources (eg. "about:blank" or "data:,"). See https://html.spec.whatwg.org/multipage/#media-data-processing-steps-list Testing: No changes in WPT test expectations Fixes: servo#39759 ("about:blank") Fixes: servo#38980 ("data:,") Signed-off-by: Andrei Volykhin <[email protected]>
6410633 to
8843707
Compare
|
🔨 Triggering try run (#18740879825) for Linux (WPT) |
|
Test results for linux-wpt from try job (#18740879825): Flaky unexpected result (26)
Stable unexpected results that are known to be intermittent (24)
|
|
✨ Try run (#18740879825) succeeded. |
The 'media' element has multiple media data processing steps for media source loading and requires properly handling any media network and decoding errors between different components:
The fetch listener will stop processing any actions (response/chunk/eof) in case if current fetch request was cancelled (due to a network/decoding error or it was aborted by user).
Also send EOS event to media backend ONLY once the entire media resource has been fetched so media pipeline will not generate decoding (playback) error for fetched empty sources (eg. "about:blank" or "data:,").
See https://html.spec.whatwg.org/multipage/#media-data-processing-steps-list
Testing: No changes in WPT test expectations
Fixes: #39759 ("about:blank")
Fixes: #38980 ("data:,")