>Actually, a lot of apps need access to the preview before starting to >capture (an image or video). Any app that wants to do realtime >transformations or effects will need the preview stream and then >display it themselves. Also, there are a class of apps that do >"pre-cording" so that you can capture fleeting events (think of being >at a kids sporting event). The apps are recording into a temporary >buffer so that when you hit the record/capture button they add or show >earlier images to the store. > >On Apr 13, 2012, at 8:19 AM, Serge Egelman wrote: > >> Again, this is a complete misunderstanding. We are not requiring a >> button to start preview. We are requiring a button to start >> *capture*. No current camera app, of which I am aware, gets access to >> the preview data before the user actually starts recording or snaps a >> photo. This would completely undermine any notion of consent. >> Serge
My severe apologies, but I'm going to add another layer of complication to this discussion: (tl;dr: We need to consider how these choices will impact WebRTC as well so we don't end up having to change them after a short time, or end up with very different user security models for Interactive and Capture/Record.) For WebRTC, we also need access to the camera and mics. We also have use cases where security warnings will rapidly become too painful for users to deal with (think a Skype-equivalent). And we need the api decided on to not be at odds with what we want to do there; the current Camera API (recording) cases are just part of the overall need and constraint. I'm not saying we have to have full support for WebRTC in the tree for Camera API to move forward, but we at least need to know that the UI/UX we design will be extendable for interactive cases without going back to square one. We need to be able to support *choosing* a camera (yes, devices have more than 1!), whether to use a camera, or multiple cameras at once. See the Media Capture Task Force use-cases for capturing - http://dvcs.w3.org/hg/dap/raw-file/tip/media-stream-capture/scenarios.html and http://dev.w3.org/2011/webrtc/editor/getusermedia.html WebRTC likewise will need to support multiple cameras and mics. The webrtc folk considered the "unstylable button" idea; we were very concerned with the potential security risks that approach engenders (clickjacking, etc) as well as it could seriously constrain the UI of apps. We've gravitated to some type of doorhanger that also functions as a preview and visual way to identify the correct camera. (Mic selection is a little trickier, though usually they're mostly tied to cameras.) Note also that there are two forms of Camera API for recording: the <input> tag form, which inherently limits the amount of interaction with the app in terms of preview, etc, and what the Media Capture Task Force is defining, navigator.getUserMedia(). As getUserMedia will supply a MediaStream when fully implemented, this allows for full preview and modification in the app, and all sorts of other things. The WebRTC group has talked about "installed" webapps in order to deal with Requester Fatigue, especially in things like Skype-equivalents, and have discussed leveraging the installed-app model for security. Note that at the full Skype-like level, the app can turn on the camera and mic, either anytime or at least in response to any user UI action/click. For WebRTC, we'll also want the user to be able to supply a picture or maybe a video in some cases in place of a camera stream. For security, the equivalency model is that if you were to install Skype, WebEx, etc, you've given total access to skype to camera, mics, probably the internet, etc (plus all your files, etc). So there's precedent that some level of installed webapp be given extended permissions. Lastly, there's an issue of access by the app to the raw data in the mediastream, especially for non-fully-trusted apps (installed or not). This is mostly an issue for interactive use, but recording cases can trigger it as well. The issues and some possible solutions (leveraging cross-origin controls) are detailed in my slides here: http://www.ietf.org/proceedings/interim/2012/01/31/rtcweb/slides/rtcweb-2.pdf My apologies for complicating the issue, but we need the solution for image/video capture to not box in the design for WebRTC. -- Randell Jesup, Mozilla Corp remove ".news" for personal email _______________________________________________ dev-security mailing list dev-security@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-security