tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 16cae068bb242894c3a47cedd77612dc26177726
parent f3f25a40f8d2a1ce69e135875301e60b148d15ea
Author: Dale Curtis <dalecurtis@chromium.org>
Date:   Thu,  6 Nov 2025 21:32:31 +0000

Bug 1997420 [wpt PR 55771] - [WebCodecs] When verifying key frames, always throw for type==delta, a=testonly

Automatic update from web-platform-tests
[WebCodecs] When verifying key frames, always throw for type==delta

We shouldn't override the type of the EncodedVideoChunk just because
packet analysis indicates that it's actually a key frame. This aligns
Chrome's behavior with Safari/Firefox.

R=eugene

Fixed: 456164625
Change-Id: I5812c9c87ae34344da2cc94872c4dd6219eef085
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7103067
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1538178}

--

wpt-commits: d4c91d582bb640a129149fc7d45d64584fee202e
wpt-pr: 55771

Diffstat:
Mtesting/web-platform/tests/webcodecs/videoDecoder-codec-specific.https.any.js | 15+++++++++++++++
1 file changed, 15 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/webcodecs/videoDecoder-codec-specific.https.any.js b/testing/web-platform/tests/webcodecs/videoDecoder-codec-specific.https.any.js @@ -125,6 +125,21 @@ promise_test(async t => { const callbacks = {}; const decoder = createVideoDecoder(t, callbacks); decoder.configure(CONFIG); + + // Mark a keyframe chunk as a delta chunk to ensure any packet analysis + // doesn't override the user provided type. + let mismarked_chunk = new EncodedVideoChunk( + {type: 'delta', timestamp: 0, duration: 1, data: CHUNK_DATA[0]}); + + assert_throws_dom( + 'DataError', () => decoder.decode(mismarked_chunk, 'decode')); +}, 'Decode a key frame marked as delta fails'); + +promise_test(async t => { + await checkImplements(); + const callbacks = {}; + const decoder = createVideoDecoder(t, callbacks); + decoder.configure(CONFIG); for (let i = 0; i < 16; i++) { decoder.decode(new EncodedVideoChunk( {type: 'key', timestamp: 0, data: CHUNK_DATA[0]}));