<br><br><div class="gmail_quote">On Thu, Jun 25, 2009 at 2:33 PM, Maciej Stachowiak <span dir="ltr">&lt;<a href="mailto:mjs@apple.com">mjs@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Jun 25, 2009, at 2:27 PM, Drew Wilson wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
(resending to a wider audience - apologies to those of you who receive this twice)<br>
Hi all,<br>
<br>
The HTML5 worker spec has changed significantly from its earlier incarnations, in that it&#39;s no longer externally visible whether a given worker thread has shut down or not (there are no more close events surfaced on the Worker).<br>

</blockquote>
<br></div>
What&#39;s the motivation for this particular change?<div class="im"></div></blockquote><div><br></div><div>Primarily to avoid requiring specific GC behavior in the HTML5 spec. If you expose when a worker has shut down, then for compatibility reasons you need to try to make all user agents behave identically wrt garbage collection and reachability, which puts an unnecessary burden on implementors. We&#39;ve also removed things like MessagePort.active as well as throwing exceptions if you try to post a MessagePort that&#39;s been closed, for similar reasons. All of this is motivated by the fact that it&#39;s prohibitively difficult to determine cross-thread/cross-process reachability.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This means that there&#39;s not currently a good way to write tests to verify that workers are actually shutting down when they are unreachable/idle. Do you guys have any ideas about how to address this?<br>
</blockquote>
<br></div>
One obvious way would be to add a nonstandard equivalent to the &quot;close&quot; event (&quot;webkitClose&quot;). The downside is that this would be exposed to Web content.<div class="im"></div></blockquote><div><br></div>
<div>Exactly, which I&#39;d like to avoid for the reasons mentioned above.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
One idea I had would be to expose a WorkerController for layout tests, similar to GCController - the WorkerController could expose a numWorkers attribute which is incremented/decremented as worker threads startup/exit. I haven&#39;t started looking into how this would be done, but I figured I&#39;d ask you guys if this was a good approach or if there&#39;s a cleaner way to test these cases.<br>

</blockquote>
<br></div>
That&#39;s also possible, the downside of this approach would be that the tests wouldn&#39;t work in a normal browser that doesn&#39;t have the special DumpRenderTree APIs.</blockquote><div><br></div><div>Indeed. That feels kind of lame, but the current alternative (no tests at all) seems bad too.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br><font color="#888888">
<br>
 - Maciej<br>
<br>
</font></blockquote></div><br>