- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 11 Aug 2008 07:34:09 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec
In directory hutz:/tmp/cvs-serv10215
Modified Files:
Overview.html
Log Message:
Add a startConversation() method that wraps new MessageChannel and postMessage() in a less expensive one-step operation. (credit: ab) (whatwg r2043)
Index: Overview.html
===================================================================
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:34:42 UTC