On Wed, Jun 22, 2011 at 3:14 AM, David Levin <levin@chromium.org> wrote:
> On Tue, Jun 21, 2011 at 11:43 PM, Glenn Maynard <glenn@zewt.org> wrote:
>
>> On Wed, Jun 22, 2011 at 1:57 AM, David Levin <levin@chromium.org> wrote:
>>
>>> Let's say the call doesn't throw when given a type B that isn't
>>> transferrable.
>>> Let's also say some later changes the javascript code and uses B after
>>> the postMessage call.
>>> Everything work. No throw is done and B isn't "gutted" because it isn't
>>> transferrable.
>>>
>>
>> Throwing for unsupported objects will break common, reasonable uses,
>> making everyone jump hoops to use transfer. Not throwing will only break
>> code that seriously misuses the API, by listing objects for transfer and
>> then continuing to use the object.
>>
>
> Code always seriously misuses apis. See Raymond Chen's blog for numerous
> examples if you have any doubt (http://blogs.msdn.com/b/oldnewthing/).
>
You didn't respond to the rest of my mail, where I pointed out that the
misuse case will end up broken anyway as everyone will likely use a wrapper
to get the no-exception behavior. You'd have to, to support older browsers
which don't support transfer for as many types.
Making people use a helper function like that is just making them jump an
unnecessary hoop.
--
Glenn Maynard