- From: Aryeh Gregor <Simetrical+w3c@gmail.com>
- Date: Wed, 1 Jun 2011 16:09:53 -0400
2011/6/1 Tommy Widenflycht (?????) <tommyw at google.com>: > Hi Ian and the rest of the list, > > We are having a bit of discussion regarding the correct behaviour > when mandatory arguments are undefined, see this webkit bug for history: > https://bugs.webkit.org/show_bug.cgi?id=60622 > > Could we have some clarification for the below cases, please: > > var u; > var n = null; > > // Should throw since u is undefined or just abort? > navigator.webkitGetUserMedia("audio", u); > > // Will not throw but will abort. > navigator.webkitGetUserMedia("audio", n); > > // Should throw because we are expecting at least two arguments. > navigator.webkitGetUserMedia("audio"); This is defined by WebIDL, although somewhat complicatedly: http://dev.w3.org/2006/webapi/WebIDL/#es-operations The key is the two steps "Initialize S to the effective overload set . . ." and "Set S to the result of passing S and arg0..n?1 to the overload resolution algorithm." Basically, that means "Let S be the set of all the methods with this name on this object, then remove from the set any methods that can't accept the provided arguments." I *think* the overload resolution algorithm specifies that if too few or too many arguments are passed, the method is rejected. Then you fall through to "If S is empty, throw a TypeError", so that's apparently the specified behavior. But WebIDL always confuses me, so I wouldn't swear to it. But there's an open issue that says "Need to test how implementations actually behave when passed too few or too many arguments." So I wouldn't assume the standard is right. Maybe data would be useful on how different browsers behave here -- although I suspect that it will vary greatly from method to method. I can tell you from experience that Gecko throws if you pass fewer than three arguments to document.execCommand(). It makes sense to me -- if we want the API to not throw if the argument is omitted, why isn't the argument optional?
Received on Wednesday, 1 June 2011 13:09:53 UTC