- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Wed, 16 Oct 2013 15:22:01 -0400
- To: Harald Alvestrand <harald@alvestrand.no>, public-media-capture@w3.org
- Message-ID: <525EE759.1080007@mozilla.com>
On 10/16/13 6:42 AM, Harald Alvestrand wrote:
> On 10/15/2013 08:28 PM, Jan-Ivar Bruaroey wrote:
>>
>> 1. Why not THROW on unsupported mandatory constraints? Our generated
>> webidl bindings already throw for us on various syntax and type
>> errors, and this way, should webidl ever grow, say, an extended
>> attribute feature that make a dictionary throw on unknown
>> entries, then we could use it out of the box (right now they're
>> ignored, which is a problem - see below).
>>
>
> I believe a dictionary is designed to allow unknown members by default
> (I could be wrong).
> In our implementation, the place that checks whether constraints are
> supported or not is a couple of process switches away from the place
> where the IDL checks get done, so it's convenient for us to use the
> error callback.
You use callbacks for (web?)IDL checks?
>> 1. Why not allow multiple keys in each object in the optional array?
>> * When implementing this, it became obvious pretty soon that
>> reusing the sameapply() function for optional constraint
>> entries as for the mandatory constraints was
>> desirable.There's really no cost to implementation of doing
>> this. In fact, I found there to be a high cost of
>> implementation to consider anything else. That's because it
>> would need to be spec'ed if you ask webidl guys. These guys
>> are extremely pedantic about processing models in JS (for
>> good reason: two ways of doing things in JS are never the
>> same, which means side-effects and security issues w.r.t.
>> malignant objects must be nailed down). So reusing the
>> established dictionary processing model here seems like a win.
>>
>> * Here's how I implement it today in webidl:
>> o // MediaTrackConstraint = single-property-subset of
>> MediaTrackConstraintSet
>> // Implemented as full set. Test Object.keys(pair).length
>> == 1
>> typedef MediaTrackConstraintSet MediaTrackConstraint;
>>
>
> The only reason I remember for not having multiple keys in each object
> in the optional array is that if you have more than one constraint in
> an optional array element, it's more confusing if one of them can be
> satisfied and the other one can't. Does the one that can be satisfied
> get ignored because of the failing one, or is it one applied and one
> ignored?
In my mind, they'd both be ignored since they're specified together, but
I appreciate how it might lead to pilot-error.
---
I hesitate to ask this late, but did anyone ever consider an alternative to:
{ mandatory: { a, b }, optional: [ { c }, { d } ] }
like this:
[ { a, b, c, d }, { a, b, c }, { a, b } ]
i.e. (a AND b AND c AND d) OR (a AND b AND c) OR (a AND b)
The web developer specifies "I want this set, or if I can't have exactly
that, then I want this other set, or if I can't have exactly that etc."
- This seems a lot clearer to me than our present optional-array-logic.
.: Jan-Ivar :.
Received on Wednesday, 16 October 2013 19:22:29 UTC