Re: Shared workers - use .source instead of .ports[0] ?

I'll agree that having to use ports[0] to access the MessagePort in a
connect event has always felt a bit like an API wart. However, I don't
entirely recall why we wanted to have the connect event use the
MessageEvent interface. So I'd be uncomfortable with changing connect event
to not match that interface without understanding why we made those
interfaces match in the first place (perhaps Ian can chime in here).

I'll also note that the MessageEvent for cross-document messaging has a
|ports| attribute, so I'm not certain why removing this attribute on the
connect event "makes it closer to the [cross-document messaging] API" - can
you clarify your reasoning here? Also, since MessagePort is not a
WindowProxy, I'm not sure we want to encourage developers to treat them as
the same by putting them both as the |source| attribute in MessageEvents in
different contexts, especially since the postMessage() APIs don't precisely
match.

-atw

On Tue, Apr 10, 2012 at 5:27 AM, Simon Pieters <simonp@opera.com> wrote:

> On Tue, 10 Apr 2012 14:01:47 +0200, Jarred Nicholls <jarred@webkit.org>
> wrote:
>
>  On Tue, Apr 10, 2012 at 1:20 AM, Simon Pieters <simonp@opera.com> wrote:
>>
>>  On Wed, 04 Apr 2012 18:37:46 +0200, Jonas Sicking <jonas@sicking.cc>
>>> wrote:
>>>
>>>  Sounds great to me. The ports attribute is basically useless except in
>>>
>>>> this
>>>> one instance since ports are these days expose as part of structured
>>>> clones.
>>>>
>>>> Avoiding using it in this arguably weird way in this one instance seems
>>>> like a win to me.
>>>>
>>>>
>>> I'd like to have an opinion from WebKit and Microsoft about this
>>> proposal.
>>> Can someone comment or cc relevant people, please?
>>>
>>>
>> FWIW this to me seems like a good improvement to the intuitiveness.
>>
>
> OK. To make things clear, are you OK with making this change in WebKit?
>
>  Since
>> a MessageEvent interface is being used, qualifying that *source*
>> WindowProxy
>>
>> is populated is all that's needed?
>>
>
> It wouldn't be a WindowProxy, but a port. I'd also make .ports null. The
> IDL for MessageEvent's source member would need to change type from
> WindowProxy? to object?.
>
>
>
>>
>>> cheers
>>>
>>>
>>>  / Jonas
>>>
>>>>
>>>> On Wednesday, April 4, 2012, Simon Pieters wrote:
>>>>
>>>>  Hi,
>>>>
>>>>>
>>>>> In Opera Extensions we use something that resembles shared workers. One
>>>>> modification is that the 'connect' event's source port is exposed in
>>>>> .source instead of in .ports[0], to make it closer to the API for
>>>>> cross-document messaging. Maybe we should make this change to Shared
>>>>> Workers as well.
>>>>>
>>>>> I think shared workers hasn't seen wide adoption yet, so maybe changes
>>>>> like this are still possible.
>>>>>
>>>>> What do people think?
>>>>>
>>>>> currently:
>>>>> onconnect = function(e) { e.ports[0].postMessage('pong') }
>>>>>
>>>>> proposed change:
>>>>> onconnect = function(e) { e.source.postMessage('pong') }
>>>>>
>>>>> --
>>>>> Simon Pieters
>>>>> Opera Software
>>>>>
>>>>>
>>>>>
>>>>>
>>> --
>>> Simon Pieters
>>> Opera Software
>>>
>>>
>>>
>
> --
> Simon Pieters
> Opera Software
>
>

Received on Tuesday, 10 April 2012 17:34:25 UTC