Bug 1093835 - Check video flow stopping after removing video track and renegotiating. r?jib draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 04 May 2017 12:46:20 +0200
changeset 572605 d31f6b31651901160aa1d07cee7eeafe87311506
parent 572604 9c8a3b7eb50128ab5a0f618377529957b6b9f1e9
child 572606 2c8349ced96d881d372334417b4c7ebb224fd505
child 572623 35212ec0c056c254aa36799e7cdd4b32ed27023c
child 572632 75e98b414faf3f7fc26ef0b1f21bfbfdda9dff48
child 572682 e2ccec34dc7f92299227c3abbdd9149d5cb15e79
push id57123
push userbmo:pehrson@telenordigital.com
push dateThu, 04 May 2017 11:29:40 +0000
reviewersjib
bugs1093835
milestone55.0a1
Bug 1093835 - Check video flow stopping after removing video track and renegotiating. r?jib MozReview-Commit-ID: Hp3YOki9O5E
dom/media/tests/mochitest/test_peerConnection_removeVideoTrack.html
--- a/dom/media/tests/mochitest/test_peerConnection_removeVideoTrack.html
+++ b/dom/media/tests/mochitest/test_peerConnection_removeVideoTrack.html
@@ -6,30 +6,50 @@
 <body>
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "1017888",
     title: "Renegotiation: remove video track"
   });
 
-  var test;
   runNetworkTest(function (options) {
-    test = new PeerConnectionTest(options);
+    const test = new PeerConnectionTest(options);
+    let receivedTrack, element;
     addRenegotiation(test.chain,
       [
+        function PC_REMOTE_SETUP_HELPER(test) {
+          is(test.pcRemote._pc.getReceivers().length, 1,
+             "pcRemote should have one receiver before renegotiation");
+
+          receivedTrack = test.pcRemote._pc.getReceivers()[0].track;
+          is(receivedTrack.readyState, "live",
+             "The received track should be live");
+
+          element = createMediaElement("video", "pcRemoteReceivedVideo");
+          element.srcObject = new MediaStream([receivedTrack]);
+          return haveEvent(element, "loadeddata");
+        },
         function PC_LOCAL_REMOVE_VIDEO_TRACK(test) {
           test.setOfferOptions({ offerToReceiveVideo: true });
           test.setMediaConstraints([], [{video: true}]);
           return test.pcLocal.removeSender(0);
         },
+      ],
+      [
+        function PC_REMOTE_CHECK_FLOW_STOPPED(test) {
+          is(test.pcRemote._pc.getReceivers().length, 0,
+             "pcRemote should have no more receivers");
+          is(receivedTrack.readyState, "ended",
+             "The received track should have ended");
+          is(element.ended, true,
+             "Element playing the removed track should have ended");
+        },
       ]
     );
 
-    // TODO(bug 1093835): figure out how to verify that media stopped flowing from pcLocal
-
     test.setMediaConstraints([{video: true}], [{video: true}]);
     test.run();
   });
 </script>
 </pre>
 </body>
 </html>