Apps on other devices do get access to the preview to be able to do things with it like providing effects. The proposal to use WebGL shaders to modify the preview seems to ameliorate that issue in a way that other platforms aren't using (which is good). An API to open the preview that takes an optional shader would allow a preview to be shown and effects added without providing the preview data to the user. Overlays would be allowed (yes, a developer could completely hide the preview, but why bother when they can just not invoke the preview). And the magic button to allow access would keep the content from accessing the image stream before the user has "granted permission" using the magic button.
Thinking through some of the types of apps on other devices, this seems to be work for Instagram type cameras (shader provides effects). Looks like shaders can tesselate so apps (like PhotoBooth) showing multiples of the preview could work (not positive about this, as I'm not a WebGL Shader expert). Time machine camera apps (iOS Precorder) could work by having the user hit the magic button to start capturing multiple images and then the app could allow the user to select the images they wanted after capture has stopped. Skype type apps would get access to the video stream once the user hits the magic button (which could also be used to initiate the call) or the call could be initiated and then the magic button hit to say the user wanted to transmit video. The questions seem to me are 1) is the shader sufficient and secure enough for developer needs and 2) can we design a magic button that is secure and distinctive enough for developer needs and sufficiently distinctive to the user to let them know what they're allowing access to. I guess the final question is: can we generalize this for other APIs. I would prefer not to go through all the effort of making a secure camera without permissions prompts just to have everything else using permission prompts. That would make users feel insecure about the API(s) that use magic UI infrastructure. I'm guessing we could come up with magic UI for a class of permissions: microphone button, phone handset button for audio/voip, phone handset button for dialer, envelope button for email, globe or target button for geolocation, bluetooth icon button for bluetooth, usb icon button for usb, etc. I'm not sure about things like storage, permissions API, settings API, etc. Maybe those are handled more at the install/first launch stage and not at runtime. And background apps or services are a whole different question. -Jim Straus 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 > > Sent from my iPhone, hence the typos. > > On Apr 13, 2012, at 2:40, Ben Francis <b...@krellian.com> wrote: > >> CC jcarpenter >> >> No mobile camera app I know of requires the user to press a button to start >> an image preview prior to capturing an image, the "viewfinder" starts as >> soon as you open the app. This requirement would really break the UX of the >> current B2G camera app. Preventing UI elements being overlayed on top of the >> camera video stream is also a big limitation for UI design. >> >> For Open Web Apps, the user can grant access to the camera permission during >> installation, and/or with a geolocation style request at the time of >> accessing the camera (with an option to "always allow"). >> >> Ben >> >> On Thu, Apr 12, 2012 at 11:17 PM, Serge Egelman <se...@guanotronic.com> >> wrote: >> I think there's a huge misunderstanding here: >> >> We're not advocating getting rid of the preview screen. What we're >> advocating is that apps cannot receive camera data until the user has >> pressed the button (which is owned by the OS). >> >> In the current state of the world, some apps do not show preview screens. >> If this option is to remain, this is why the record button (and >> notification) need to have a trusted path. An alternative would be to make >> the preview screen the trusted UI (and therefore enforce minimum/maximum >> dimensions). However, we believe that this latter option would be more >> onerous on app developers. Those that wish to include preview windows are >> more than welcome to. >> >> serge >> >> On Thu, Apr 12, 2012 at 1:31 PM, Jason Miller <ja...@developit.ca> wrote: >> >>> I'm not opposed to a trusted UI approach, but I don't think it is possible >>> to provide adequate functionality using a "take picture" button. The >>> preview point is spot on. Think about the camera apps people use - preview >>> is a universal feature among them. >>> >>> One solution might be to bundle the preview option into the take picture >>> UI - what happens now? That's basically reducing the typical access >>> confirmation modal with a button that does the same thing, but doesn't have >>> an option to "always allow". >>> >>> As an example of another (existing) camera permissions flow, look at >>> Flash. They pop a settings dialog that can't be modified by the >>> application, and the user has an option to persist the granted access. >>> Taking that one step further, on Apple laptops there is a *hardware* >>> indicator for camera access. That is something users trust. >>> >>> Also notice that there really aren't any popular systems that are designed >>> to be secure from the ground up. Users want an experience that works and >>> uses their device to its full potential *first*, and worry about security >>> after that need has been met. For examples of this, look to Android's SD >>> security or iOS's lazy address book access control (or any iOS API access >>> for that matter). When security comes at the price of usefulness, you >>> might want to think about how much security will matter if users return >>> their devices in favor of a phone that has expected features like a camera >>> viewfinder. >>> >>> I don't mean to specifically knock your point, however. If there was a >>> way to use a trusted UI approach while still allowing for the features >>> developers need now (and to a reasonable degree in the future), then surely >>> that's the ideal path. I just have yet to see a workable concept. >>> >>> At the very least, the typical permissions based approach gives the users >>> who genuinely care about their security rather convenient tools to manage >>> it. Reading comments on the Android market does seem to confirm that this >>> group of users actively polices their apps to ensure they aren't being >>> duped. >>> >>> - Jason >>> >>> >>> Jason Miller >>> 519.872.0797 // developIT <http://developit.ca/> // Jason Miller >>> Design<http://jasonmillerdesign.com/> >>> *Developer of amoebaOS <https://amoebaos.com/>, >>> Shutterborg<http://shutterb.org/> & >>> more >>> >>> * >>> >>> >>> >> >> >> -- >> /* >> I am Serge Egelman and I approve this message. >> >> */ >> _______________________________________________ >> dev-b2g mailing list >> dev-...@lists.mozilla.org >> https://lists.mozilla.org/listinfo/dev-b2g >> >> >> >> -- >> Ben Francis >> http://tola.me.uk > _______________________________________________ > dev-webapi mailing list > dev-web...@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-webapi _______________________________________________ dev-security mailing list dev-security@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-security