- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Fri, 18 Oct 2013 19:38:49 -0400
- To: Travis Leithead <travis.leithead@microsoft.com>, Harald Alvestrand <harald@alvestrand.no>, "public-media-capture@w3.org" <public-media-capture@w3.org>
- Message-ID: <5261C689.4070306@mozilla.com>
So we can't add more mandatory constraints over time?
Define "not to support any random property". Fail or silently succeed?
.: Jan-Ivar :.
On 10/17/13 4:22 PM, Travis Leithead wrote:
>
> WebIDL dictionary processing only knows how to deal with known
> dictionary members (see
> http://dev.w3.org/2006/webapi/WebIDL/#es-dictionary). Dictionaries are
> not generic property maps or sets.
>
> In getUserMedia, the intention is to have a set of well-defined
> mandatory constraints (as defined by dictionaries in the spec--or
> inherited/partial dictionaries defined formerly elsewhere)---not to
> support any random property key that is placed on the dictionary
> object by user code.
>
> *From:*Jan-Ivar Bruaroey [mailto:jib@mozilla.com]
> *Sent:* Wednesday, October 16, 2013 12:40 PM
> *To:* Harald Alvestrand; public-media-capture@w3.org
> *Subject:* Re: gUM constraints webidl implementer feedback
>
> On 10/16/13 6:42 AM, Harald Alvestrand wrote:
>
> On 10/15/2013 08:28 PM, Jan-Ivar Bruaroey wrote:
>
> 1. Mandatory constraints aren't implementable as webidl
> dictionaries.
>
> * We're supposed to detect unknown mandatory constraints
> and fail on them, but webidl dictionaries /silently
> ignore/ unknown keys!
>
>
> I thought this was a feature... don't you get to see the ignored
> keys in the engine?
>
>
> No, our webidl-compiler-generated bindings create a new dictionary
> from default values and then interrogates known members it finds in
> the provided content JS object through inspection. This is for
> security reasons, as content JS objects may be toxic. - Unknown
> members have unknown types, so including them safely becomes tricky.
>
>
> 1.
>
> * To work around this problem, I had to alter the API to
> take the mandatory member as a plain object (which
> makes our webidl security guys' neck-hair stand up,
> but it's ok), like this:
>
> o dictionary MediaTrackConstraints {
> object mandatory; // so we can see unknown +
> unsupported constraints
> sequence<MediaTrackConstraint> _optional;
> };
>
> * I then convert it internally to this structure after
> scanning for unknown keys, which should be safe:
>
> o dictionary MediaTrackConstraintsInternal {
> MediaTrackConstraintSet mandatory; // holds
> only supported constraints
> sequence<MediaTrackConstraint> _optional;
> };
>
>
> In lieu of alternative solutions to number 6, I'd like to see
> the spec be explicit about what's needed to implement this as
> it stands.
>
>
> Seems to me we have a differing understanding of how the engine
> should deal with dictionaries.
>
>
> I agree. Maybe the webidl group can help clarify?
>
> .: Jan-Ivar :.
>
--
.: Jan-Ivar :.
Received on Friday, 18 October 2013 23:39:18 UTC