Re: Proposal to allow Transferables to be used in initMessageEvent

2011-08-13 Thread Ian Hickson
On Sat, 13 Aug 2011, Anne van Kesteren wrote:
>
> On Tue, 09 Aug 2011 19:20:58 +0200, Luke Zarko  wrote:
> > void initMessageEvent(in DOMString typeArg, in boolean canBubbleArg, in
> > boolean cancelableArg, in any dataArg, in DOMString originArg, in DOMString
> > lastEventIdArg, in WindowProxy? sourceArg, in sequence
> > transferablesArg);
> 
> Can we still remove initMessageEvent in favor of event constructors?

That's still my plan actually. Been busy dealing with other bugs though.

-- 
Ian Hickson   U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



Re: Proposal to allow Transferables to be used in initMessageEvent

2011-08-13 Thread Anne van Kesteren

On Tue, 09 Aug 2011 19:20:58 +0200, Luke Zarko  wrote:

void initMessageEvent(in DOMString typeArg, in boolean canBubbleArg, in
boolean cancelableArg, in any dataArg, in DOMString originArg, in  
DOMString

lastEventIdArg, in WindowProxy? sourceArg, in sequence
transferablesArg);


Can we still remove initMessageEvent in favor of event constructors?


--
Anne van Kesteren
http://annevankesteren.nl/



Re: Proposal to allow Transferables to be used in initMessageEvent

2011-08-11 Thread Ian Hickson
On Tue, 9 Aug 2011, Luke Zarko wrote:
>
> I came across this while implementing support for the new 
> Transferable[1] interface for Chromium. initMessageEvent is defined[2] 
> as:
> 
>   void initMessageEvent(in DOMString typeArg, in boolean canBubbleArg, 
> in boolean cancelableArg, in any dataArg, in DOMString originArg, in 
> DOMString lastEventIdArg, in WindowProxy? sourceArg, in 
> sequence portsArg);
> 
> However, postMessage is usually defined to take a sequence 
> [3]:
> 
>   void postMessage(in any message, in optional sequence 
> transfer);
> 
> I suggest changing initMessageEvent to permit arbitrary Transferables:

While it is possible for postMessage()'s second argument to take non-port 
Transferables (in particular ArrayBuffers), it's not possible for the 
generated event to contain those objects in the event.ports array, so 
there's no reason for the constructor to support that.


> Without this change, it is not possible for a JavaScript author to 
> directly construct a MessageEvent with a dataArg that contains 
> Transferable objects (other than MessagePorts).

Why not? The dataArg has type "any".

-- 
Ian Hickson   U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



Proposal to allow Transferables to be used in initMessageEvent

2011-08-11 Thread Luke Zarko
I came across this while implementing support for the new Transferable[1]
interface for Chromium. initMessageEvent is defined[2] as:

  void initMessageEvent(in DOMString typeArg, in boolean canBubbleArg, in
boolean cancelableArg, in any dataArg, in DOMString originArg, in DOMString
lastEventIdArg, in WindowProxy? sourceArg, in sequence
portsArg);

However, postMessage is usually defined to take a sequence
[3]:

  void postMessage(in any message, in optional sequence
transfer);

I suggest changing initMessageEvent to permit arbitrary Transferables:

  void initMessageEvent(in DOMString typeArg, in boolean canBubbleArg, in
boolean cancelableArg, in any dataArg, in DOMString originArg, in DOMString
lastEventIdArg, in WindowProxy? sourceArg, in sequence
transferablesArg);

Without this change, it is not possible for a JavaScript author to directly
construct a MessageEvent with a dataArg that contains Transferable objects
(other than MessagePorts).

This does not imply that the ports property of MessageEvent should change.
It should behave just like the ports array for MessageEvents generated by
postMessage: the ports array contains all MessagePorts sent in the transfer
list in the same relative order.

Please let me know what you think!

  Luke

[1]
http://www.whatwg.org/specs/web-apps/current-work/complete/common-dom-interfaces.html#transferable-objects
[2]
http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#event-definitions-1
[3]
http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#message-ports