hixie: add infrastructure to postMessage() to support ArrayBuffer cloning (whatwg r6273)

hixie: add infrastructure to postMessage() to support ArrayBuffer
cloning (whatwg r6273)

http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.5020&r2=1.5021&f=h
http://html5.org/tools/web-apps-tracker?from=6272&to=6273

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.5020
retrieving revision 1.5021
diff -u -d -r1.5020 -r1.5021
--- Overview.html 21 Jun 2011 22:04:45 -0000 1.5020
+++ Overview.html 23 Jun 2011 23:48:53 -0000 1.5021
@@ -318,7 +318,7 @@
 
    <h1>HTML5</h1>
    <h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2>
-   <h2 class="no-num no-toc" id="editor-s-draft-21-june-2011">Editor's Draft 21 June 2011</h2>
+   <h2 class="no-num no-toc" id="editor-s-draft-23-june-2011">Editor's Draft 23 June 2011</h2>
    <dl><dt>Latest Published Version:</dt>
     <dd><a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a></dd>
     <dt>Latest Editor's Draft:</dt>
@@ -464,7 +464,7 @@
   Group</a> is the W3C working group responsible for this
   specification's progress along the W3C Recommendation
   track.
-  This specification is the 21 June 2011 Editor's Draft.
+  This specification is the 23 June 2011 Editor's Draft.
   </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>Work on this specification is also done at the <a href="http://www.whatwg.org/">WHATWG</a>. The W3C HTML working group
   actively pursues convergence with the WHATWG, as required by the <a href="http://www.w3.org/2007/03/HTML-WG-charter">W3C HTML working
   group charter</a>.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5
@@ -569,11 +569,12 @@
        <li><a href="#htmloptionscollection-0"><span class="secno">2.8.2.4 </span>HTMLOptionsCollection</a></ol></li>
      <li><a href="#domtokenlist-0"><span class="secno">2.8.3 </span>DOMTokenList</a></li>
      <li><a href="#domsettabletokenlist-0"><span class="secno">2.8.4 </span>DOMSettableTokenList</a></li>
-     <li><a href="#safe-passing-of-structured-data"><span class="secno">2.8.5 </span>Safe passing of structured data</a></li>
-     <li><a href="#domstringmap-0"><span class="secno">2.8.6 </span>DOMStringMap</a></li>
-     <li><a href="#dom-feature-strings"><span class="secno">2.8.7 </span>DOM feature strings</a></li>
-     <li><a href="#exceptions"><span class="secno">2.8.8 </span>Exceptions</a></li>
-     <li><a href="#garbage-collection"><span class="secno">2.8.9 </span>Garbage collection</a></ol></li>
+     <li><a href="#transferable-objects"><span class="secno">2.8.5 </span>Transferable objects</a></li>
+     <li><a href="#safe-passing-of-structured-data"><span class="secno">2.8.6 </span>Safe passing of structured data</a></li>
+     <li><a href="#domstringmap-0"><span class="secno">2.8.7 </span>DOMStringMap</a></li>
+     <li><a href="#dom-feature-strings"><span class="secno">2.8.8 </span>DOM feature strings</a></li>
+     <li><a href="#exceptions"><span class="secno">2.8.9 </span>Exceptions</a></li>
+     <li><a href="#garbage-collection"><span class="secno">2.8.10 </span>Garbage collection</a></ol></li>
    <li><a href="#namespaces"><span class="secno">2.9 </span>Namespaces</a></ol></li>
  <li><a href="#dom"><span class="secno">3 </span>Semantics, structure, and APIs of HTML documents</a>
   <ol>
@@ -7256,23 +7257,50 @@
   attribute must return the underlying string on getting, and must
   replace the underlying string with the new value on setting.</p>
 
-  </div><div class="impl">
+  </div><h4 id="transferable-objects"><span class="secno">2.8.5 </span>Transferable objects</h4><p>Some objects support being copied and closed in one operation.
+  This is called <i>transferring</i> the object, and is used in
+  particular to transfer ownership of unsharable or expensive
+  resources across worker boundaries.<pre class="idl">[NoInterfaceObject]
+interface <dfn id="transferable">Transferable</dfn> { };</pre><div class="impl">
 
-  <h4 id="safe-passing-of-structured-data"><span class="secno">2.8.5 </span>Safe passing of structured data</h4>
+  <p>To <dfn id="transfer-a-transferable-object">transfer a <code>Transferable</code> object</dfn> to a
+  new owner, the user agent must run the steps defined for the type of
+  object in question. The steps will return a new object of the same
+  type, and will permanently neuter the original object. (This is an
+  irreversible and non-idempotent operation; once an object has been
+  transferred, it cannot be transferred, or indeed used, again.)</p>
+
+  </div><p>The following <code><a href="#transferable">Transferable</a></code> types exist:<ul class="brief"><li><code>MessagePort</code>
+   
+  </ul><div class="impl">
+
+  <h4 id="safe-passing-of-structured-data"><span class="secno">2.8.6 </span>Safe passing of structured data</h4>
 
   <p>When a user agent is required to obtain a <dfn id="structured-clone">structured
-  clone</dfn> of a value, it must run the following algorithm, which
-  either returns a separate value, or throws an exception.</p>
+  clone</dfn> of a value, optionally with a <i>transfer map</i>, it
+  must run the following algorithm, which either returns a separate
+  value, or throws an exception. If a <i>transfer map</i> is provided,
+  it consists of a association list of pairs of
+  <code><a href="#transferable">Transferable</a></code> objects; in each pair, one is the
+  <em>old</em> object and one is the <em>new</em> object.</p>
 
   <ol><li><p>Let <var title="">input</var> be the value being
    cloned.</li>
 
+   <li><p>Let <var title="">transfer map</var> be the <i>transfer
+   map</i> passed to the algorithm, if any, or the empty list
+   otherwise.</li>
+
    <li><p>Let <var title="">memory</var> be an association list of
    pairs of objects, initially empty. This is used to handle duplicate
    references. In each pair of objects, one is called the
    <em>source</em> object and the other the <em>destination</em>
    object.</li>
 
+   <li><p>For each pair of objects in <var title="">transfer
+   map</var>, add a mapping from the old object (the source object) to
+   the new object (the destination object) to <var title="">memory</var>.</li>
+
    <li><p>Let <var title="">output</var> be the value resulting from
    calling the <a href="#internal-structured-cloning-algorithm">internal structured cloning algorithm</a> with
    <var title="">input</var> as the "<var title="">input</var>"
@@ -7347,6 +7375,7 @@
 
      <dd><p>Let <var title="">output</var> be a newly constructed <code><a href="#filelist">FileList</a></code> object containing a list of newly constructed <code><a href="#file">File</a></code> objects corresponding to the same underlying data as those in <var title="">input</var>, maintaining their relative order.</dd>
 
+
      <dt>If <var title="">input</var> is an Array object</dt>
 
      <dd><p>Let <var title="">output</var> be a newly constructed empty <code>Array</code> object.</dd>
@@ -7400,7 +7429,7 @@
   </ol><p class="note">This algorithm preserves cycles and preserves the
   identity of duplicate objects in graphs.</p>
 
-  </div><h4 id="domstringmap-0"><span class="secno">2.8.6 </span>DOMStringMap</h4><p>The <code><a href="#domstringmap">DOMStringMap</a></code> interface represents a set of
+  </div><h4 id="domstringmap-0"><span class="secno">2.8.7 </span>DOMStringMap</h4><p>The <code><a href="#domstringmap">DOMStringMap</a></code> interface represents a set of
   name-value pairs. It exposes these using the scripting language's
   native mechanisms for property access.<div class="impl">
 
@@ -7474,7 +7503,7 @@
   }
 }</pre>
 
-  </div><h4 id="dom-feature-strings"><span class="secno">2.8.7 </span>DOM feature strings</h4><p>DOM3 Core defines mechanisms for checking for interface support,
+  </div><h4 id="dom-feature-strings"><span class="secno">2.8.8 </span>DOM feature strings</h4><p>DOM3 Core defines mechanisms for checking for interface support,
   and for obtaining implementations of interfaces, using <a href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#DOMFeatures">feature
   strings</a>. <a href="#refsDOMCORE">[DOMCORE]</a><p>Authors are strongly discouraged from using these, as they are
   notoriously unreliable and imprecise. Authors are encouraged to rely
@@ -7487,7 +7516,7 @@
   with <var title="">feature</var> set to either "<code title="">HTML</code>" or "<code title="">XHTML</code>" and <var title="">version</var> set to either "<code>1.0</code>" or
   "<code>2.0</code>".</p>
 
-  </div><h4 id="exceptions"><span class="secno">2.8.8 </span>Exceptions</h4><p>The following are <code><a href="#domexception">DOMException</a></code> codes. <a href="#refsDOMCORE">[DOMCORE]</a><ol class="brief"><li value="1"><dfn id="index_size_err"><code>INDEX_SIZE_ERR</code></dfn></li>
+  </div><h4 id="exceptions"><span class="secno">2.8.9 </span>Exceptions</h4><p>The following are <code><a href="#domexception">DOMException</a></code> codes. <a href="#refsDOMCORE">[DOMCORE]</a><ol class="brief"><li value="1"><dfn id="index_size_err"><code>INDEX_SIZE_ERR</code></dfn></li>
    <li value="2"><dfn id="domstring_size_err"><code>DOMSTRING_SIZE_ERR</code></dfn></li>
    <li value="3"><dfn id="hierarchy_request_err"><code>HIERARCHY_REQUEST_ERR</code></dfn></li>
    <li value="4"><dfn id="wrong_document_err"><code>WRONG_DOCUMENT_ERR</code></dfn></li>
@@ -7521,7 +7550,7 @@
 
   </div><div class="impl">
 
-  <h4 id="garbage-collection"><span class="secno">2.8.9 </span>Garbage collection</h4>
+  <h4 id="garbage-collection"><span class="secno">2.8.10 </span>Garbage collection</h4>
 
   <p>There is an <dfn id="implied-strong-reference">implied strong reference</dfn> from any IDL
   attribute that returns a pre-existing object to that object.</p>
@@ -8390,7 +8419,7 @@
    <li><p> Run the remainder of these steps asynchronously,
    and return true from the method.</li>
 
-   <li><p>Let <var title="">result</var> be an <code><a href="#document">Document</a></code>
+   <li><p>Let <var title="">result</var> be a <code><a href="#document">Document</a></code>
    object.</li>
 
    <li><p>Let <var title="">success</var> be false.</li>

Received on Thursday, 23 June 2011 23:49:16 UTC