[html5] r6162 - [giow] (0) Remove pointless events from the PeerConnection object. Add an event [...]

whatwg at whatwg.org whatwg at whatwg.org
Tue May 31 15:37:17 PDT 2011


Author: ianh
Date: 2011-05-31 15:37:16 -0700 (Tue, 31 May 2011)
New Revision: 6162

Modified:
   complete.html
   index
   source
Log:
[giow] (0) Remove pointless events from the PeerConnection object. Add an event summary. Fix fallout from recent changes.

Modified: complete.html
===================================================================
--- complete.html	2011-05-31 22:12:44 UTC (rev 6161)
+++ complete.html	2011-05-31 22:37:16 UTC (rev 6162)
@@ -64626,6 +64626,8 @@
   <p><a href="http://www.whatwg.org/demos/offline/clock/clock2.html">View this example online</a>.</p>
 -->
 
+
+
   <h5 id=appcacheevents><span class=secno>6.6.1.1 </span>Event summary</h5>
 
   <p><i>This section is non-normative.</i></p>
@@ -74409,7 +74411,7 @@
   set to <code title=dom-stream-LIVE><a href=#dom-stream-live>LIVE</a></code> (1).</p>
 
   <p>When a <code><a href=#stream>Stream</a></code> object ends for any reason other than
-  the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method being invoke
+  the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method being invoked
   (e.g. because the user rescinds the permission for the page to use
   the local camera, or because the data comes from a finite file and
   the file's end has been reached and the user has not requested that
@@ -74426,7 +74428,7 @@
 
    <li><p>Set the object's <code title=dom-stream-readyState><a href=#dom-stream-readystate>readyState</a></code> attribute to <code title=dom-stream-ENDED><a href=#dom-stream-ended>ENDED</a></code> (2).</li>
 
-   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended>ended</code> at the object.</li>
+   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended><a href=#event-stream-ended>ended</a></code> at the object.</li>
 
   </ol><p>If the end of the stream was reached due to a user request, the
   <a href=#task-source>task source</a> for this <a href=#concept-task title=concept-task>task</a> is the <a href=#user-interaction-task-source>user interaction task
@@ -74474,7 +74476,7 @@
 
    <li><p>Set the object's <code title=dom-stream-readyState><a href=#dom-stream-readystate>readyState</a></code> attribute to <code title=dom-stream-ENDED><a href=#dom-stream-ended>ENDED</a></code> (2).</li>
 
-   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended>ended</code> at the object.</li>
+   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended><a href=#event-stream-ended>ended</a></code> at the object.</li>
 
   </ol><p>The <a href=#task-source>task source</a> for the <a href=#concept-task title=concept-task>tasks</a> queued for the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method is the <a href=#dom-manipulation-task-source>DOM
   manipulation task source</a>.</p>
@@ -74523,7 +74525,7 @@
   all objects implementing the <code><a href=#stream>Stream</a></code> interface:</p>
 
   <table><thead><tr><th><a href=#event-handlers title="event handlers">Event handler</a> <th><a href=#event-handler-event-type>Event handler event type</a>
-   <tbody><tr><td><dfn id=handler-stream-onended title=handler-stream-onended><code>onended</code></dfn> <td> <code title=event-stream-ended>ended</code>
+   <tbody><tr><td><dfn id=handler-stream-onended title=handler-stream-onended><code>onended</code></dfn> <td> <code title=event-stream-ended><a href=#event-stream-ended>ended</a></code>
   </table></div>
 
   <div class=example>
@@ -74726,14 +74728,14 @@
     video.src = URL.getObjectURL(stream);
     video.onerror = function () {
       stream.stop();
-      noStream();
-    }
+    };
+    stream.onended = noStream;
     video.onloadedmetadata = function () {
       canvas.width = video.videoWidth;
       canvas.height = video.videoHeight;
       document.getElementById('splash').hidden = true;
       document.getElementById('app').hidden = false;
-    }
+    };
   }
   function noStream() {
     document.getElementById('errorMessage').textContent = 'No camera available.';
@@ -74770,9 +74772,9 @@
 
   // <span class=XXX>connection quality information</span>
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onconnecting title=handler-PeerConnection-onconnecting>onconnecting</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onopen title=handler-PeerConnection-onopen>onopen</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onerror title=handler-PeerConnection-onerror>onerror</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onclose title=handler-PeerConnection-onclose>onclose</a>;
+           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onopen title=handler-PeerConnection-onopen>onopen</a>;<!--
+           attribute <span>Function</span> <span title="handler-PeerConnection-onerror">onerror</span>;
+           attribute <span>Function</span> <span title="handler-PeerConnection-onclose">onclose</span>;-->
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onmessage title=handler-PeerConnection-onmessage>onmessage</a>;
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onaddstream title=handler-PeerConnection-onaddstream>onaddstream</a>;
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onremovestream title=handler-PeerConnection-onremovestream>onremovestream</a>;
@@ -74882,7 +74884,7 @@
     every message will be received.</p>
 
     <p>When a message sent in this manner from the other peer is
-    received, a <code title=event-stream-message>message</code>
+    received, a <code title=event-stream-message><a href=#event-stream-message>message</a></code>
     event is dispatched at the <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
     <p>The maximum length of <var title="">text</var> is 504 bytes
@@ -74900,7 +74902,7 @@
     peer.</p>
 
     <p>When the other peer starts sending a stream in this manner, an
-    <code title=event-stream-addstream>addstream</code>
+    <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code>
     event is dispatched at the <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
    </dd>
@@ -74912,7 +74914,7 @@
     <p>Steps sending the given stream to the remote peer.</p>
 
     <p>When the other peer stops sending a stream in this manner, a
-    <code title=event-stream-removestream>removestream</code>
+    <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code>
     event is dispatched at the <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
    </dd>
@@ -74934,7 +74936,7 @@
     <p>Returns a live array containing the streams that the user agent
     is currently receiving from the remote peer.</p>
 
-    <p>This array is updated when <code title=event-stream-addstream>addstream</code> and <code title=event-stream-removestream>removestream</code>
+    <p>This array is updated when <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code> and <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code>
     events are fired.</p>
 
    </dd>
@@ -75113,7 +75115,7 @@
    <code title=dom-PeerConnection-NEW><a href=#dom-peerconnection-new>NEW</a></code> (0), then
    <a href=#queue-a-task>queue a task</a> that sets it to <code title=dom-PeerConnection-NEGOTIATING><a href=#dom-peerconnection-negotiating>NEGOTIATING</a></code> (1) and
    then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a>
-   named <code title=event-stream-connecting>connecting</code> at the
+   named <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code> at the
    <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
   </ol><p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a> is
@@ -75182,7 +75184,7 @@
 
    <li><p><a href=#queue-a-task>Queue a task</a> to add the newly created
    <code><a href=#stream>Stream</a></code> object to the end of <var title="">connection</var>'s <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code>
-   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-addstream>addstream</code> with the newly
+   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code> with the newly
    created <code><a href=#stream>Stream</a></code> object at the <var title="">connection</var> object.</li>
 
   </ol><p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a> finds
@@ -75199,7 +75201,7 @@
    there isn't one, then abort these steps.</li>
 
    <li><p><a href=#queue-a-task>Queue a task</a> to remove <var title="">stream</var> from <var title="">connection</var>'s <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code>
-   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-removestream>removestream</code> with <var title="">stream</var> at the <var title="">connection</var>
+   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code> with <var title="">stream</var> at the <var title="">connection</var>
    object.</li>
 
   </ol><p>When the <dfn id=dom-peerconnection-signalingmessage title=dom-PeerConnection-signalingMessage><code title="">signalingMessage()</code></dfn> method is invoked, the
@@ -75265,15 +75267,15 @@
    <li><p><a href=#queue-a-task>Queue a task</a> that sets <var title="">connection</var>'s <a href=#peerconnection-readiness-state><code>PeerConnection</code>
    readiness state</a> to <code title=dom-PeerConnection-NEGOTIATING><a href=#dom-peerconnection-negotiating>NEGOTIATING</a></code> (1) and
    then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a>
-   named <code title=event-stream-connecting>connecting</code> at the
+   named <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code> at the
    <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
   </ol><p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a>
-  completes ICE processing with any active media streams, the user
-  agent must <a href=#queue-a-task>queue a task</a> that sets the
+  completes ICE processing (even if there are no active streams), the
+  user agent must <a href=#queue-a-task>queue a task</a> that sets the
   <code><a href=#peerconnection>PeerConnection</a></code> object's
-  <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness state</a> to <code title=dom-PeerConnection-ACTIVE><a href=#dom-peerconnection-active>ACTIVE</a></code> (2) and then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a> named <code title=event-stream-open>open</code> at the <code><a href=#peerconnection>PeerConnection</a></code>
-  object.</p>
+  <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness state</a> to <code title=dom-PeerConnection-ACTIVE><a href=#dom-peerconnection-active>ACTIVE</a></code> (2) and then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a> named <code title=event-stream-open><a href=#event-stream-open>open</a></code> at the
+  <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
   <p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a>
   restarts ICE processing for any reason (e.g. because a peer is
@@ -75281,7 +75283,7 @@
   task</a> that sets the <code><a href=#peerconnection>PeerConnection</a></code> object's
   <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness state</a> to <code title=dom-PeerConnection-NEGOTIATING><a href=#dom-peerconnection-negotiating>NEGOTIATING</a></code> (1) and
   then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a>
-  named <code title=event-stream-connecting>connecting</code> at the
+  named <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code> at the
   <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
                                    
   <p>The <dfn id=dom-peerconnection-readystate title=dom-PeerConnection-readyState><code title="">readyState</code></dfn> attribute must return the numeric
@@ -75398,11 +75400,11 @@
 
    <li><p>Set the object's <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness
    state</a> to <code title=dom-PeerConnection-CLOSED><a href=#dom-peerconnection-closed>CLOSED</a></code> (3).</li>
-
-   <li><p><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-stream-close>close</code> at the
-   <code><a href=#peerconnection>PeerConnection</a></code> object.</li>
-
+<!--
+   <li><p><span>Queue a task</span> to <span>fire a simple
+   event</span> named <code title="event-stream-close">close</code> at the
+   <code>PeerConnection</code> object.</p></li>
+-->
   </ol><p class=note>The <code title=dom-PeerConnection-localStreams><a href=#dom-peerconnection-localstreams>localStreams</a></code> and
   <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code>
   objects remain in the state they were in when the object was
@@ -75415,13 +75417,13 @@
   interface:</p>
 
   <table><thead><tr><th><a href=#event-handlers title="event handlers">Event handler</a> <th><a href=#event-handler-event-type>Event handler event type</a>
-   <tbody><tr><td><dfn id=handler-peerconnection-onconnecting title=handler-PeerConnection-onconnecting><code>onconnecting</code></dfn> <td> <code title=event-stream-connecting>connecting</code>
-    <tr><td><dfn id=handler-peerconnection-onopen title=handler-PeerConnection-onopen><code>onopen</code></dfn> <td> <code title=event-stream-open>open</code>
-    <tr><td><dfn id=handler-peerconnection-onerror title=handler-PeerConnection-onerror><code>onerror</code></dfn> <td> <code title=event-stream-error>error</code>
-    <tr><td><dfn id=handler-peerconnection-onclose title=handler-PeerConnection-onclose><code>onclose</code></dfn> <td> <code title=event-stream-close>close</code>
-    <tr><td><dfn id=handler-peerconnection-onmessage title=handler-PeerConnection-onmessage><code>onmessage</code></dfn> <td> <code title=event-stream-message>message</code>
-    <tr><td><dfn id=handler-peerconnection-onaddstream title=handler-PeerConnection-onaddstream><code>onaddstream</code></dfn> <td> <code title=event-stream-addstream>addstream</code>
-    <tr><td><dfn id=handler-peerconnection-onremovestream title=handler-PeerConnection-onremovestream><code>onremovestream</code></dfn> <td> <code title=event-stream-removestream>removestream</code>
+   <tbody><tr><td><dfn id=handler-peerconnection-onconnecting title=handler-PeerConnection-onconnecting><code>onconnecting</code></dfn> <td> <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code>
+    <tr><td><dfn id=handler-peerconnection-onopen title=handler-PeerConnection-onopen><code>onopen</code></dfn> <td> <code title=event-stream-open><a href=#event-stream-open>open</a></code>
+<!--    <tr><td><dfn title="handler-PeerConnection-onerror"><code>onerror</code></dfn> <td> <code title="event-stream-error">error</code>-->
+<!--    <tr><td><dfn title="handler-PeerConnection-onclose"><code>onclose</code></dfn> <td> <code title="event-stream-close">close</code>-->
+    <tr><td><dfn id=handler-peerconnection-onmessage title=handler-PeerConnection-onmessage><code>onmessage</code></dfn> <td> <code title=event-stream-message><a href=#event-stream-message>message</a></code>
+    <tr><td><dfn id=handler-peerconnection-onaddstream title=handler-PeerConnection-onaddstream><code>onaddstream</code></dfn> <td> <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code>
+    <tr><td><dfn id=handler-peerconnection-onremovestream title=handler-PeerConnection-onremovestream><code>onremovestream</code></dfn> <td> <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code>
   </table><hr><p>The <a href=#task-source>task source</a> for the <a href=#concept-task title=concept-task>tasks</a> listed in this section is the
   <a href=#networking-task-source>networking task source</a>.</p>
 
@@ -75735,8 +75737,8 @@
 
   <h3 id=event-definitions-0><span class=secno>9.7 </span>Event definitions</h3>
 
-  <p>The <code title=event-stream-addstream>addstream</code> and
-  <code title=event-stream-removestream>removestream</code> events
+  <p>The <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code> and
+  <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code> events
   use the <code><a href=#streamevent>StreamEvent</a></code> interface:</p>
 
   <pre class=idl>interface <dfn id=streamevent>StreamEvent</dfn> : <a href=#event>Event</a> {
@@ -75763,10 +75765,58 @@
 
   <h3 id=event-summary><span class=secno>9.8 </span>Event Summary</h3>
 
-  <p class=XXX>...will add event summary for streams here...</p>
+  <p><i>This section is non-normative.</i></p>
 
-</div>
+  <p>The following event fires on <code><a href=#stream>Stream</a></code> objects:</p>
 
+  <table><thead><tr><th>Event name
+     <th>Interface
+     <th>Dispatched when...
+
+   <tbody><tr><td><dfn id=event-stream-ended title=event-stream-ended><code>ended</code></dfn>
+     <td><code><a href=#event>Event</a></code>
+     <td>The <code><a href=#stream>Stream</a></code> object will no longer stream any data, either because the user revoked the permissions, or because the source device has been ejected, or because the remote peer stopped sending data, or because the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method was invoked.
+
+  </table><p>The following events fire on <code><a href=#peerconnection>PeerConnection</a></code> objects:</p>
+
+  <table><thead><tr><th>Event name
+     <th>Interface
+     <th>Dispatched when...
+
+   <tbody><tr><td><dfn id=event-stream-connecting title=event-stream-connecting><code>connecting</code></dfn>
+     <td><code><a href=#event>Event</a></code>
+     <td>The ICE Agent has begun negotiating with the peer. This can happen multiple times during the lifetime of the <code><a href=#peerconnection>PeerConnection</a></code> object.
+
+    <tr><td><dfn id=event-stream-open title=event-stream-open><code>open</code></dfn>
+     <td><code><a href=#event>Event</a></code>
+     <td>The ICE Agent has finished negotiating with the peer.
+
+<!--
+    <tr>
+     <td><dfn title="event-stream-error"><code>error</code></dfn>
+     <td><code>Event</code>
+     <td>
+
+    <tr>
+     <td><dfn title="event-stream-close"><code>close</code></dfn>
+     <td><code>Event</code>
+     <td>The <code title="dom-PeerConnection-close">close()</code> method was called.
+-->
+
+    <tr><td><dfn id=event-stream-message title=event-stream-message><code>message</code></dfn>
+     <td><code><a href=#messageevent>MessageEvent</a></code>
+     <td>A <a href=#data-udp-media-stream>data UDP media stream</a> message was received.
+
+    <tr><td><dfn id=event-stream-addstream title=event-stream-addstream><code>addstream</code></dfn>
+     <td><code><a href=#streamevent>StreamEvent</a></code>
+     <td>A new stream has been added to the <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code> array.
+
+    <tr><td><dfn id=event-stream-removestream title=event-stream-removestream><code>removestream</code></dfn>
+     <td><code><a href=#streamevent>StreamEvent</a></code>
+     <td>A stream has been removed from the <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code> array.
+
+  </table></div>
+
 <!--PEERCONNECTION-->
 
 

Modified: index
===================================================================
--- index	2011-05-31 22:12:44 UTC (rev 6161)
+++ index	2011-05-31 22:37:16 UTC (rev 6162)
@@ -64618,6 +64618,8 @@
   <p><a href="http://www.whatwg.org/demos/offline/clock/clock2.html">View this example online</a>.</p>
 -->
 
+
+
   <h5 id=appcacheevents><span class=secno>6.6.1.1 </span>Event summary</h5>
 
   <p><i>This section is non-normative.</i></p>
@@ -74424,7 +74426,7 @@
   set to <code title=dom-stream-LIVE><a href=#dom-stream-live>LIVE</a></code> (1).</p>
 
   <p>When a <code><a href=#stream>Stream</a></code> object ends for any reason other than
-  the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method being invoke
+  the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method being invoked
   (e.g. because the user rescinds the permission for the page to use
   the local camera, or because the data comes from a finite file and
   the file's end has been reached and the user has not requested that
@@ -74441,7 +74443,7 @@
 
    <li><p>Set the object's <code title=dom-stream-readyState><a href=#dom-stream-readystate>readyState</a></code> attribute to <code title=dom-stream-ENDED><a href=#dom-stream-ended>ENDED</a></code> (2).</li>
 
-   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended>ended</code> at the object.</li>
+   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended><a href=#event-stream-ended>ended</a></code> at the object.</li>
 
   </ol><p>If the end of the stream was reached due to a user request, the
   <a href=#task-source>task source</a> for this <a href=#concept-task title=concept-task>task</a> is the <a href=#user-interaction-task-source>user interaction task
@@ -74489,7 +74491,7 @@
 
    <li><p>Set the object's <code title=dom-stream-readyState><a href=#dom-stream-readystate>readyState</a></code> attribute to <code title=dom-stream-ENDED><a href=#dom-stream-ended>ENDED</a></code> (2).</li>
 
-   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended>ended</code> at the object.</li>
+   <li><p><a href=#fire-a-simple-event>Fire a simple event</a> named <code title=event-stream-ended><a href=#event-stream-ended>ended</a></code> at the object.</li>
 
   </ol><p>The <a href=#task-source>task source</a> for the <a href=#concept-task title=concept-task>tasks</a> queued for the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method is the <a href=#dom-manipulation-task-source>DOM
   manipulation task source</a>.</p>
@@ -74538,7 +74540,7 @@
   all objects implementing the <code><a href=#stream>Stream</a></code> interface:</p>
 
   <table><thead><tr><th><a href=#event-handlers title="event handlers">Event handler</a> <th><a href=#event-handler-event-type>Event handler event type</a>
-   <tbody><tr><td><dfn id=handler-stream-onended title=handler-stream-onended><code>onended</code></dfn> <td> <code title=event-stream-ended>ended</code>
+   <tbody><tr><td><dfn id=handler-stream-onended title=handler-stream-onended><code>onended</code></dfn> <td> <code title=event-stream-ended><a href=#event-stream-ended>ended</a></code>
   </table></div>
 
   <div class=example>
@@ -74741,14 +74743,14 @@
     video.src = URL.getObjectURL(stream);
     video.onerror = function () {
       stream.stop();
-      noStream();
-    }
+    };
+    stream.onended = noStream;
     video.onloadedmetadata = function () {
       canvas.width = video.videoWidth;
       canvas.height = video.videoHeight;
       document.getElementById('splash').hidden = true;
       document.getElementById('app').hidden = false;
-    }
+    };
   }
   function noStream() {
     document.getElementById('errorMessage').textContent = 'No camera available.';
@@ -74785,9 +74787,9 @@
 
   // <span class=XXX>connection quality information</span>
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onconnecting title=handler-PeerConnection-onconnecting>onconnecting</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onopen title=handler-PeerConnection-onopen>onopen</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onerror title=handler-PeerConnection-onerror>onerror</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onclose title=handler-PeerConnection-onclose>onclose</a>;
+           attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onopen title=handler-PeerConnection-onopen>onopen</a>;<!--
+           attribute <span>Function</span> <span title="handler-PeerConnection-onerror">onerror</span>;
+           attribute <span>Function</span> <span title="handler-PeerConnection-onclose">onclose</span>;-->
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onmessage title=handler-PeerConnection-onmessage>onmessage</a>;
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onaddstream title=handler-PeerConnection-onaddstream>onaddstream</a>;
            attribute <a href=#function>Function</a> <a href=#handler-peerconnection-onremovestream title=handler-PeerConnection-onremovestream>onremovestream</a>;
@@ -74897,7 +74899,7 @@
     every message will be received.</p>
 
     <p>When a message sent in this manner from the other peer is
-    received, a <code title=event-stream-message>message</code>
+    received, a <code title=event-stream-message><a href=#event-stream-message>message</a></code>
     event is dispatched at the <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
     <p>The maximum length of <var title="">text</var> is 504 bytes
@@ -74915,7 +74917,7 @@
     peer.</p>
 
     <p>When the other peer starts sending a stream in this manner, an
-    <code title=event-stream-addstream>addstream</code>
+    <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code>
     event is dispatched at the <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
    </dd>
@@ -74927,7 +74929,7 @@
     <p>Steps sending the given stream to the remote peer.</p>
 
     <p>When the other peer stops sending a stream in this manner, a
-    <code title=event-stream-removestream>removestream</code>
+    <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code>
     event is dispatched at the <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
    </dd>
@@ -74949,7 +74951,7 @@
     <p>Returns a live array containing the streams that the user agent
     is currently receiving from the remote peer.</p>
 
-    <p>This array is updated when <code title=event-stream-addstream>addstream</code> and <code title=event-stream-removestream>removestream</code>
+    <p>This array is updated when <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code> and <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code>
     events are fired.</p>
 
    </dd>
@@ -75128,7 +75130,7 @@
    <code title=dom-PeerConnection-NEW><a href=#dom-peerconnection-new>NEW</a></code> (0), then
    <a href=#queue-a-task>queue a task</a> that sets it to <code title=dom-PeerConnection-NEGOTIATING><a href=#dom-peerconnection-negotiating>NEGOTIATING</a></code> (1) and
    then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a>
-   named <code title=event-stream-connecting>connecting</code> at the
+   named <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code> at the
    <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
   </ol><p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a> is
@@ -75197,7 +75199,7 @@
 
    <li><p><a href=#queue-a-task>Queue a task</a> to add the newly created
    <code><a href=#stream>Stream</a></code> object to the end of <var title="">connection</var>'s <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code>
-   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-addstream>addstream</code> with the newly
+   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code> with the newly
    created <code><a href=#stream>Stream</a></code> object at the <var title="">connection</var> object.</li>
 
   </ol><p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a> finds
@@ -75214,7 +75216,7 @@
    there isn't one, then abort these steps.</li>
 
    <li><p><a href=#queue-a-task>Queue a task</a> to remove <var title="">stream</var> from <var title="">connection</var>'s <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code>
-   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-removestream>removestream</code> with <var title="">stream</var> at the <var title="">connection</var>
+   array, then <a href=#fire-a-stream-event>fire a stream event</a> named <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code> with <var title="">stream</var> at the <var title="">connection</var>
    object.</li>
 
   </ol><p>When the <dfn id=dom-peerconnection-signalingmessage title=dom-PeerConnection-signalingMessage><code title="">signalingMessage()</code></dfn> method is invoked, the
@@ -75280,15 +75282,15 @@
    <li><p><a href=#queue-a-task>Queue a task</a> that sets <var title="">connection</var>'s <a href=#peerconnection-readiness-state><code>PeerConnection</code>
    readiness state</a> to <code title=dom-PeerConnection-NEGOTIATING><a href=#dom-peerconnection-negotiating>NEGOTIATING</a></code> (1) and
    then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a>
-   named <code title=event-stream-connecting>connecting</code> at the
+   named <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code> at the
    <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
   </ol><p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a>
-  completes ICE processing with any active media streams, the user
-  agent must <a href=#queue-a-task>queue a task</a> that sets the
+  completes ICE processing (even if there are no active streams), the
+  user agent must <a href=#queue-a-task>queue a task</a> that sets the
   <code><a href=#peerconnection>PeerConnection</a></code> object's
-  <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness state</a> to <code title=dom-PeerConnection-ACTIVE><a href=#dom-peerconnection-active>ACTIVE</a></code> (2) and then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a> named <code title=event-stream-open>open</code> at the <code><a href=#peerconnection>PeerConnection</a></code>
-  object.</p>
+  <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness state</a> to <code title=dom-PeerConnection-ACTIVE><a href=#dom-peerconnection-active>ACTIVE</a></code> (2) and then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a> named <code title=event-stream-open><a href=#event-stream-open>open</a></code> at the
+  <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
 
   <p>When a <a href=#peerconnection-ice-agent><code>PeerConnection</code> ICE Agent</a>
   restarts ICE processing for any reason (e.g. because a peer is
@@ -75296,7 +75298,7 @@
   task</a> that sets the <code><a href=#peerconnection>PeerConnection</a></code> object's
   <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness state</a> to <code title=dom-PeerConnection-NEGOTIATING><a href=#dom-peerconnection-negotiating>NEGOTIATING</a></code> (1) and
   then <a href=#fire-a-simple-event title="fire a simple event">fires a simple event</a>
-  named <code title=event-stream-connecting>connecting</code> at the
+  named <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code> at the
   <code><a href=#peerconnection>PeerConnection</a></code> object.</p>
                                    
   <p>The <dfn id=dom-peerconnection-readystate title=dom-PeerConnection-readyState><code title="">readyState</code></dfn> attribute must return the numeric
@@ -75413,11 +75415,11 @@
 
    <li><p>Set the object's <a href=#peerconnection-readiness-state><code>PeerConnection</code> readiness
    state</a> to <code title=dom-PeerConnection-CLOSED><a href=#dom-peerconnection-closed>CLOSED</a></code> (3).</li>
-
-   <li><p><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-stream-close>close</code> at the
-   <code><a href=#peerconnection>PeerConnection</a></code> object.</li>
-
+<!--
+   <li><p><span>Queue a task</span> to <span>fire a simple
+   event</span> named <code title="event-stream-close">close</code> at the
+   <code>PeerConnection</code> object.</p></li>
+-->
   </ol><p class=note>The <code title=dom-PeerConnection-localStreams><a href=#dom-peerconnection-localstreams>localStreams</a></code> and
   <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code>
   objects remain in the state they were in when the object was
@@ -75430,13 +75432,13 @@
   interface:</p>
 
   <table><thead><tr><th><a href=#event-handlers title="event handlers">Event handler</a> <th><a href=#event-handler-event-type>Event handler event type</a>
-   <tbody><tr><td><dfn id=handler-peerconnection-onconnecting title=handler-PeerConnection-onconnecting><code>onconnecting</code></dfn> <td> <code title=event-stream-connecting>connecting</code>
-    <tr><td><dfn id=handler-peerconnection-onopen title=handler-PeerConnection-onopen><code>onopen</code></dfn> <td> <code title=event-stream-open>open</code>
-    <tr><td><dfn id=handler-peerconnection-onerror title=handler-PeerConnection-onerror><code>onerror</code></dfn> <td> <code title=event-stream-error>error</code>
-    <tr><td><dfn id=handler-peerconnection-onclose title=handler-PeerConnection-onclose><code>onclose</code></dfn> <td> <code title=event-stream-close>close</code>
-    <tr><td><dfn id=handler-peerconnection-onmessage title=handler-PeerConnection-onmessage><code>onmessage</code></dfn> <td> <code title=event-stream-message>message</code>
-    <tr><td><dfn id=handler-peerconnection-onaddstream title=handler-PeerConnection-onaddstream><code>onaddstream</code></dfn> <td> <code title=event-stream-addstream>addstream</code>
-    <tr><td><dfn id=handler-peerconnection-onremovestream title=handler-PeerConnection-onremovestream><code>onremovestream</code></dfn> <td> <code title=event-stream-removestream>removestream</code>
+   <tbody><tr><td><dfn id=handler-peerconnection-onconnecting title=handler-PeerConnection-onconnecting><code>onconnecting</code></dfn> <td> <code title=event-stream-connecting><a href=#event-stream-connecting>connecting</a></code>
+    <tr><td><dfn id=handler-peerconnection-onopen title=handler-PeerConnection-onopen><code>onopen</code></dfn> <td> <code title=event-stream-open><a href=#event-stream-open>open</a></code>
+<!--    <tr><td><dfn title="handler-PeerConnection-onerror"><code>onerror</code></dfn> <td> <code title="event-stream-error">error</code>-->
+<!--    <tr><td><dfn title="handler-PeerConnection-onclose"><code>onclose</code></dfn> <td> <code title="event-stream-close">close</code>-->
+    <tr><td><dfn id=handler-peerconnection-onmessage title=handler-PeerConnection-onmessage><code>onmessage</code></dfn> <td> <code title=event-stream-message><a href=#event-stream-message>message</a></code>
+    <tr><td><dfn id=handler-peerconnection-onaddstream title=handler-PeerConnection-onaddstream><code>onaddstream</code></dfn> <td> <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code>
+    <tr><td><dfn id=handler-peerconnection-onremovestream title=handler-PeerConnection-onremovestream><code>onremovestream</code></dfn> <td> <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code>
   </table><hr><p>The <a href=#task-source>task source</a> for the <a href=#concept-task title=concept-task>tasks</a> listed in this section is the
   <a href=#networking-task-source>networking task source</a>.</p>
 
@@ -75750,8 +75752,8 @@
 
   <h3 id=event-definitions-0><span class=secno>9.7 </span>Event definitions</h3>
 
-  <p>The <code title=event-stream-addstream>addstream</code> and
-  <code title=event-stream-removestream>removestream</code> events
+  <p>The <code title=event-stream-addstream><a href=#event-stream-addstream>addstream</a></code> and
+  <code title=event-stream-removestream><a href=#event-stream-removestream>removestream</a></code> events
   use the <code><a href=#streamevent>StreamEvent</a></code> interface:</p>
 
   <pre class=idl>interface <dfn id=streamevent>StreamEvent</dfn> : <a href=#event>Event</a> {
@@ -75778,10 +75780,58 @@
 
   <h3 id=event-summary><span class=secno>9.8 </span>Event Summary</h3>
 
-  <p class=XXX>...will add event summary for streams here...</p>
+  <p><i>This section is non-normative.</i></p>
 
-</div>
+  <p>The following event fires on <code><a href=#stream>Stream</a></code> objects:</p>
 
+  <table><thead><tr><th>Event name
+     <th>Interface
+     <th>Dispatched when...
+
+   <tbody><tr><td><dfn id=event-stream-ended title=event-stream-ended><code>ended</code></dfn>
+     <td><code><a href=#event>Event</a></code>
+     <td>The <code><a href=#stream>Stream</a></code> object will no longer stream any data, either because the user revoked the permissions, or because the source device has been ejected, or because the remote peer stopped sending data, or because the <code title=dom-stream-stop><a href=#dom-stream-stop>stop()</a></code> method was invoked.
+
+  </table><p>The following events fire on <code><a href=#peerconnection>PeerConnection</a></code> objects:</p>
+
+  <table><thead><tr><th>Event name
+     <th>Interface
+     <th>Dispatched when...
+
+   <tbody><tr><td><dfn id=event-stream-connecting title=event-stream-connecting><code>connecting</code></dfn>
+     <td><code><a href=#event>Event</a></code>
+     <td>The ICE Agent has begun negotiating with the peer. This can happen multiple times during the lifetime of the <code><a href=#peerconnection>PeerConnection</a></code> object.
+
+    <tr><td><dfn id=event-stream-open title=event-stream-open><code>open</code></dfn>
+     <td><code><a href=#event>Event</a></code>
+     <td>The ICE Agent has finished negotiating with the peer.
+
+<!--
+    <tr>
+     <td><dfn title="event-stream-error"><code>error</code></dfn>
+     <td><code>Event</code>
+     <td>
+
+    <tr>
+     <td><dfn title="event-stream-close"><code>close</code></dfn>
+     <td><code>Event</code>
+     <td>The <code title="dom-PeerConnection-close">close()</code> method was called.
+-->
+
+    <tr><td><dfn id=event-stream-message title=event-stream-message><code>message</code></dfn>
+     <td><code><a href=#messageevent>MessageEvent</a></code>
+     <td>A <a href=#data-udp-media-stream>data UDP media stream</a> message was received.
+
+    <tr><td><dfn id=event-stream-addstream title=event-stream-addstream><code>addstream</code></dfn>
+     <td><code><a href=#streamevent>StreamEvent</a></code>
+     <td>A new stream has been added to the <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code> array.
+
+    <tr><td><dfn id=event-stream-removestream title=event-stream-removestream><code>removestream</code></dfn>
+     <td><code><a href=#streamevent>StreamEvent</a></code>
+     <td>A stream has been removed from the <code title=dom-PeerConnection-remoteStreams><a href=#dom-peerconnection-remotestreams>remoteStreams</a></code> array.
+
+  </table></div>
+
 <!--PEERCONNECTION-->
 <!--POSTMSG-->
 

Modified: source
===================================================================
--- source	2011-05-31 22:12:44 UTC (rev 6161)
+++ source	2011-05-31 22:37:16 UTC (rev 6162)
@@ -37498,6 +37498,8 @@
      <td>Either the <code title="dom-MediaController-volume">volume</code> attribute or the <code title="dom-MediaController-muted">muted</code> attribute has just been updated.
   </table>
 
+
+
   <div class="impl">
 
   <h5>Security and privacy considerations</h5>
@@ -73629,6 +73631,8 @@
   <p><a href="http://www.whatwg.org/demos/offline/clock/clock2.html">View this example online</a>.</p>
 -->
 
+
+
   <h5 id="appcacheevents">Event summary</h5>
 
   <!--END dev-html--><p><i>This section is non-normative.</i></p><!--START dev-html-->
@@ -85089,7 +85093,7 @@
   set to <code title="dom-stream-LIVE">LIVE</code> (1).</p>
 
   <p>When a <code>Stream</code> object ends for any reason other than
-  the <code title="dom-stream-stop">stop()</code> method being invoke
+  the <code title="dom-stream-stop">stop()</code> method being invoked
   (e.g. because the user rescinds the permission for the page to use
   the local camera, or because the data comes from a finite file and
   the file's end has been reached and the user has not requested that
@@ -85465,14 +85469,14 @@
     video.src = URL.getObjectURL(stream);
     video.onerror = function () {
       stream.stop();
-      noStream();
-    }
+    };
+    stream.onended = noStream;
     video.onloadedmetadata = function () {
       canvas.width = video.videoWidth;
       canvas.height = video.videoHeight;
       document.getElementById('splash').hidden = true;
       document.getElementById('app').hidden = false;
-    }
+    };
   }
   function noStream() {
     document.getElementById('errorMessage').textContent = 'No camera available.';
@@ -85509,9 +85513,9 @@
 
   // <span class="XXX">connection quality information</span>
            attribute <span>Function</span> <span title="handler-PeerConnection-onconnecting">onconnecting</span>;
-           attribute <span>Function</span> <span title="handler-PeerConnection-onopen">onopen</span>;
+           attribute <span>Function</span> <span title="handler-PeerConnection-onopen">onopen</span>;<!--
            attribute <span>Function</span> <span title="handler-PeerConnection-onerror">onerror</span>;
-           attribute <span>Function</span> <span title="handler-PeerConnection-onclose">onclose</span>;
+           attribute <span>Function</span> <span title="handler-PeerConnection-onclose">onclose</span>;-->
            attribute <span>Function</span> <span title="handler-PeerConnection-onmessage">onmessage</span>;
            attribute <span>Function</span> <span title="handler-PeerConnection-onaddstream">onaddstream</span>;
            attribute <span>Function</span> <span title="handler-PeerConnection-onremovestream">onremovestream</span>;
@@ -86098,14 +86102,14 @@
   </ol>
 
   <p>When a <span><code>PeerConnection</code> ICE Agent</span>
-  completes ICE processing with any active media streams, the user
-  agent must <span>queue a task</span> that sets the
+  completes ICE processing (even if there are no active streams), the
+  user agent must <span>queue a task</span> that sets the
   <code>PeerConnection</code> object's
   <span><code>PeerConnection</code> readiness state</span> to <code
   title="dom-PeerConnection-ACTIVE">ACTIVE</code> (2) and then <span
   title="fire a simple event">fires a simple event</span> named <code
-  title="event-stream-open">open</code> at the <code>PeerConnection</code>
-  object.</p>
+  title="event-stream-open">open</code> at the
+  <code>PeerConnection</code> object.</p>
 
   <p>When a <span><code>PeerConnection</code> ICE Agent</span>
   restarts ICE processing for any reason (e.g. because a peer is
@@ -86263,11 +86267,11 @@
    <li><p>Set the object's <span><code>PeerConnection</code> readiness
    state</span> to <code
    title="dom-PeerConnection-CLOSED">CLOSED</code> (3).</p></li>
-
+<!--
    <li><p><span>Queue a task</span> to <span>fire a simple
    event</span> named <code title="event-stream-close">close</code> at the
    <code>PeerConnection</code> object.</p></li>
-
+-->
   </ol>
 
   <p class="note">The <code
@@ -86290,8 +86294,8 @@
    <tbody>
     <tr><td><dfn title="handler-PeerConnection-onconnecting"><code>onconnecting</code></dfn> <td> <code title="event-stream-connecting">connecting</code>
     <tr><td><dfn title="handler-PeerConnection-onopen"><code>onopen</code></dfn> <td> <code title="event-stream-open">open</code>
-    <tr><td><dfn title="handler-PeerConnection-onerror"><code>onerror</code></dfn> <td> <code title="event-stream-error">error</code>
-    <tr><td><dfn title="handler-PeerConnection-onclose"><code>onclose</code></dfn> <td> <code title="event-stream-close">close</code>
+<!--    <tr><td><dfn title="handler-PeerConnection-onerror"><code>onerror</code></dfn> <td> <code title="event-stream-error">error</code>-->
+<!--    <tr><td><dfn title="handler-PeerConnection-onclose"><code>onclose</code></dfn> <td> <code title="event-stream-close">close</code>-->
     <tr><td><dfn title="handler-PeerConnection-onmessage"><code>onmessage</code></dfn> <td> <code title="event-stream-message">message</code>
     <tr><td><dfn title="handler-PeerConnection-onaddstream"><code>onaddstream</code></dfn> <td> <code title="event-stream-addstream">addstream</code>
     <tr><td><dfn title="handler-PeerConnection-onremovestream"><code>onremovestream</code></dfn> <td> <code title="event-stream-removestream">removestream</code>
@@ -86679,8 +86683,76 @@
 
   <h3>Event Summary</h3>
 
-  <p class="XXX">...will add event summary for streams here...</p>
+  <!--END dev-html--><p><i>This section is non-normative.</i></p><!--START dev-html-->
 
+  <p>The following event fires on <code>Stream</code> objects:</p>
+
+  <table>
+   <thead>
+    <tr>
+     <th>Event name
+     <th>Interface
+     <th>Dispatched when...
+
+   <tbody>
+    <tr>
+     <td><dfn title="event-stream-ended"><code>ended</code></dfn>
+     <td><code>Event</code>
+     <td>The <code>Stream</code> object will no longer stream any data, either because the user revoked the permissions, or because the source device has been ejected, or because the remote peer stopped sending data, or because the <code title="dom-stream-stop">stop()</code> method was invoked.
+
+  </table>
+
+
+  <p>The following events fire on <code>PeerConnection</code> objects:</p>
+
+  <table>
+   <thead>
+    <tr>
+     <th>Event name
+     <th>Interface
+     <th>Dispatched when...
+
+   <tbody>
+
+    <tr>
+     <td><dfn title="event-stream-connecting"><code>connecting</code></dfn>
+     <td><code>Event</code>
+     <td>The ICE Agent has begun negotiating with the peer. This can happen multiple times during the lifetime of the <code>PeerConnection</code> object.
+
+    <tr>
+     <td><dfn title="event-stream-open"><code>open</code></dfn>
+     <td><code>Event</code>
+     <td>The ICE Agent has finished negotiating with the peer.
+
+<!--
+    <tr>
+     <td><dfn title="event-stream-error"><code>error</code></dfn>
+     <td><code>Event</code>
+     <td>
+
+    <tr>
+     <td><dfn title="event-stream-close"><code>close</code></dfn>
+     <td><code>Event</code>
+     <td>The <code title="dom-PeerConnection-close">close()</code> method was called.
+-->
+
+    <tr>
+     <td><dfn title="event-stream-message"><code>message</code></dfn>
+     <td><code>MessageEvent</code>
+     <td>A <span>data UDP media stream</span> message was received.
+
+    <tr>
+     <td><dfn title="event-stream-addstream"><code>addstream</code></dfn>
+     <td><code>StreamEvent</code>
+     <td>A new stream has been added to the <code title="dom-PeerConnection-remoteStreams">remoteStreams</code> array.
+
+    <tr>
+     <td><dfn title="event-stream-removestream"><code>removestream</code></dfn>
+     <td><code>StreamEvent</code>
+     <td>A stream has been removed from the <code title="dom-PeerConnection-remoteStreams">remoteStreams</code> array.
+
+  </table>
+
 </div>
 
 <!--END rtc--><!--START w3c-html--><!--PEERCONNECTION-->




More information about the Commit-Watchers mailing list