Follow native and observable media and timeline states - #202
Merged
Conversation
jdalton
marked this pull request as ready for review
September 5, 2026 19:42
jdalton
force-pushed
the
preserve/media-time-pseudos
branch
2 times, most recently
from
September 6, 2026 11:40
7daac5c to
e6769cf
Compare
jdalton
force-pushed
the
preserve/media-time-pseudos
branch
from
September 7, 2026 15:27
e6769cf to
989282d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Media selectors now use native host state when available and fall back to observable HTML audio/video properties. This fixes ordinary elements matching paused/seeking states, playback at time zero or during buffering, and muting that depended on the audio content attribute. Buffering can match while playback remains active. Timed stalls and volume locks require native support; the engine does not infer them from a network flag.
Time selectors delegate to the host timeline and match nothing when it is unavailable. Functional
:current()validates a nonempty compound-selector list, including with no candidates, and follows existing forgiving-list behavior.The changes follow the draft resource-state definitions and time-dimensional definitions. The retained browser assertions now live under
test/repo/e2eand run through the default CI browser command. New tests cover real playback, pause, seeking, muting, completion, native delegation, unsupported-host fallbacks, and malformed time selectors. The two archived expected failures are passing contracts; host-only limitations are documented indocs/media-time-state.md.Rebased as one commit onto the completed selector and benchmark changes. Validation: 585 Node tests, 22 packed-package tests, 20 existing browser tests, 7 media/display browser tests, and 58 WPT pages pass. Types, lint, formatting, repository checks, and coverage thresholds pass. Combined coverage: 86.42% statements, 77.72% branches, 85.16% functions, 85.31% lines.