Skip to content

Commit

Permalink
[e] (0) Setting up the spec for defining the event loop mechanism.
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.whatwg.org/webapps@2073 340c8d12-0b0e-0410-8428-c7bf67bfef74
  • Loading branch information
Hixie committed Aug 14, 2008
1 parent a7a999c commit c9167ac
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 76 deletions.
122 changes: 65 additions & 57 deletions index
Expand Up @@ -232,8 +232,7 @@
this. There are many other issues that have been raised as well; the
issues given in this document are not the only known issues! Also, firing
of events needs to be unified (right now some bubble, some don't, they all
use different text to fire events, we don't have an official queueing
mechanism, etc).
use different text to fire events, etc).

<h2 class="no-num no-toc" id=contents>Table of contents</h2>
<!--begin-toc-->
Expand Down Expand Up @@ -1224,16 +1223,25 @@
<ul class=toc>
<li><a href="#nested"><span class=secno>5.1.1 </span>Nested browsing
contexts</a>
<ul class=toc>
<li><a href="#navigating"><span class=secno>5.1.1.1.
</span>Navigating nested browsing contexts in the DOM</a>
</ul>

<li><a href="#auxiliary"><span class=secno>5.1.2 </span>Auxiliary
browsing contexts</a>
<ul class=toc>
<li><a href="#navigating0"><span class=secno>5.1.2.1.
</span>Navigating auxiliary browsing contexts in the DOM</a>
</ul>

<li><a href="#secondary"><span class=secno>5.1.3 </span>Secondary
browsing contexts</a>

<li><a href="#security2"><span class=secno>5.1.4 </span>Security</a>

<li><a href="#threads"><span class=secno>5.1.5 </span>Threads</a>
<li><a href="#groupings"><span class=secno>5.1.5 </span>Groupings of
browsing contexts</a>

<li><a href="#browsing"><span class=secno>5.1.6 </span>Browsing
context names</a>
Expand Down Expand Up @@ -1262,24 +1270,26 @@
<li><a href="#script0"><span class=secno>5.4.1 </span>Script execution
contexts</a>

<li><a href="#security4"><span class=secno>5.4.2 </span>Security
<li><a href="#event"><span class=secno>5.4.2 </span>Event loops</a>

<li><a href="#security4"><span class=secno>5.4.3 </span>Security
exceptions</a>

<li><a href="#javascript-protocol"><span class=secno>5.4.3 </span>The
<li><a href="#javascript-protocol"><span class=secno>5.4.4 </span>The
<code title="">javascript:</code> protocol</a>

<li><a href="#events"><span class=secno>5.4.4 </span>Events</a>
<li><a href="#events"><span class=secno>5.4.5 </span>Events</a>
<ul class=toc>
<li><a href="#event-handler-attributes"><span class=secno>5.4.4.1.
<li><a href="#event-handler-attributes"><span class=secno>5.4.5.1.
</span>Event handler attributes</a>

<li><a href="#event"><span class=secno>5.4.4.2. </span>Event
<li><a href="#event0"><span class=secno>5.4.5.2. </span>Event
firing</a>

<li><a href="#events0"><span class=secno>5.4.4.3. </span>Events and
<li><a href="#events0"><span class=secno>5.4.5.3. </span>Events and
the <code>Window</code> object</a>

<li><a href="#runtime-script-errors"><span class=secno>5.4.4.4.
<li><a href="#runtime-script-errors"><span class=secno>5.4.5.4.
</span>Runtime script errors</a>
</ul>
</ul>
Expand Down Expand Up @@ -1381,7 +1391,7 @@
<li><a href="#browsing0"><span class=secno>5.9 </span>Browsing the
Web</a>
<ul class=toc>
<li><a href="#navigating"><span class=secno>5.9.1 </span>Navigating
<li><a href="#navigating1"><span class=secno>5.9.1 </span>Navigating
across documents</a>

<li><a href="#read-html"><span class=secno>5.9.2 </span>Page load
Expand Down Expand Up @@ -1435,11 +1445,11 @@
<li><a href="#the-storage0"><span class=secno>5.10.1.5. </span>The
<code title=event-storage>storage</code> event</a>
<ul class=toc>
<li><a href="#event0"><span class=secno>5.10.1.5.1. </span>Event
<li><a href="#event1"><span class=secno>5.10.1.5.1. </span>Event
definition</a>
</ul>

<li><a href="#threads0"><span class=secno>5.10.1.6.
<li><a href="#threads"><span class=secno>5.10.1.6.
</span>Threads</a>
</ul>

Expand Down Expand Up @@ -1704,7 +1714,7 @@

<li><a href="#comms"><span class=secno>7. </span>Communication</a>
<ul class=toc>
<li><a href="#event1"><span class=secno>7.1 </span>Event definitions</a>
<li><a href="#event2"><span class=secno>7.1 </span>Event definitions</a>


<li><a href="#server-sent-events"><span class=secno>7.2
Expand Down Expand Up @@ -7677,7 +7687,7 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E..
attribute DOMString <a href="#registrationmark0" title=dom-registrationMark>registrationMark</a>;
readonly attribute DocumentFragment <a href="#originalcontent" title=dom-originalContent>originalContent</a>;

// <a href="#event4">event handler DOM attributes</a>
// <a href="#event5">event handler DOM attributes</a>
attribute <span>EventListener</span> <a href="#onabort" title=handler-onabort>onabort</a>;
attribute <span>EventListener</span> <a href="#onbeforeunload" title=handler-onbeforeunload>onbeforeunload</a>;
attribute <span>EventListener</span> <a href="#onblur" title=handler-onblur>onblur</a>;
Expand Down Expand Up @@ -7761,7 +7771,7 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E..
<dd><code title=attr-title><a href="#title">title</a></code>
</dl>

<p>In addition, the following <a href="#event3">event handler content
<p>In addition, the following <a href="#event4">event handler content
attributes</a> may be specified on any <span>HTML element</span>:

<dl class=element>
Expand Down Expand Up @@ -31639,6 +31649,9 @@ never reset. This is nice and consistent.)
a <code title=attr-iframe-seamless><a href="#seamless">seamless</a></code>
attribute.

<h5 id=navigating><span class=secno>5.1.1.1. </span>Navigating nested
browsing contexts in the DOM</h5>

<p>The <dfn id=top0 title=dom-top><code>top</code></dfn> DOM attribute on
the <code><a href="#window">Window</a></code> object of a <a
href="#browsing1">browsing context</a> <var title="">b</var> must return
Expand All @@ -31647,8 +31660,6 @@ never reset. This is nice and consistent.)
<code><a href="#window">Window</a></code> object if it was a <a
href="#top-level">top-level browsing context</a> itself).

<hr>

<p>The <dfn id=parent0 title=dom-parent><code>parent</code></dfn> DOM
attribute on the <code><a href="#window">Window</a></code> object of a <a
href="#browsing1">browsing context</a> <var title="">b</var> must return
Expand Down Expand Up @@ -31701,6 +31712,9 @@ never reset. This is nice and consistent.)
href="#opener">opener browsing context</a> when the <a
href="#auxiliary0">auxiliary browsing context</a> was created.

<h5 id=navigating0><span class=secno>5.1.2.1. </span>Navigating auxiliary
browsing contexts in the DOM</h5>

<p>The <dfn id=opener0 title=dom-opener><code>opener</code></dfn> DOM
attribute on the <code><a href="#window">Window</a></code> object must
return the <code><a href="#window">Window</a></code> object of the <a
Expand Down Expand Up @@ -31749,7 +31763,8 @@ never reset. This is nice and consistent.)
itself).
</ul>

<h4 id=threads><span class=secno>5.1.5 </span>Threads</h4>
<h4 id=groupings><span class=secno>5.1.5 </span>Groupings of browsing
contexts</h4>

<p>Each <a href="#browsing1">browsing context</a> is defined as having a
list of zero or more <dfn id=directly>directly reachable browsing
Expand All @@ -31775,18 +31790,6 @@ never reset. This is nice and consistent.)
reachable browsing contexts</a> forms a <dfn id=unit-of>unit of related
browsing contexts</dfn>.

<p>All the executable code in a <a href="#unit-of">unit of related browsing
contexts</a> must execute on a single conceptual thread. The dispatch of
events fired by the user agent (e.g. in response to user actions or
network activity) and the execution of any scripts associated with timers
must be serialized so that for each <a href="#unit-of">unit of related
browsing contexts</a> there is only one script being executed at a time.</p>
<!-- XXX queue concept should be made generic across the spec.
"Once no other scripts are executing in the <span>unit of
related browsing contexts</span>, ..."
this applies to anything firing events or calling callbacks
asynchronously. -->

<h4 id=browsing><span class=secno>5.1.6 </span>Browsing context names</h4>

<p>Browsing contexts can have a <dfn id=browsing3>browsing context
Expand Down Expand Up @@ -31955,7 +31958,7 @@ never reset. This is nice and consistent.)
void <a href="#postmessage0" title=dom-window-postMessage-2>postMessage</a>(in DOMString message, in DOMString targetOrigin);
void <a href="#postmessage1" title=dom-window-postMessage-3>postMessage</a>(in DOMString message, in <a href="#messageport0">MessagePort</a> messagePort, in DOMString targetOrigin);

// <a href="#event4">event handler DOM attributes</a>
// <a href="#event5">event handler DOM attributes</a>
attribute <span>EventListener</span> <a href="#onabort" title=handler-onabort>onabort</a>;
attribute <span>EventListener</span> <a href="#onbeforeunload" title=handler-onbeforeunload>onbeforeunload</a>;
attribute <span>EventListener</span> <a href="#onblur" title=handler-onblur>onblur</a>;
Expand Down Expand Up @@ -32243,7 +32246,7 @@ never reset. This is nice and consistent.)
<dd>The owner is the <code>Document</code> to which the <code><a
href="#script1">script</a></code> element belongs.

<dt>If a script is in an <a href="#event3" title="event handler content
<dt>If a script is in an <a href="#event4" title="event handler content
attributes">event handler content attribute</a>

<dd>The owner is the <code>Document</code> to which the attribute node
Expand Down Expand Up @@ -32588,8 +32591,8 @@ never reset. This is nice and consistent.)
rule in a CSS <code><a href="#style1">style</a></code> element block).

<li>Event handlers, whether registered through the DOM using <code
title="">addEventListener()</code>, by explicit <a href="#event3">event
handler content attributes</a>, by <a href="#event4">event handler DOM
title="">addEventListener()</code>, by explicit <a href="#event4">event
handler content attributes</a>, by <a href="#event5">event handler DOM
attributes</a>, or otherwise.

<li>Processing of technologies like XBL or SVG that have their own
Expand Down Expand Up @@ -32679,12 +32682,17 @@ never reset. This is nice and consistent.)
will disable any event handler attributes, event listeners, timeouts, etc,
that were set by scripts in the document.

<h4 id=security4><span class=secno>5.4.2 </span>Security exceptions</h4>
<h4 id=event><span class=secno>5.4.2 </span>Event loops</h4>

<p class=big-issue>...</p>
<!-- XXXqueue-->

<h4 id=security4><span class=secno>5.4.3 </span>Security exceptions</h4>

<p class=big-issue>Define <dfn id=security10>security exception</dfn>.</p>
<!-- SCRIPT EXEC -->

<h4 id=javascript-protocol><span class=secno>5.4.3 </span><dfn
<h4 id=javascript-protocol><span class=secno>5.4.4 </span><dfn
id=the-javascript title="javascript protocol">The <code
title="">javascript:</code> protocol</dfn></h4>

Expand Down Expand Up @@ -32770,7 +32778,7 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t
execute (and just return void) in certain cases, e.g. in a sandbox or when
the user has disabled scripting altogether.

<h4 id=events><span class=secno>5.4.4 </span>Events</h4>
<h4 id=events><span class=secno>5.4.5 </span>Events</h4>

<p class=big-issue>We need to define how to handle events that are to be
fired on a Document that is no longer the active document of its browsing
Expand All @@ -32781,29 +32789,29 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t
element section, which says scripts don't run when the document isn't
active.

<h5 id=event-handler-attributes><span class=secno>5.4.4.1. </span>Event
<h5 id=event-handler-attributes><span class=secno>5.4.5.1. </span>Event
handler attributes</h5>
<!-- http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A...%3Cscript%3E%0Aw(a%3Ddocument.implementation.createDocument(null%2C%20null%2C%20null))%3B%0Aw(a.appendChild(a.createElementNS('http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml'%2C%20'html')))%3B%0Aw(b%3Da.firstChild.appendChild(a.createElementNS('http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml'%2C%20'body')))%3B%0Aw(b.test%20%3D%20w)%3B%0Aw(b.setAttribute('onclick'%2C%20'test(%22fire%3A%20%22%20%2B%20event)'))%3B%0Aw(b.onclick)%3B%0Aw(e%3Da.createEvent('Event'))%3B%0Aw(e.initEvent('click'%2C%20false%2C%20false))%3B%0Aw(b.dispatchEvent(e))%3B%0A%3C%2Fscript%3E -->

<p><a href="#html-elements">HTML elements</a> can have <dfn id=event2>event
<p><a href="#html-elements">HTML elements</a> can have <dfn id=event3>event
handler attributes</dfn> specified. These act as bubbling event listeners
for the element on which they are specified.

<p>Each event handler attribute has two parts, an <a href="#event3"
<p>Each event handler attribute has two parts, an <a href="#event4"
title="event handler content attributes">event handler content
attribute</a> and an <a href="#event4" title="event handler DOM
attribute</a> and an <a href="#event5" title="event handler DOM
attributes">event handler DOM attribute</a>. Event handler attributes must
initially be set to null. When their value changes (through the changing
of their event handler content attribute or their event handler DOM
attribute), they will either be null, or have an
<code>EventListener</code> object assigned to them.

<p>Objects other than <code>Element</code> objects, in particular <code><a
href="#window">Window</a></code>, only have <a href="#event4" title="event
href="#window">Window</a></code>, only have <a href="#event5" title="event
handler DOM attributes">event handler DOM attribute</a> (since they have
no content attributes).

<p><dfn id=event3>Event handler content attributes</dfn>, when specified,
<p><dfn id=event4>Event handler content attributes</dfn>, when specified,
must contain valid ECMAScript code matching the ECMAScript <code
title="">FunctionBody</code> production. <a
href="#refsECMA262">[ECMA262]</a></p>
Expand Down Expand Up @@ -32841,7 +32849,7 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t

<p class=big-issue>How do we allow non-JS event handlers?

<p><dfn id=event4>Event handler DOM attributes</dfn>, on setting, must set
<p><dfn id=event5>Event handler DOM attributes</dfn>, on setting, must set
the corresponding event handler attribute to their new value, and on
getting, must return whatever the current value of the corresponding event
handler attribute is (possibly null).
Expand Down Expand Up @@ -33188,7 +33196,7 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t
otherwise. (The <var title=dom-event-listener>listener</var> argument is
emphatically <em>not</em> the event handler attribute itself.)

<h5 id=event><span class=secno>5.4.4.2. </span>Event firing</h5>
<h5 id=event0><span class=secno>5.4.5.2. </span>Event firing</h5>

<p class=big-issue>maybe this should be moved higher up (terminology?
conformance? DOM?) Also, the whole terminology thing should be changed so
Expand Down Expand Up @@ -33277,7 +33285,7 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t
actions are defined in terms of <em>any</em> event of the right type on
that element, not those that are dispatched in expected ways.

<h5 id=events0><span class=secno>5.4.4.3. </span>Events and the <code><a
<h5 id=events0><span class=secno>5.4.5.3. </span>Events and the <code><a
href="#window">Window</a></code> object</h5>

<p>When an event is dispatched at a DOM node in a <code>Document</code> in
Expand All @@ -33296,7 +33304,7 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t
bubbling has been prevented.
</ol>

<h5 id=runtime-script-errors><span class=secno>5.4.4.4. </span>Runtime
<h5 id=runtime-script-errors><span class=secno>5.4.5.4. </span>Runtime
script errors</h5>

<p><em>This section only applies to user agents that support scripting in
Expand Down Expand Up @@ -35599,7 +35607,7 @@ style/default.css</pre>
cache</var>.
</ol>

<p>The following are the <a href="#event4">event handler DOM attributes</a>
<p>The following are the <a href="#event5">event handler DOM attributes</a>
that must be supported by objects implementing the <code><a
href="#applicationcache">ApplicationCache</a></code> interface:

Expand Down Expand Up @@ -36200,7 +36208,7 @@ user reload must be equivalent to .reload()

<h3 id=browsing0><span class=secno>5.9 </span>Browsing the Web</h3>

<h4 id=navigating><span class=secno>5.9.1 </span>Navigating across
<h4 id=navigating1><span class=secno>5.9.1 </span>Navigating across
documents</h4>

<p>Certain actions cause the <a href="#browsing1">browsing context</a> to
Expand Down Expand Up @@ -36269,7 +36277,7 @@ user reload must be equivalent to .reload()
context</a> being navigated, ignoring any <a href="#ltfragmentgt"
title=url-fragment>&lt;fragment&gt;</a> components of those <a
href="#url" title=URL>URLs</a>, and the new resource is to be fetched
using HTTP GET or equivalent, then <a href="#navigating0"
using HTTP GET or equivalent, then <a href="#navigating2"
title=navigate-fragid>navigate to that fragment identifier</a> and abort
these steps.

Expand Down Expand Up @@ -36783,7 +36791,7 @@ user reload must be equivalent to .reload()
the page has been completely set up, the user agent must <a
href="#update2">update the session history with the new page</a>.

<h4 id=scroll-to-fragid><span class=secno>5.9.8 </span><dfn id=navigating0
<h4 id=scroll-to-fragid><span class=secno>5.9.8 </span><dfn id=navigating2
title=navigate-fragid>Navigating to a fragment identifier</dfn></h4>

<p>When a user agent is supposed to navigate to a fragment identifier, then
Expand Down Expand Up @@ -37378,7 +37386,7 @@ user reload must be equivalent to .reload()
the two documents are in the same <a href="#unit-of">unit of related
browsing contexts</a>, or null otherwise.

<h6 id=event0><span class=secno>5.10.1.5.1. </span>Event definition</h6>
<h6 id=event1><span class=secno>5.10.1.5.1. </span>Event definition</h6>

<pre class=idl>interface <dfn id=storageevent>StorageEvent</dfn> : Event {
readonly attribute DOMString <a href="#key" title=dom-StorageEvent-key>key</a>;
Expand Down Expand Up @@ -37417,7 +37425,7 @@ user reload must be equivalent to .reload()
represents the <code><a href="#window">Window</a></code> that changed the
key.

<h5 id=threads0><span class=secno>5.10.1.6. </span>Threads</h5>
<h5 id=threads><span class=secno>5.10.1.6. </span>Threads</h5>

<p>Multiple browsing contexts must be able to access the local storage
areas simultaneously in a predictable manner. Scripts must not be able to
Expand Down Expand Up @@ -42602,7 +42610,7 @@ XXX Once we resolve the style="" issue, address these:

<h2 id=comms><span class=secno>7. </span>Communication</h2>

<h3 id=event1><span class=secno>7.1 </span>Event definitions</h3>
<h3 id=event2><span class=secno>7.1 </span>Event definitions</h3>

<p>Messages in <a href="#server-sent">server-sent events</a>, <a
href="#web-sockets">Web sockets</a>, <a
Expand Down Expand Up @@ -43290,7 +43298,7 @@ interface <dfn id=websocket0>WebSocket</dfn> {

<hr>

<p>The following are the <a href="#event4">event handler DOM attributes</a>
<p>The following are the <a href="#event5">event handler DOM attributes</a>
that must be supported by objects implementing the <code><a
href="#websocket0">WebSocket</a></code> interface:

Expand Down Expand Up @@ -44626,7 +44634,7 @@ interface <dfn id=messagechannel>MessageChannel</dfn> {

<hr>

<p>The following are the <a href="#event4">event handler DOM attributes</a>
<p>The following are the <a href="#event5">event handler DOM attributes</a>
that must be supported by objects implementing the <code><a
href="#messageport0">MessagePort</a></code> interface:

Expand Down

0 comments on commit c9167ac

Please sign in to comment.