spec/Overview.html 1.1228 2043 Add a startConversation() method that wr

Add a startConversation() method that wraps new MessageChannel and
postMessage() in a less expensive one-step operation. (credit: ab)
(whatwg r2043)

startConversation(message)
http://people.w3.org/mike/diffs/html5/spec/Overview.1.1228.html#startconversation
start()
http://people.w3.org/mike/diffs/html5/spec/Overview.1.1228.html#start6
MessagePort
http://people.w3.org/mike/diffs/html5/spec/Overview.1.1228.html#messageport0
postMessage()
http://people.w3.org/mike/diffs/html5/spec/Overview.1.1228.html#postmessage2

http://people.w3.org/mike/diffs/html5/spec/Overview.diff.html
http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.1227&r2=1.1228&f=h
http://html5.org/tools/web-apps-tracker?from=2042&to=2043

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.1227
retrieving revision 1.1228
diff -u -d -r1.1227 -r1.1228
--- Overview.html 11 Aug 2008 05:38:18 -0000 1.1227
+++ Overview.html 11 Aug 2008 07:34:06 -0000 1.1228
@@ -44017,6 +44017,7 @@
   readonly attribute boolean <a href="#active0" title=dom-MessagePort-active>active</a>;
   boolean <a href="#postmessage2" title=dom-MessagePort-postMessage>postMessage</a>(in DOMString message);
   boolean <a href="#postmessage2" title=dom-MessagePort-postMessage>postMessage</a>(in DOMString message, in <a href="#messageport0">MessagePort</a> messagePort);
+  <a href="#messageport0">MessagePort</a> <a href="#startconversation" title=dom-MessagePort-startConversation>startConversation</a>(in DOMString message);
   void <a href="#start6" title=dom-MessagePort-start>start</a>();
   void <a href="#close3" title=dom-MessagePort-close>close</a>();
 
@@ -44187,6 +44188,75 @@
 
   <hr>
 
+  <p>The <dfn id=startconversation
+   title=dom-MessagePort-startConversation><code>startConversation(<var
+   title="">message</var>)</code></dfn> method is a convenience method that
+   simplifies create a new <code><a
+   href="#messagechannel">MessageChannel</a></code> and invoking <code
+   title=dom-MessagePort-postMessage><a
+   href="#postmessage2">postMessage()</a></code> with one of the new ports.
+   When invoked on a port <var title="">source port</var>, it must run the
+   following steps:
+
+  <ol>
+   <li>
+    <p>Let <var title="">message</var> be the method's first argument.
+
+   <li>
+    <p>If the <var title="">source port</var> is not entangled with another
+     port, then return null and abort these steps.
+   </li>
+   <!--
+   we don't raise an exception because this can happen moment's
+   notice, but we return false so that the caller can check whether
+   the port was active at time of calling without a race
+   condition. -->
+
+   <li>
+    <p>Let <var title="">target port</var> be the port with which <var
+     title="">source port</var> is entangled.
+
+   <li>
+    <p>Create an event that uses the <code><a
+     href="#messageevent">MessageEvent</a></code> interface, with the name
+     <code title=event-message><a href="#message2">message</a></code>, which
+     does not bubble, is cancelable, and has no default action.
+
+   <li>
+    <p>Let the <code title=dom-MessageEvent-data><a
+     href="#data4">data</a></code> attribute of the event have the value of
+     <var title="">message</var>, the method's first argument.
+
+   <li>
+    <p><a href="#create">Create a new <code>MessagePort</code> object</a>
+     owned by the <a href="#script2">script execution context</a>, and let
+     <var title="">port1</var> be that object.
+
+   <li>
+    <p><a href="#create">Create a new <code>MessagePort</code> object</a>
+     owned by the owner of the <var title="">target port</var>, and let <var
+     title="">port2</var> be that object.
+
+   <li>
+    <p><a href="#entangle">Entangle</a> the <var title="">port1</var> and
+     <var title="">port2</var> objects.
+
+   <li>
+    <p>Let the <code title=dom-MessageEvent-messagePort><a
+     href="#messageport">messagePort</a></code> attribute of the event be
+     <var title="">port2</var>.
+
+   <li>
+    <p>Return <var title="">port1</var> from the method, but continue with
+     these steps.
+
+   <li>
+    <p>Add the event to the <a href="#port-message">port message queue</a> of
+     <var title="">target port</var>.
+  </ol>
+
+  <hr>
+
   <p>The <dfn id=start6
    title=dom-MessagePort-start><code>start()</code></dfn> method must open
    its port's <a href="#port-message">port message queue</a>, if it is not

Received on Monday, 11 August 2008 07:37:44 UTC