[whatwg] onclose events for MessagePort

Simon Pieters simonp at opera.com
Thu Oct 10 01:48:15 PDT 2013


On Thu, 10 Oct 2013 08:58:52 +0200, Jonas Sicking <jonas at sicking.cc> wrote:

> On Wed, Oct 9, 2013 at 3:06 PM, Ehsan Akhgari <ehsan at mozilla.com> wrote:
>> OK, so I gave this some thought and I and Olli managed to convince each
>> other that finding a solution to the problem of dispatching a generic
>> onclose event is impossible since there is no deterministic point in  
>> time
>> before a worker is GCed when we know that it will be GCed soon.
>>
>> So with that behind us, how about we add an explicit event to be fired  
>> when
>> the other side of a message channel gets destroyed in a catastrophic way
>> which is not observable from the web content code running on that side,  
>> such
>> as a process crash for example?  The basic idea behind why this more
>> restricted proposal is useful is that barring the catastrophic failure  
>> case,
>> applications can detect the other cases why further communication may be
>> impossible (such as navigating away from the page) themselves and  
>> notify the
>> other side of the channel as desired -- it is only the catastrophic
>> termination case which is not detectable from content script.
>>
>> How about we add another event named "channeldropped" (pending  
>> bikeshedding)
>> which is fired on a message port if the owner global context of its
>> entangled port is terminated in a catastrophic way?  Needless to say,  
>> the
>> event will be queued asynchronously with the termination of the other  
>> side,
>> and it will not be affected by garbage collection.
>
> I could see the GC case not being solvable.
>
> But is there a reason that we couldn't also fire the event if the
> other side is forcefully terminated through a navigation or a
> Worker.terminate() call?

Does navigation disentangle ports? I don't think it necessarily does, at  
least per spec.

-- 
Simon Pieters
Opera Software



More information about the whatwg mailing list