-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document Picture in Picture API #41
Comments
The explainer doesn’t indicate the implementation strategy. How would one implement this on iOS? |
Unfortunately, I don't know much about Safari on iOS, or the level of integration between the two. On Android, for example, chrome builds strictly on android primitives, like any other app. Document PiP might be hard to implement there without additional os-level support, since Android PiP doesn't allow input beyond some curated buttons. I have no idea if there will ever be support for it, or if anyone would want to use Document PiP on the form factors that Android typically supports. However, we believe that there's value in the Document PiP API even if it's only currently supported on desktop. I guess that's a complicated way to say "I don't know." :) |
Is there an actual specification for this feature? It's somewhat hard to infer a processing model from the explainer. |
It's also not clear to me what the use-cases are of this, and why |
Thanks for the questions.
There's a draft spec at https://steimelchrome.github.io/draft_spec.html which is still under construction.
We considered
|
This still doesn't explain what the use cases are - it seems to assume them without stating them. (And use cases should really be in the Explainer). |
|
concerns venue: We recently got moved into a WICG repo here: https://github.com/WICG/document-picture-in-picture concerns use cases: Use cases were added to the explainer. Thanks for recommending that concerns portability: I'm not sure how to address this. Since the use cases make less sense in a smaller form factor, we weren't too focused on Android/iOS feasibility. Though it could make sense in tablet-size cases. Are there particular API changes you'd like to see or things we could change that would make it more iOS-feasible? |
Here's a proposal how to address this: WICG/document-picture-in-picture#1. |
How does that change address this? |
FYI We have published web developer documentation at https://developer.chrome.com/docs/web-platform/document-picture-in-picture/ which may come handy when reviewing the API shape. |
Re FWIW, We saw web developers using the Picture-in-Picture API for |
This app uses an AVSampleBufferDisplayLayer to display the timer in a picture-in-picture window. This API is designed to display frames of video, so the PiP window has a play/pause button, a a timeline slider, and ±10 seconds buttons on top of the app content. I don't believe there is a way to disable the media-specific controls, which are clearly not appropriate for arbitrary web content. |
In addition to adding support at the os level if there's enough demand, we could also include an option for "non interactive Document PiP" that's a lot closer to the os support we have. This would make it significantly easier for use cases where video-only PiP is being driven by a canvas, since one could use arbitrary web content instead. It could also be done in a backwards-compatible way with the proposed API, e.g., via a new option to the |
Does this API support positioning the PiP window from the host document? Looks like it can be moved manually once opened. I was wondering if it could be positioned on open and also repositioned programmatically. |
Not currently, but see WICG/document-picture-in-picture#34 for some thoughts on this feature request. |
Specification here: https://wicg.github.io/document-picture-in-picture/ An intent-to-ship in Chromium is in progress. |
Where in Chromium is the code for this feature? |
For the initial launch of this API, Chrome disabled the ability for websites to use the resizeTo() and resizeBy() Window APIs to avoid spammy abuse given the always-on-top nature of a document picture-in-picture window. We've received feedback from multiple websites that having access to these APIs would be useful (e.g. clicking to expand a playlist). We propose a change to allow access to those APIs, but gated behind a user gesture (consumed) to limit potential abuse. See the PR here: WICG/document-picture-in-picture#104 |
As a small addition, we also propose explicitly allowing Window's See the PR here: WICG/document-picture-in-picture#109 |
As requested by developers, we proposed adding display-mode for picture-in-picture to CSS Media Queries Level 5. @media all and (display-mode: picture-in-picture) {
body {
margin: 0;
}
h1 {
font-size: 0.8em;
}
} See the PR here: w3c/csswg-drafts#9920 |
Another addition we're proposing is a new boolean parameter Initial request: WICG/document-picture-in-picture#113 |
We're considering a new boolean parameter Initial request: WICG/document-picture-in-picture#120 |
We're also proposing allowing user gestures in the document picture-in-picture window to be usable in the opener window and vice versa. This makes it more ergonomic to use user-activation-gated APIs, since often event handlers in the document picture-in-picture window are actually run in the opener's context, so the opener's context needs access to the user gesture. This essentially makes the document picture-in-picture window act the same as a same-origin iframe inside the opener as far as user gesture propagation is concerned. |
For info, Spotify folks are using the Document Picture-in-Picture API for their Miniplayer. |
Adding a small change to copy the Document mode from the opener (e.g. quirks mode or non-quirks mode): PR: WICG/document-picture-in-picture#128 |
Request for position on an emerging web specification
Information about the spec
Design reviews and vendor positions
Anything else we need to know
We'd like to provide the ability for a site to open an always-on-top picture in picture window that supports arbitrary web content, rather than video only. The API proposed in the explainer is approximate, but well within the spirit of what we intend.
The text was updated successfully, but these errors were encountered: