Contact emails
gabrie...@microsoft.com,
ste...@microsoft.com
Explainer
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/IframeMediaPause/iframe_media_pausing.md
Specification
https://wicg.github.io/iframe-media-pausing
Summary
Adds a "media-playback-while-not-visible" permission policy to allow embedders to pause audible media playback of embedded iframes which are currently hidden - i.e. "display" property set to "none"; "visibility" property set to "hidden"; or zero-area (width or height equal to 0). While hidden, attempts made by the embedded iframe to render audible media will be blocked. When the frame is shown again the prohibitions should be lifted. This should allow developers to build more user-friendly experiences and to also improve the performance by letting the browser handle the playback of content that is not visible to users.
Blink component
Blink>Media
Web Feature ID
https://github.com/web-platform-dx/web-features/issues/4292
Motivation
Web applications that host embedded media content via iframes may wish to respond to application input by temporarily hiding the media content. These applications may not want to unload the entire iframe when it's not rendered since it could generate user-perceptible performance and experience issues when showing the media content again. At the same time, the user could have a negative experience if the media continues to play and emit audio when not rendered. This proposal aims to provide web applications with the ability to control embedded media content in such a way that guarantees their users have a good experience when the iframe's render status is changed.
Initial public proposal
No information provided
TAG review
https://github.com/w3ctag/design-reviews/issues/1084
TAG review status
Issues addressed
Origin Trial Name
media-playback-while-not-visible Permission Policy
Goals for experimentation
Gather feedback from web developers and validate that the current prototype implementation works as expected. We have added telemetry to measure how the feature is being exercised by users:
- HTMLMediaElement's:
- # of pauses while hidden
- # of pauses because got hidden during playback
- WebAudio AudioContext's
- # of interruptions while hidden
- # of interruptions because got hidden during playback
Chromium Trial Name
MediaPlaybackWhileNotVisiblePermissionPolicy
Origin Trial documentation link
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/IframeMediaPause/iframe_media_pausing.md
WebFeature UseCounter name
kMediaPlaybackWhileNotVisiblePermissionPolicy
Risks
Interoperability and Compatibility
Firefox has already shown official support, although, we can't say for sure when other browsers are going to implement this feature. Safari also seems to be unofficially supportive:
https://github.com/whatwg/html/issues/10208#issuecomment-3060151372
Gecko: Positive (
https://github.com/mozilla/standards-positions/issues/1082)
WebKit: No signal (
https://github.com/WebKit/standards-positions/issues/409)
Web developers: Positive (
https://github.com/whatwg/html/issues/10208) The community is supportive of resolving this problem using a permission policy. A commenter mentioned that the proposal fits well within the Permissions Policy API specification. They also agree that there is no workaround for this problem using current web API's.
Feedback has been addressed to also include other invisibility scenarios like zero-area (height or width equal to 0) and to change the API name from "not-rendered" to "not-visible".
Other signals:
Ergonomics
This feature will be used with other audio rendering API's, like HTMLMediaElement and Web Audio. This new behavior should only take effect if web pages explicitly opt-in by overriding the permission policy's default state. Moreover, once the permission policy is used, it should help Chromium to be more optimized by pausing audio rendering for content that is not visible for the user.
Activation
Developers need to opt-in by setting "allow" property of an iframe. For example:
<iframe src="
https://foo.media.com" allow="media-playback-while-not-visible 'none'"></iframe>
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?
None. This feature adds a new behavior that applications need to opt-in.
Debuggability
No information provided
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
Yes
Yes
-
https://wpt.fyi/results/html/semantics/embedded-content/media-elements/media-playback-while-not-visible-permission-policy?label=master&label=experimental&aligned&q=media-playback-while-not-visible-permission-policy
-
https://wpt.fyi/results/webaudio/the-audio-api/media-playback-while-not-visible-permission-policy?label=master&label=experimental&aligned&q=media-playback-while-not-visible-permission-policy
DevTrial instructions
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/IframeMediaPause/HOWTO.md
Flag name on about://flags
media-playback-while-not-visible-permission-policy
Finch feature name
MediaPlaybackWhileNotVisiblePermissionPolicy
Rollout plan
Will ship enabled for all users
Requires code in //chrome?
False
Tracking bug
https://issues.chromium.org/issues/351354996
Availability expectation
The feature will be available in Chromium browsers at first. Despite this, Mozilla supports the feature too and will implement it at some point.
Adoption expectation
Feature is used by specific partners to provide functionality within 3 months of launch in Chrome.
Non-OSS dependencies
Does the feature depend on any code or APIs outside the Chromium
open source repository and its open-source dependencies to
function?
None.
Estimated milestones
| Shipping on desktop | 155 |
| Origin trial desktop first | 137 |
| Origin trial desktop last | 142 |
| Origin trial extension 1 end milestone | 145 |
| DevTrial on desktop | 137 |
| Shipping on Android | 155 |
| Origin trial Android first | 137 |
| Origin trial Android last | 142 |
| Shipping on WebView | 155 |
| Origin trial WebView first | 137 |
| Origin trial WebView last | 142 |
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).
Currently the feature is spec'ed to work with HTMLMediaElements and Web Audio AudioContexts. We'll work on incrementally integrating it with other media-playback apis like PiP, Audio Session API, and Media Session API:
-
https://github.com/WICG/iframe-media-pausing/issues/2
-
https://github.com/WICG/iframe-media-pausing/issues/3
-
https://github.com/WICG/iframe-media-pausing/issues/4
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5082950457884672?gate=5168819537707008
Links to previous Intent discussions
Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/PH7PR00MB1638C5FA59458CE0BBDC1FA6D5D72%40PH7PR00MB1638.namprd00.prod.outlook.comIntent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6806b191.170a0220.2f866a.0286.GAE%40google.com