LGTM2 On Mon, Nov 2, 2026 at 3:11 AM Philip Jägenstedt <[email protected]> wrote:
> LGTM1 > > Generally it's risky to change exception-throwing to promise-rejection > since existing try-catch blocks would stop working, but if the only error > condition is that the document isn't fully active, I agree the risk is very > small. > > On Fri, Oct 30, 2026 at 8:52 PM 'Tommy Steimel' via blink-dev < > [email protected]> wrote: > >> *Contact emails* >> [email protected] >> >> *Explainer* >> https://github.com/w3c/mediasession/pull/312 >> >> *Specification* >> https://w3c.github.io/mediasession/#dom-mediasession-setmicrophoneactive >> >> *Summary* >> Updates navigator.mediaSession.setMicrophoneActive() and >> navigator.mediaSession.setCameraActive() to return a Promise<undefined> >> instead of undefined, matching the W3C Media Session specification. In a >> fully active document, the returned promise resolves with undefined; if the >> associated document is not fully active, it returns a promise rejected with >> an InvalidStateError DOMException. >> >> *Blink component* >> Blink>Media>Session >> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EMedia%3ESession%22> >> >> *Web Feature ID* >> media-session <https://webstatus.dev/features/media-session> >> >> *Motivation* >> When MediaSession.setMicrophoneActive() and >> MediaSession.setCameraActive() were originally specified and shipped in >> Chrome 93, their WebIDL return type was void (undefined). The W3C Media >> Session specification was subsequently updated ( >> https://github.com/w3c/mediasession/pull/312) so that both methods >> return Promise<undefined> to support user agents that apply a capture pause >> policy or prompt the user asynchronously. Updating Chromium's >> implementation to return Promise<undefined> aligns Chrome with the W3C >> Media Session specification and fixes 4 failing subtests in WPT's >> mediasession/idlharness.window.html. >> >> *Initial public proposal* >> *No information provided* >> >> *TAG review* >> N/A — This is a minor spec-compliance update to the return type >> (undefined -> Promise<undefined>) of two already-shipped MediaSession >> methods, already specified in the W3C Media Session Working Draft ( >> https://github.com/w3c/mediasession/pull/312) and shipped in Safari. >> >> *TAG review status* >> Not applicable >> >> *Goals for experimentation* >> None >> >> *Risks* >> >> >> *Interoperability and Compatibility* >> Compatibility risk is very low. Existing callers that ignore the return >> value of setMicrophoneActive() and setCameraActive() are unaffected because >> the returned promise always resolves with undefined in an active document >> (so fire-and-forget callers will not encounter unhandled promise >> rejections). The promise only rejects with InvalidStateError when called on >> a MediaSession whose associated Document is no longer fully active (such as >> a detached iframe), or with TypeError when called with too few arguments or >> an invalid receiver per WebIDL rules for promise-returning operations. >> Interoperability is improved, as Safari already ships Promise<undefined> >> for both methods and Firefox is implementing the same WebIDL signature. >> >> *Gecko*: Positive ( >> https://github.com/mozilla/standards-positions/issues/504) >> >> *WebKit*: Shipped/Shipping ( >> https://bugs.webkit.org/show_bug.cgi?id=277421) Shipped in Safari 18.4 >> >> *Web developers*: No signals N/A — Minor spec-compliance fix to return >> Promise<undefined> instead of undefined. >> >> *Other signals*: >> >> *WebView application risks* >> >> Does this intent deprecate or change behavior of existing APIs, such that >> it has potentially high risk for Android WebView-based applications? >> *No information provided* >> >> >> *Debuggability* >> *No information provided* >> >> *Will this feature be supported on all six Blink platforms (Windows, Mac, >> Linux, ChromeOS, Android, and Android WebView)?* >> Yes >> >> *Is this feature fully tested by web-platform-tests >> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?* >> Yes >> https://wpt.fyi/results/mediasession/idlharness.window.html >> https://wpt.fyi/results/mediasession/setmicrophoneactive.html >> https://wpt.fyi/results/mediasession/setcameraactive.html >> >> *Flag name on about://flags* >> *No information provided* >> >> *Finch feature name* >> *No information provided* >> >> *Non-finch justification* >> Changing a WebIDL method's return type from void to Promise<undefined> >> cannot be guarded behind a runtime feature flag in Blink's generated >> bindings without changing the IDL return type to 'any' and losing WebIDL's >> automatic promise-rejection wrapping for invalid arguments/receivers. >> Compatibility risk is negligible because the returned promise always >> resolves in an active document. >> >> *Rollout plan* >> Will ship enabled for all users >> >> *Requires code in //chrome?* >> False >> >> *Tracking bug* >> https://crbug.com/576328036 >> >> *Estimated milestones* >> Shipping on desktop 159 >> Shipping on Android 159 >> >> *Anticipated spec changes* >> >> Open questions about a feature may be a source of future web compat or >> interop issues. Please list open issues (e.g. links to known github issues >> in the project for the feature specification) whose resolution may >> introduce web compat/interop risk (e.g., changing to naming or structure of >> the API in a non-backward-compatible way). >> *No information provided* >> >> *Link to entry on the Chrome Platform Status* >> https://chromestatus.com/feature/5188639100370944?gate=5532358353747968 >> >> This intent message was generated by Chrome Platform Status >> <https://chromestatus.com/>. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "blink-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion visit >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAE-AwArmrmUK0D45B8cPYA20cCM%3DB1-sW4vM4Vz67bLzzrsxDQ%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAE-AwArmrmUK0D45B8cPYA20cCM%3DB1-sW4vM4Vz67bLzzrsxDQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYcsQYO%2BSkmKSQDjykQLrw9nnhGUTBYmdfwHtVC_Pe%3DsQg%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYcsQYO%2BSkmKSQDjykQLrw9nnhGUTBYmdfwHtVC_Pe%3DsQg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw-3N2a%3D%2BufH2UPhXTp5k_4pNSAQ2e70QmvikR7ExcEJAg%40mail.gmail.com.
