#309: Screen Capture API

Visit on Github.

Opened Oct 9, 2018

Bonjour TAG,

I'm requesting a TAG review of:

Further details (optional): We are planning to launch with video capture capabilities first. Audio capture functionality is lacking in spec and still discussed.

You should also know that...

[please tell us anything you think is relevant to this review]

We'd prefer the TAG provide feedback as (please select one):

  • open issues in our Github repo for each point of feedback
  • open a single issue in our Github repo for the entire review
  • leave review feedback as a comment in this issue and @-notify [uysalere]

Please preview the issue and check that the links work before submitting

For background, see our explanation of how to write a good explainer.

Discussions

Comment by @torgo Oct 30, 2018 (See Github)

On your explainer, your answer to security & privacy questionnaire issue 1 - you have said no, I would say hella yes. The spec itself does have considerable space devoted to privacy related features. However it lacks a privacy considerations section which could help implementers take into account privacy features. @lknik may with to further comment.

Comment by @kenchris Oct 31, 2018 (See Github)

Is aggregation all up to the user agent? Meaning it might and might not be supported?

Comment by @torgo Oct 31, 2018 (See Github)

We think you need an explainer written from a user needs perspective. We have written a helpful document here with our advice on what should be in a good explainer. Please take a look at this. Thanks! (pinging @uysalere)

Comment by @ErikHellman Oct 31, 2018 (See Github)

I have just (yesterday) updated the demo on the WebRTC samples page so that it shows a more relevant example. Please have a look.

Currently, this (i.e., navigator.getDisplayMedia()) is only supported in Chrome if you enable Experimental Web Platform features. Firefox currently implements this through navigator.mediaDevices.getUserMedia() by passing in a MediaStreamConstraint matching the screen. This is a potential privacy issue, as this is the same API that opens the camera (thanks @kenchris for noticing). This is how I've done it in the sample at the moment:

if (navigator.getDisplayMedia) {
  return navigator.getDisplayMedia({video: true});
} else {
  return navigator.mediaDevices.getUserMedia({video: {mediaSource: 'screen'}});
}

If the code above would run on a browser that doesn't support screen capturing (navigator.getDisplayMedia missing and no support for mediaSource constraint), the default video camera will be opened instead (because the value for the video key is truthy).

I'm thinking of dropping the Firefox support in the sample and only allow getDisplayMedia() for that reason.

Comment by @kenchris Oct 31, 2018 (See Github)

So what you are saying @ErikHellman is that following the newly specced getDisplayMedia is an improvement to privacy (it will fail instead of record from your webcam instead of from your display) in comparison to what some (eg. Firefox) implements today?

Comment by @torgo May 22, 2019 (See Github)

Hi @uysalere Can you let us know what the current status of this is and how TAG feedback can be most useful? Are you still looking for a review of the spec itself (I note a draft from 4 March 2019)? If so can you advise what the delta is and what specifically you need additional feedback on? Also we note a couple of things : 1. the explainer is still missing 2. the design doc and the answer to the security & privacy assessment still exist only as google docs. Also we had some comments on the security & privacy assessment above which don't appear to have been addressed. The doc you've linked us to doesn't seem to be for the spec itself but rather related to Chromium's implementation of the spec - can you also clarify what question you are asking us?

If it's no longer relevant then we'd like to close this issue and revisit when a new review is pertinent.

Comment by @uysalere May 29, 2019 (See Github)

I am no longer working on this actively. Best to close the issue and revisit with active participants. I am really sorry for my late replies.

Comment by @alvestrand Aug 1, 2019 (See Github)

Revisiting after too long .... looking to replace editors.