Bug 1309886 - Check that pre-renegotiation track ends in test_pc_addtrack_removetrack_events.html. r?drno draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 13 Oct 2016 15:30:01 +0200
changeset 433270 fdba6df0c95e07588b44c36bc7b3c824d094696d
parent 432230 3e73fd638e687a4d7f46613586e5156b8e2af846
child 433271 e95076ab1e0da732abd05dddea6a39579db6c6a9
push id34525
push userbmo:pehrson@telenordigital.com
push dateThu, 03 Nov 2016 10:23:18 +0000
reviewersdrno
bugs1309886
milestone52.0a1
Bug 1309886 - Check that pre-renegotiation track ends in test_pc_addtrack_removetrack_events.html. r?drno MozReview-Commit-ID: FEacxtjZ5jZ
dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html
--- a/dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html
+++ b/dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html
@@ -15,39 +15,53 @@ createHTML({
 
 runNetworkTest(function (options) {
   let test = new PeerConnectionTest(options);
   let eventsPromise;
   addRenegotiation(test.chain,
     [
       function PC_LOCAL_SWAP_VIDEO_TRACKS(test) {
         return getUserMedia({video: true}).then(stream => {
-          let localStream = test.pcLocal._pc.getLocalStreams()[0];
-          let remoteStream = test.pcRemote._pc.getRemoteStreams()[0];
+          const localStream = test.pcLocal._pc.getLocalStreams()[0];
+          ok(localStream, "Should have local stream");
 
-          let newTrack = stream.getTracks()[0];
+          const remoteStream = test.pcRemote._pc.getRemoteStreams()[0];
+          ok(remoteStream, "Should have remote stream");
 
-          let videoSenderIndex =
+          const newTrack = stream.getTracks()[0];
+
+          const videoSenderIndex =
             test.pcLocal._pc.getSenders().findIndex(s => s.track.kind == "video");
           isnot(videoSenderIndex, -1, "Should have video sender");
 
           test.pcLocal.removeSender(videoSenderIndex);
           test.pcLocal.attachLocalTrack(stream.getTracks()[0], localStream);
 
-          eventsPromise = haveEvent(remoteStream, "addtrack", wait(50000, "No addtrack event"))
+          const addTrackPromise = haveEvent(remoteStream, "addtrack",
+              wait(50000, new Error("No addtrack event")))
             .then(trackEvent => {
               ok(trackEvent instanceof MediaStreamTrackEvent,
                  "Expected event to be instance of MediaStreamTrackEvent");
               is(trackEvent.type, "addtrack",
                  "Expected addtrack event type");
               is(trackEvent.track.id, newTrack.id, "Expected track in event");
               is(trackEvent.track.readyState, "live",
                  "added track should be live");
             })
             .then(() => haveNoEvent(remoteStream, "addtrack"));
+
+          const remoteTrack = test.pcRemote._pc.getReceivers()
+              .map(r => r.track)
+              .find(t => t.kind == "video");
+          ok(remoteTrack, "Should have received remote track");
+          const endedPromise = haveEvent(remoteTrack, "ended",
+              wait(50000, new Error("No ended event")));
+
+          eventsPromise = Promise.all([addTrackPromise, endedPromise]);
+
           remoteStream.addEventListener("removetrack",
                                         function onRemovetrack(trackEvent) {
             ok(false, "UA shouldn't raise 'removetrack' when receiving peer connection");
           })
         });
       },
     ],
     [