hixie: Make sure to say to queue a task for a variety of situations that otherwise would have synchronous or undefined behaviour. Release the storage mutex in a few places that were missed before. (whatwg r4395)

hixie: Make sure to say to queue a task for a variety of situations that
otherwise would have synchronous or undefined behaviour. Release the
storage mutex in a few places that were missed before. (whatwg r4395)

http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.3515&r2=1.3516&f=h
http://html5.org/tools/web-apps-tracker?from=4394&to=4395

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.3515
retrieving revision 1.3516
diff -u -d -r1.3515 -r1.3516
--- Overview.html 2 Dec 2009 02:12:34 -0000 1.3515
+++ Overview.html 2 Dec 2009 09:40:15 -0000 1.3516
@@ -8585,6 +8585,8 @@
 
    </li>
 
+   <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</li>
+
    <li><p><a href="#prompt-to-unload-a-document" title="prompt to unload a document">Prompt to
    unload</a> the <code>Document</code> object. If the user
    <a href="#refused-to-allow-the-document-to-be-unloaded">refused to allow the document to be unloaded</a>, then
@@ -17599,11 +17601,14 @@
   name</a> must be set to the empty string.</p>
 
   <p>When content loads in an <code><a href="#the-iframe-element">iframe</a></code>, after any <code title="event-load">load</code> events are fired within the content
-  itself, the user agent must <a href="#fire-a-simple-event">fire a simple event</a> named
-  <code title="event-load">load</code> at the <code><a href="#the-iframe-element">iframe</a></code>
-  element. When content fails to load (e.g. due to a network error),
-  then the user agent must <a href="#fire-a-simple-event">fire a simple event</a> named
-  <code title="event-error">error</code> at the element instead.</p>
+  itself, the user agent must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire
+  a simple event</a> named <code title="event-load">load</code> at
+  the <code><a href="#the-iframe-element">iframe</a></code> element. When content fails to load
+  (e.g. due to a network error), then the user agent must <a href="#queue-a-task">queue
+  a task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-error">error</code> at the element instead.</p>
+
+  <p>The <a href="#task-source">task source</a> for these <a href="#concept-task" title="concept-task">tasks</a> is the <a href="#dom-manipulation-task-source">DOM manipulation
+  task source</a>.</p>
 
   <p>When there is an <a href="#active-parser">active parser</a> in the
   <code><a href="#the-iframe-element">iframe</a></code>, and when anything in the <code><a href="#the-iframe-element">iframe</a></code> is
@@ -18262,8 +18267,9 @@
   whenever its <code title="attr-object-data"><a href="#attr-object-data">data</a></code> attribute is
   set, changed, or removed; and, when neither its <code title="attr-object-classid"><a href="#attr-object-classid">classid</a></code> attribute nor its <code title="attr-object-data"><a href="#attr-object-data">data</a></code> attribute are present, whenever
   its <code title="attr-object-type"><a href="#attr-object-type">type</a></code> attribute is set,
-  changed, or removed: the user agent must run the following steps to
-  (re)determine what the <code><a href="#the-object-element">object</a></code> element represents:</p>
+  changed, or removed: the user agent must <a href="#queue-a-task">queue a task</a>
+  to run the following steps to (re)determine what the
+  <code><a href="#the-object-element">object</a></code> element represents:</p>
   <!-- Changing the base URL doesn't trigger this. -->
 
   <ol><li>
@@ -18585,7 +18591,10 @@
    <a href="#fallback-content">fallback content</a>. If the element has an instantiated
    <a href="#plugin">plugin</a>, then unload it.</li>
 
-  </ol><p id="object-plugin">When the algorithm above instantiates a
+  </ol><p>The <a href="#task-source">task source</a> for the <a href="#concept-task" title="concept-task">task</a> above is the <a href="#dom-manipulation-task-source">DOM manipulation
+  task source</a>.</p>
+
+  <p id="object-plugin">When the algorithm above instantiates a
   <a href="#plugin">plugin</a>, the user agent should pass the names and values
   of all the attributes on the element, and <!-- then a parameter
   named "PARAM" whose value is null, and then --> all the names and
@@ -46659,13 +46668,15 @@
 
   <p>When the value that would be returned by the <code title="dom-navigator-onLine"><a href="#dom-navigator-online">navigator.onLine</a></code> attribute of
   the <code><a href="#window">Window</a></code> changes from true to false, the user agent
-  must <a href="#fire-a-simple-event">fire a simple event</a> named <dfn id="event-offline" title="event-offline"><code>offline</code></dfn> at the
+  must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple event</a>
+  named <dfn id="event-offline" title="event-offline"><code>offline</code></dfn> at the
   <code><a href="#window">Window</a></code> object.</p>
 
   <p>On the other hand, when the value that would be returned by the
   <code title="dom-navigator-onLine"><a href="#dom-navigator-online">navigator.onLine</a></code> attribute
   of the <code><a href="#window">Window</a></code> changes from false to true, the user
-  agent must <a href="#fire-a-simple-event">fire a simple event</a> named <dfn id="event-online" title="event-online"><code>online</code></dfn> at the
+  agent must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple
+  event</a> named <dfn id="event-online" title="event-online"><code>online</code></dfn> at the
   <code><a href="#window">Window</a></code> object.</p>
 
   <p>The <a href="#task-source">task source</a> for these <a href="#concept-task" title="concept-task">tasks</a> is the <a href="#networking-task-source">networking task
@@ -46852,12 +46863,6 @@
    <a href="#browsing-context">browsing context</a> of the <var title="">specified
    entry</var>.</li>
 
-   <li><p>If the <code>Document</code> of the <var title="">specified
-   entry</var> of the <var title="">specified browsing context</var>
-   is not the same as the <code>Document</code> of the <a href="#current-entry">current
-   entry</a> of the <var title="">specified browsing context</var>,
-   then release the <a href="#storage-mutex">storage mutex</a>.</li>
-
    <li><p><a href="#traverse-the-history">Traverse the history</a> of the <var title="">specified browsing context</var> to the <var title="">specified entry</var>.</p>
 
   </ol><p>When the user navigates through a <a href="#browsing-context">browsing context</a>,
@@ -47386,7 +47391,9 @@
   <p>When a browsing context is <dfn id="navigate" title="navigate">navigated</dfn>
   to a new resource, the user agent must run the following steps:</p>
 
-  <ol><li id="sandboxLinks"><p>If the <a href="#source-browsing-context">source browsing
+  <ol><li><p>Release the <a href="#storage-mutex">storage mutex</a>.</li>
+
+   <li id="sandboxLinks"><p>If the <a href="#source-browsing-context">source browsing
    context</a> is not the same as the <a href="#browsing-context">browsing context</a>
    being navigated, and the <a href="#source-browsing-context">source browsing context</a> is
    not one of the <a href="#ancestor-browsing-context" title="ancestor browsing context">ancestor
@@ -48113,6 +48120,8 @@
    created. (This can never happen with <a href="#replacement-enabled">replacement
    enabled</a>.)</li>
 
+   <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</li>
+
    <li>
 
     <p>If appropriate, update the <a href="#current-entry">current entry</a> in the
@@ -48211,6 +48220,8 @@
    synchronously <a href="#fire-a-simple-event">fire a simple event</a> with the name <code title="event-hashchange">hashchange</code> at the <a href="#browsing-context">browsing
    context</a>'s <code><a href="#window">Window</a></code> object.</li>
 
+   <li><p>Release the <a href="#storage-mutex">storage mutex</a> again.</li>
+
    <li><p>The <a href="#current-entry">current entry</a> is now the <i>specified
    entry</i>.</li>
 
@@ -48229,6 +48240,8 @@
    <li><p>Dispatch <var title="">event</var> at the
    <code>Document</code>'s <code><a href="#window">Window</a></code> object.</li>
 
+   <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</li>
+
    <li><p>If any event listeners were triggered by the previous step,
    then set the <code>Document</code>'s <var title="">salvageable</var> state to false.</li>
 
@@ -48264,6 +48277,8 @@
    <li><p><a href="#fire-a-simple-event">Fire a simple event</a> named <code title="event-unload">unload</code> at the <code>Document</code>'s
    <code><a href="#window">Window</a></code> object.</li>
 
+   <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</li>
+
    <li><p>If any event listeners were triggered by the previous step,
    then set the <code>Document</code> object's <var title="">salvageable</var> state to false.</li>
 
@@ -48306,8 +48321,9 @@
   </div><h4 id="aborting-a-document-load"><span class="secno">6.11.11 </span>Aborting a document load</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>If the user cancels any instance of the <a href="#fetch" title="fetch">fetching algorithm</a> in the context of a
   <code>Document</code> in a <a href="#browsing-context">browsing context</a>, then, if
   that <code>Document</code> is an <a href="#active-document">active document</a>, the
-  user agent must <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-abort">abort</code> at that <code>Document</code>'s
-  <code><a href="#window">Window</a></code> object.</p><!-- I'd love to make this more precise, anyone have any suggestions
+  user agent must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple
+  event</a> named <code title="event-abort">abort</code> at that
+  <code>Document</code>'s <code><a href="#window">Window</a></code> object.</p><!-- I'd love to make this more precise, anyone have any suggestions
   on what it should say? --><h3 id="links"><span class="secno">6.12 </span>Links</h3><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><h4 id="hyperlink-elements"><span class="secno">6.12.1 </span>Hyperlink elements</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>The <code><a href="#the-a-element">a</a></code>, <code><a href="#the-area-element">area</a></code>, and <code><a href="#the-link-element">link</a></code>
   elements can, in certain situations described in the definitions of
   those elements, represent <dfn id="hyperlink" title="hyperlink">hyperlinks</dfn>.<p>The <dfn id="attr-hyperlink-href" title="attr-hyperlink-href"><code>href</code></dfn>
@@ -49609,8 +49625,8 @@
 
    <li><p><a href="#fire-a-simple-event">Fire a simple event</a> named <code title="event-focus">focus</code> at the element.</li>
 
-  </ol><p>User agents must run the <a href="#focusing-steps">focusing steps</a> for an
-  element whenever the user moves the focus to a
+  </ol><p>User agents must synchronously run the <a href="#focusing-steps">focusing
+  steps</a> for an element whenever the user moves the focus to a
   <a href="#focusable">focusable</a> element.</p>
 
   <p>The <dfn id="unfocusing-steps">unfocusing steps</dfn> are as follows:</p>
@@ -49631,10 +49647,10 @@
   </ol><p>When an element that is focused stops being a
   <a href="#focusable">focusable</a> element, or stops being focused without
   another element being explicitly focused in its stead, the user
-  agent should run the <a href="#focusing-steps">focusing steps</a> for <a href="#the-body-element">the body
-  element</a>, if there is one; if there is not, then the user
-  agent should run the <a href="#unfocusing-steps">unfocusing steps</a> for the affected
-  element only.</p>
+  agent should synchronously run the <a href="#focusing-steps">focusing steps</a> for
+  <a href="#the-body-element">the body element</a>, if there is one; if there is not,
+  then the user agent should synchronously run the <a href="#unfocusing-steps">unfocusing
+  steps</a> for the affected element only.</p>
 
   <p class="example">For example, this might happen because the
   element is removed from its <code>Document</code>, or has a <code title="attr-hidden"><a href="#the-hidden-attribute">hidden</a></code> attribute added. It would also
@@ -67182,11 +67198,14 @@
   name</a> must be set to the empty string.</p>
 
   <p>When content loads in a <code><a href="#frame">frame</a></code>, after any <code title="event-load">load</code> events are fired within the content
-  itself, the user agent must <a href="#fire-a-simple-event">fire a simple event</a> named
-  <code title="event-load">load</code> at the <code><a href="#frame">frame</a></code>
-  element. When content fails to load (e.g. due to a network error),
-  then the user agent must <a href="#fire-a-simple-event">fire a simple event</a> named
-  <code title="event-error">error</code> at the element instead.</p>
+  itself, the user agent must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire
+  a simple event</a> named <code title="event-load">load</code> at
+  the <code><a href="#frame">frame</a></code> element. When content fails to load (e.g. due
+  to a network error), then the user agent must <a href="#queue-a-task">queue a
+  task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-error">error</code> at the element instead.</p>
+
+  <p>The <a href="#task-source">task source</a> for the <a href="#concept-task" title="concept-task">tasks</a> above is the <a href="#dom-manipulation-task-source">DOM
+  manipulation task source</a>.</p>
 
   <p>When there is an <a href="#active-parser">active parser</a> in the
   <code><a href="#frame">frame</a></code>, and when anything in the <code><a href="#frame">frame</a></code> is

Received on Wednesday, 2 December 2009 09:41:13 UTC