- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 16 Jul 2008 01:40:01 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/workers In directory hutz:/tmp/cvs-serv24048 Modified Files: Overview.html Log Message: First draft of the 'inside workers' section. (whatwg r5) Index: Overview.html =================================================================== RCS file: /sources/public/html5/workers/Overview.html,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Overview.html 10 Jul 2008 01:10:39 -0000 1.3 +++ Overview.html 16 Jul 2008 01:39:59 -0000 1.4 @@ -19,7 +19,7 @@ specification for HTML5</h2> <h2 class="no-num no-toc" id=editors><!-- "W3C Working Draft" --> Editor's - Draft <!--ZZZ-->10 July 2008</h2> + Draft <!--ZZZ-->16 July 2008</h2> <dl><!-- ZZZ: update the month/day <dt>This Version:</dt> @@ -144,7 +144,7 @@ <p>The W3C <a href="http://www.w3.org/html/wg/">HTML Working Group</a> is the W3C working group responsible for this specification's progress along - the W3C Recommendation track. <!--ZZZ:--> This specification is the 10 + the W3C Recommendation track. <!--ZZZ:--> This specification is the 16 July 2008 <!--ZZZ "Working Draft"-->Editor's Draft. <!--:ZZZ--></p> <!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --> <!-- relationship to other work (required) --> @@ -181,31 +181,35 @@ <ul class=toc> <li><a href="#introduction"><span class=secno>1. </span>Introduction</a> <ul class=toc> - <li><a href="#background"><span class=secno>1.1 </span>Background</a> + <li><a href="#tutorial"><span class=secno>1.1 </span>Tutorial</a> <li><a href="#requirements"><span class=secno>1.2 </span>Requirements</a> - <li><a href="#relationships"><span class=secno>1.3 </span>Relationships - to other specifications</a> - <ul class=toc> - <li><a href="#relationship"><span class=secno>1.3.1 - </span>Relationship to HTML5</a> - - <li><a href="#relationship0"><span class=secno>1.3.2 - </span>Relationship to ECMAScript</a> - </ul> - - <li><a href="#conformance"><span class=secno>1.4 </span>Conformance + <li><a href="#conformance"><span class=secno>1.3 </span>Conformance requirements</a> <ul class=toc> - <li><a href="#dependencies"><span class=secno>1.4.1 + <li><a href="#dependencies"><span class=secno>1.3.1 </span>Dependencies</a> </ul> - <li><a href="#terminology"><span class=secno>1.5 </span>Terminology</a> + <li><a href="#terminology"><span class=secno>1.4 </span>Terminology</a> </ul> + <li><a href="#inside"><span class=secno>2. </span>Inside workers</a> + <ul class=toc> + <li><a href="#the-windowworker"><span class=secno>2.1 </span>The + <code>WindowWorker</code> interface</a> + + <li><a href="#the-queue"><span class=secno>2.2 </span>The queue of + events</a> + + <li><a href="#processing"><span class=secno>2.3 </span>Processing + model</a> + </ul> + + <li><a href="#creating"><span class=secno>3. </span>Creating workers</a> + <li class=no-num><a href="#references">References</a> <li class=no-num><a href="#acknowledgements">Acknowledgements</a> @@ -216,10 +220,12 @@ <h2 id=introduction><span class=secno>1. </span>Introduction</h2> - <h3 id=background><span class=secno>1.1 </span>Background</h3> + <h3 id=tutorial><span class=secno>1.1 </span>Tutorial</h3> <p><em>This section is non-normative.</em> + <p class=big-issue>This section is missing. + <h3 id=requirements><span class=secno>1.2 </span>Requirements</h3> <p><em>This section is non-normative.</em> @@ -270,19 +276,7 @@ should be able to detect this is about to happen and exit gracefully. </ul> - <h3 id=relationships><span class=secno>1.3 </span>Relationships to other - specifications</h3> - - <h4 id=relationship><span class=secno>1.3.1 </span>Relationship to HTML5</h4> - - <p><em>This section is non-normative.</em> - - <h4 id=relationship0><span class=secno>1.3.2 </span>Relationship to - ECMAScript</h4> - - <p><em>This section is non-normative.</em> - - <h3 id=conformance><span class=secno>1.4 </span>Conformance requirements</h3> + <h3 id=conformance><span class=secno>1.3 </span>Conformance requirements</h3> <p>All diagrams, examples, and notes in this specification are non-normative, as are all sections explicitly marked non-normative. @@ -318,7 +312,7 @@ against running out of memory, or to work around platform-specific limitations. - <h4 id=dependencies><span class=secno>1.4.1 </span>Dependencies</h4> + <h4 id=dependencies><span class=secno>1.3.1 </span>Dependencies</h4> <p>This specification relies on several other underlying specifications. @@ -342,7 +336,7 @@ specification. <a href="#refsWebIDL">[WebIDL]</a></p> </dl> - <h3 id=terminology><span class=secno>1.5 </span>Terminology</h3> + <h3 id=terminology><span class=secno>1.4 </span>Terminology</h3> <p>For simplicity, terms such as <em>shown</em>, <em>displayed</em>, and <em>visible</em> might sometimes be used when referring to the way a @@ -350,9 +344,10 @@ visual medium; they must be considered to apply to other media in equivalent ways. - <p>The construction "a <code>Foo</code> object", where <code>Foo</code> is - actually an interface, is sometimes used instead of the more accurate "an - object implementing the interface <code>Foo</code>". + <p>The construction "a <code title="">Foo</code> object", where <code + title="">Foo</code> is actually an interface, is sometimes used instead of + the more accurate "an object implementing the interface <code + title="">Foo</code>". <p>The term DOM is used to refer to the API set made available to scripts in Web applications, and does not necessarily imply the existence of an @@ -370,6 +365,132 @@ that object must operate on the actual underlying data, not a snapshot of the data. + <h2 id=inside><span class=secno>2. </span>Inside workers</h2> + + <h3 id=the-windowworker><span class=secno>2.1 </span>The <code><a + href="#windowworker">WindowWorker</a></code> interface</h3> + + <pre + class=idl>[NoInterfaceObject] interface <dfn id=windowworker>WindowWorker</dfn> { + readonly attribute boolean <a href="#closing" title=dom-windowworker-closing>closing</a>; +};</pre> + + <p>Objects that implement the <code><a + href="#windowworker">WindowWorker</a></code> interface must also implement + the <code>Window</code> interface (and thus also the + <code>WindowTimers</code> interface) and the <code>EventTarget</code> + interface. + + <p>The <dfn id=closing + title=dom-windowworker-closing><code>closing</code></dfn> attribute must + return false until the "<a href="#kill-a">kill a worker</a>" processing + model defined below sets it to false. + + <h3 id=the-queue><span class=secno>2.2 </span>The queue of events</h3> + + <p>Each <code><a href="#windowworker">WindowWorker</a></code> object is + asssociated with a <dfn id=queue>queue of events</dfn>, which is initially + empty. + + <p>An event in the queue can be a DOM event or a timeout callback. + + <h3 id=processing><span class=secno>2.3 </span>Processing model</h3> + + <p>When a user agent is to <dfn id=run-a>run a worker</dfn> for a script + <var title="">script</var> and a browsing context <var title="">owner + browsing context</var> and a <code>Document</code> <var title="">owner + document</var>, it must run the following steps in a completely separate + and parallel execution environment: + + <ol> + <li> + <p>Create a new <code><a href="#windowworker">WindowWorker</a></code> + object, <var title="">window</var>.</p> + + <li> + <p>Let <var title="">script</var>'s <span>script execution context</span> + (and thus also <span>global object</span>) be <var + title="">window</var>.</p> + + <li> + <p>Let <var title="">script</var>'s <span>script browsing context</span> + be <var title="">owner browsing context</var>.</p> + + <li> + <p>Let <var title="">script</var>'s <span>script document context</span> + be <var title="">owner document</var>.</p> + + <li> + <p>Run <var title="">script</var> until it returns.</p> + + <li> + <p><i>Event loop</i>: Wait until there is an event in the <a + href="#queue">queue of events</a> associated with <var + title="">window</var>.</p> + + <li> + <p>Dispatch the oldest event or callback in the <a href="#queue">queue of + events</a>. Events must be targetted at the <code><a + href="#windowworker">WindowWorker</a></code> object.</p> + + <li> + <p>If there are any more events in the <a href="#queue">queue of + events</a> or if the <var title="">window</var> object's <code + title=dom-windowworker-closing><a href="#closing">closing</a></code> + attribute is set to false, then jump back to the step above labeled + <i>event loop</i>.</p> + + <li> + <p class=big-issue>timers, intervals, XMLHttpRequests, database + transactions, etc, must be killed; ports must be deactivated and + unentangled</p> + </ol> + + <hr> + + <p>When a user agent is to <dfn id=kill-a>kill a worker</dfn>, it must run + the following steps in parallel with the worker's main loop (the "<a + href="#run-a">run a worker</a>" processing model defined above): + + <ol> + <li> + <p>Set the worker's <code><a href="#windowworker">WindowWorker</a></code> + object's <code title=dom-windowworker-closing><a + href="#closing">closing</a></code> attribute to true. + + <li> + <p>Create an <code>Event</code> object with the event name <code + title=event-unload>unload</code>, which does not bubble and is not + cancelable, and add it to the worker's <code><a + href="#windowworker">WindowWorker</a></code> object's <a + href="#queue">queue of events</a>. + + <li> + <p>Wait a user-agent-defined amount of time. + + <li> + <p>If there are any events in the <a href="#queue">queue of events</a> + other than the <code title=event-unload>unload</code> event that this + algorithm just added, discard them without dispatching them. + + <li> + <p>If the <code title=event-unload>unload</code> event that this + algorithm just added hasn't yet been dispatched, then abort the script + currently running in the worker. + + <li> + <p>Wait a user-agent-defined amount of time. + + <li> + <p>Abort the script currently running in the worker (if any script is + running, then it will be a handler for the <code + title=event-unload>unload</code> event). + </ol> + + <h2 id=creating><span class=secno>3. </span>Creating workers</h2> + + <p class=big-issue>... + <h2 class=no-num id=references>References</h2> <p class=big-issue>This section will be written in a future @@ -380,3 +501,6 @@ <p>Thanks to Maciej Stachowiak and Mike Smith for their useful and substantial comments. + + <p>Huge thanks to the whole Gears team, who pioneered this technology and + whose experience has been a huge influence on this specification.
Received on Wednesday, 16 July 2008 01:40:36 UTC