summaryrefslogtreecommitdiffstats
path: root/dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html')
-rw-r--r--dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html80
1 files changed, 80 insertions, 0 deletions
diff --git a/dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html b/dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html
new file mode 100644
index 000000000..7f4b52b06
--- /dev/null
+++ b/dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <script type="application/javascript" src="pc.js"></script>
+</head>
+<body>
+<pre id="test">
+<script type="application/javascript">
+"use strict";
+
+createHTML({
+ title: "MediaStream's 'addtrack' and 'removetrack' events with gUM",
+ bug: "1208328"
+});
+
+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 => {
+ const localStream = test.pcLocal._pc.getLocalStreams()[0];
+ ok(localStream, "Should have local stream");
+
+ const remoteStream = test.pcRemote._pc.getRemoteStreams()[0];
+ ok(remoteStream, "Should have remote stream");
+
+ 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);
+
+ 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");
+ })
+ });
+ },
+ ],
+ [
+ function PC_REMOTE_CHECK_EVENTS(test) {
+ return eventsPromise;
+ },
+ ]
+ );
+
+ test.setMediaConstraints([{audio: true, video: true}], []);
+ test.run();
+});
+</script>
+</pre>
+</body>
+</html>