- From: cowwoc <cowwoc@bbs.darktech.org>
- Date: Fri, 06 Dec 2013 14:59:45 -0500
- To: Jan-Ivar Bruaroey <jib@mozilla.com>, public-media-capture@w3.org
- Message-ID: <52A22CB1.3090106@bbs.darktech.org>
On 06/12/2013 2:40 PM, Jan-Ivar Bruaroey wrote:
> The lesson is that people don't think twice about using mandatory,
> probably because constraints are too complicated. They test until it
> works, and expect browsers to "do the right thing" from there. You and
> I disagree about what "the right thing" is for unknowns. I argue the
> current default, while logically sound, is too harsh, and
> un-webAPI-like. I further argue that only webdevs like you who care
> about unknowns, will call getKnownConstraints(), and even then
> probably only if you have a strong incentive to (you dislike the
> default). Defaults for dummies.
>
> Since you asked, let me try to imagine another example:
>
> * Someone adds an "auto-night-detection" constraint to IANA (or
> wherever), and Chrome Canary implements it.
> * Sometime later (I'm not saying when) someone adds { mandatory: {
> auto-night-detection: true } } to their existing app (I'm not
> talking about people who add optional).
>
> Question 1: when is this ok to do?
>
> * Now their app stops working on anything but Chrome Canary. How is
> this useful?
> * Say for argument's sake that 50% of web-cams out there already
> have auto-night-detection built in as an inherent property that
> doesn't even need to be turned on.
> * Now the UA is blocking 49% of legitimate users at nighttime, and
> everyone during daytime (user can't tell the difference).
>
Which gets back to my point that mandatory constrains are stupid.
Look... either mandatory really means mandatory or it doesn't. When a
developer lists auto-night-detection under mandatory constraints it
means they *absolutely* need it. By changing the default, you're saying
mandatory means: *absolutely* need it, unless it's unknown. That's not
mandatory :)
Let's just cut the BS and replace mandatory constraints with optional
priority-ordered constrains and be done with it. This will yield the
behavior you're asking for.
> I don't want the UA to do that. You, the app can do that.
>
> As I've stated before, this only applies to inherent properties, since
> the minute you try to control a camera, you learn from
> getCapabilities() if it's not supported.
I get the feeling that we're saying the same thing. Here is what I have
in mind, let me know where our views diverge. I think apps should do this:
var devices = getDevices(); // User gets prompted
var device;
var capabilities;
for (var i = 0; i < devices.length; ++i)
{
var d = devices[i];
var c = device.capabilities;
if (c.width > 800 && c.height > 600)
{
device = d;
capabilities = c;
break;
}
});
if (device)
getUserMedia(device, capabilities, onSuccess, onFailure); // User
gets prompted
Gili
Received on Friday, 6 December 2013 20:00:16 UTC