Contact emails
gabrielbr...@microsoft.com, stev...@microsoft.com

Explainer
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/AudioContextInterruptedState/explainer.md


Specification
https://webaudio.github.io/web-audio-api/#dom-audiocontextstate-interrupted


Summary

The current Web Audio API lacks a mechanism for the User Agent (UA) to 
interrupt playback for scenarios such as exclusive audio access (VoIP) or when 
a laptop lid is closed. To address this, we propose adding an "interrupted" 
state to AudioContextState. This new state would allow the UA to pause playback 
in these scenarios and enable web applications to respond appropriately.



Blink component
Blink>WebAudio


TAG review
https://github.com/w3ctag/design-reviews/issues/1069


TAG review status
Pending


Risks




Interoperability and Compatibility

When AudioContext.resume() is called for an AudioContext in the "closed" state, 
the returned promise is rejected. With this proposal, the same behavior will 
also happen when AudioContext.resume() is called while the AudioContext 
"interrupted". In this case, a web page that is not aware of the existence of 
the "interrupted" state might imply that the AudioContext has been closed. In 
this situation, application shouldn't rely solely on the returned promise 
resolution outcome and also check the AudioContext state.


Gecko: Positive (https://github.com/mozilla/standards-positions/issues/1083) 
Mozilla helped review and merge this feature into the Web Audio specification

WebKit: Positive (https://github.com/WebKit/standards-positions/issues/410) 
Safari is supportive and already has a prototype implemented to support the 
Audio Session API.

Web developers: Positive (https://github.com/whatwg/html/issues/10208) Even 
though this feature has not been explicitly asked by web developers, it is 
required to make other in-development browser APIs to work properly with Web 
Audio - eg media-playback-while-not-visible permission policy and the Audio 
Session API.

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?


Debuggability

None



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?
No
This feature cannot be tested by itself because it cannot be used directly by 
web applications. An AudioContext should only transition to the "interrupted" 
state at the user agent's discretion - ie there is no public web API to 
interrupt the AudioContext. However, other Web APIs' specifications will depend 
on the "interrupted" state and can have web tests that expect the AudioContext 
to be interrupted in some situations: For example: - 
https://www.w3.org/TR/audio-session/ - 
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/IframeMediaPause/iframe_media_pausing.md



Flag name on about://flags
None


Finch feature name
AudioContextInterruptedState


Requires code in //chrome?
False


Tracking bug
https://issues.chromium.org/issues/374805121


Estimated milestones


Shipping on desktop 136

Shipping on Android 136

Shipping on WebView 136




Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop 
issues. Please list open issues (eg links to known github issues in the project 
for the feature specification) whose resolution may introduce web 
compat/interop risk (eg, changing to naming or structure of the API in a 
non-backward-compatible way).
This feature has been added to the Web Audio spec: 
https://webaudio.github.io/web-audio-api/#dom-audiocontextstate-interrupted


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5172068166139904?gate=5204675557851136


Links to previous Intent discussions
Intent to Prototype: 
https://groups.google.com/a/chromium.org/g/blink-dev/c/GgSvU1BZZRU



This intent message was generated by Chrome Platform Status.

-- 
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 blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67e318b0.170a0220.e1a1e.0863.GAE%40google.com.

Reply via email to