- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Thu, 12 Dec 2013 16:07:42 -0500
- To: cowwoc <cowwoc@bbs.darktech.org>, public-media-capture@w3.org
On 12/12/13 1:00 PM, cowwoc wrote:
> On 12/12/2013 12:15 PM, Jan-Ivar Bruaroey wrote:
>> On 12/12/13 10:57 AM, Jan-Ivar Bruaroey wrote:
>>>> I'd like to preserve two properties of our current spec:
>>>>
>>>> - That we can get an error on unsupported constraint names
>>>> - That we can get automatic conversion from objects specified in
>>>> Javascript as { name : value }
>>>>
>>>> As long as I get those two properties, I don't care what the name
>>>> of the construct is.
>>>
>>> Your construct is object.
>>
>> While I continue to find our default behavior misguided, I'd be
>> remiss not to mention a suggestion I heard that it might be doable to
>> argue for a [ThrowOnUnknownKeys] extended attribute for dictionaries.
>> This means we'd get an error thrown instead of an error callback in
>> the case of unknown keys. Would that be acceptable?
>>
>> Separately, we could try arguing for a
>> [ConvertUnknownEnumerationValuesTo="other"] extended attribute to
>> solve webidl enums throwing in optional.
>
> If you are implying the code should throw an exception synchronously,
> instead of returning it asynchronously through the error callback then
> I'm against that proposal.
I think I described the behavior explicitly, not implying it, but OK.
> I'm looking at this through a "Promises" lens which says that all
> errors should be returned through the Promise (or in our case, the
> callback). I don't see the benefit of asking developers to check for
> errors in two different places.
FWIW it is not the case that there wont be exceptions. The spec is
expressed largely in WebIDL, which implies lots of argument
validity-checking and type-checking using exceptions. Try passing a
number in place of a required object argument for instance, or (as I
pointed out already) a facingMode constraint you never heard of,
mandatory or optional.
I opened with saying I'm opposed to fail-always on unknown mandatory
constraints, but if we want that behavior, then arguably, treating an
unknown-to-the-UA object-property as a type-error doesn't seem totally
unreasonable to me. After all, the app is trying to use a feature the
browser doesn't understand. This would be a way to get the fail-always
behavior others here desire and still use dictionaries. It is a compromise.
I like that this at least differentiates between "the browser cannot
tell" and "the camera for-sure does not have the feature", which are not
the same thing, and something we seem to conflate whenever we talk about
this (ignoring the false-negative problem's existence).
As to promises, I believe they handle exceptions. From
http://blog.parse.com/2013/01/29/whats-so-great-about-javascript-promises :
"Generally, developers consider a failing promise to be the
asynchronous equivalent to throwing an exception. In fact, if a callback
passed to 'then' throws an error, the promise returned will fail with
that error."
> Gili
.: Jan-Ivar :.
Received on Thursday, 12 December 2013 21:08:11 UTC