Bug 1309886 - Check that pre-renegotiation track ends in test_pc_addtrack_removetrack_events.html. r?drno
MozReview-Commit-ID: FEacxtjZ5jZ
--- 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");
})
});
},
],
[