W3C home > Mailing lists > Public > public-media-capture@w3.org > November 2013

RE: Why ignoring unknown mandatory constraints is not stupid

From: Jim Barnett <Jim.Barnett@genesyslab.com>
Date: Thu, 14 Nov 2013 16:54:53 +0000
To: Jan-Ivar Bruaroey <jib@mozilla.com>, "public-media-capture@w3.org" <public-media-capture@w3.org>
Message-ID: <57A15FAF9E58F841B2B1651FFE16D2811ECFEE@GENSJZMBX03.msg.int.genesyslab.com>
I think that there may be a slightly different way to look at this that won't give the jack-booted mandatory police (of which I am one)  heartburn:  the user makes the final decision and can override mandatory constraints, though he will be warned that he is doing so.  If no camera satisfies the mandatory constraints, the permission window still pops up saying "None of your cameras meet the app's requirements, would you like to try anyway?" or something like that.  If he agrees, the camera would then be returned to the app with some signal that it doesn't meet the mandatory requirements (there's no information leakage there, because the app now has full access to the camera.)

I don't view this as changing the nature of mandatory constraints, so much as stating that the user always has the final say. The app can still examine the constraints that failed and pop up a "sorry you need a better camera" message.   

- Jim

-----Original Message-----
From: Jan-Ivar Bruaroey [mailto:jib@mozilla.com] 
Sent: Thursday, November 14, 2013 5:36 AM
To: public-media-capture@w3.org
Subject: Why ignoring unknown mandatory constraints is not stupid

Someone mentioned that constraints are about needs and wants. I love that, because it's as descriptive of the application as it is prescriptive of the browser and its user (unlike those other unilateral terms).

It's getUserMedia(), not getBrowserMedia(). The browser negotiates between the app and the user, not the app and the machine.

But enough hippie stuff...

WHICH WAY GIVES YOU ACCESS TO THE USER'S NOSEBLEED5000 3D CAMERA MOST OFTEN?

A) getUserMedia({ mandatory: { 3D: true } }, success, fail);-> Firefox
28: ConstraintNotSatisfiedError
Firefox 29: 3D

B) getUserMedia({ optional: [{ 3D: true }]}, success, fail); -> Firefox
28: something
      Firefox 29: 3D

It's B, because the user wants this to work, and will try to pick the right camera when his browser and/or camera driver are clueless.

Reaction card (check one):

   [  ] But he may pick the wrong thing!! Burn! 404!
   [  ] Let him play. The goal is not to control, but to make the experience work seamlessly or work.

So why not:

C) getUserMedia({ mandatory: { 3D: true } }, success, fail);-> Firefox
28: something
Firefox 29: 3D

Because Firefox 28 doesn't know it's NOT a 3D camera...

C is better than B, because it wont list irrelevant cameras in Firefox 29.

.: Jan-Ivar :.
Received on Thursday, 14 November 2013 16:55:20 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:24:43 UTC