Giter Club home page Giter Club logo

Comments (3)

youennf avatar youennf commented on July 19, 2024

It is appealing to enable reuse of the same mechanism for both PiP and media capture handle.
The main difference is that PiP is a trusted source of actions (otherwise the web page would not register callbacks) but another web page might not be as trusted.
It seems reasonable that a web page would like to differentiate these two sources of actions.

If we narrow down to pages being paired through capture handle (capturer and capturee), we can think of the following approach:

  1. Capturer API is restricted to a reduced set of actions: play, pause, nexttrack, nextslide make sense, hangup/togglecamera/togglemicrophone do not make a lot of sense.
  2. Capturer gains access to this API as a result of a successful getDisplayMedia call that can list capturee supported actions and trigger actions on capturee. API is available as long as capturer getDisplayMedia track is live/not muted.
  3. Capturee has a way to differentiate browser trusted actions from page potentially-trusted actions.

There are various ways to implement 3, one important decision point is whether it should be opt-in or whether opt-out is deemed feasible.
The opt-out approach allows capturer to trigger actions on today's web pages that register MediaSession handlers with PiP window in mind only. This has pros and cons.
The opt-out approach could be based on capturer's origin, for instance by adding an optional origin member to MediaSessionActionDetails, something like:

partial dictionary MediaSessionActionDetails {
   USVString origin;
}

A consequence of this API is that capturer would expose its origin when triggering an action.

Based on this origin member field, an opt-in approach could be implemented by extending MediaSession.setActionHandler, for instance by passing an options dictionary as third parameter, this dictionary taking a boolean, say allowCaptureHandleAction, false by default.

partial dictionary MediaSessionActionHandlerOptions {
  boolean allowCaptureHandleAction = false;
}
partial interface MediaSession {
   undefined setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler, MediaSessionActionHandlerOptions options);
}

from mediasession.

chrisn avatar chrisn commented on July 19, 2024

In the 23 May 2022 Media WG / WebRTC joint meeting, @jernoble suggested the idea that would allow a capturing page to delegate Media Session actions to a capturee page, and the UA would manage passing the actions to the capturee.

from mediasession.

steimelchrome avatar steimelchrome commented on July 19, 2024

Delegating Media Session actions to another page seems fine. Allowing capturing pages to trigger actions on another page though would definitely at least require an opt-in approach (so that existing pages aren't suddenly taking non-UA actions without their knowledge/consent)

from mediasession.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.