Bug 1271669 - Test that we can pc.addTrack() with any MediaStream. r?jib draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 19 May 2016 15:29:24 +0200
changeset 369103 2e9c753afbf6386107ddde8c7ffa781a750cee77
parent 366346 c3f5e6079284a7b7053c41f05d0fe06ff031db03
child 369104 66235a4b84c1467dab257e1bc024ee899a2f7ec0
push id18740
push userpehrsons@gmail.com
push dateFri, 20 May 2016 08:44:08 +0000
reviewersjib
bugs1271669
milestone49.0a1
Bug 1271669 - Test that we can pc.addTrack() with any MediaStream. r?jib MozReview-Commit-ID: KvcN1RtGN5X
dom/media/tests/mochitest/mochitest.ini
dom/media/tests/mochitest/test_peerConnection_constructedStream.html
--- a/dom/media/tests/mochitest/mochitest.ini
+++ b/dom/media/tests/mochitest/mochitest.ini
@@ -136,16 +136,17 @@ skip-if = toolkit == 'gonk' || buildapp 
 [test_peerConnection_multiple_captureStream_canvas_2d.html]
 skip-if = toolkit == 'gonk' || buildapp == 'mulet' || (android_version == '18' && debug) # b2g(Bug 960442, video support for WebRTC is disabled on b2g), android(Bug 1189784, timeouts on 4.3 emulator)
 [test_peerConnection_captureStream_canvas_webgl.html]
 skip-if = toolkit == 'gonk' || buildapp == 'mulet' # b2g(Bug 960442, video support for WebRTC is disabled on b2g)
 # [test_peerConnection_certificates.html] # bug 1180968
 # skip-if = toolkit == 'gonk' || buildapp == 'mulet' # b2g (Bug 1059867)
 [test_peerConnection_close.html]
 [test_peerConnection_closeDuringIce.html]
+[test_peerConnection_constructedStream.html]
 [test_peerConnection_errorCallbacks.html]
 [test_peerConnection_iceFailure.html]
 skip-if = toolkit == 'gonk' || buildapp == 'mulet' || os == 'linux' || os == 'mac' || os == 'win' || android_version == '18' # Disabling because of test failures on B2G emulator (Bug 1180388 for win, mac and linux), android(Bug 1189784, timeouts on 4.3 emulator)
 [test_peerConnection_forwarding_basicAudioVideoCombined.html]
 skip-if = toolkit == 'gonk' || buildapp == 'mulet' || android_version == '18' # b2g(Bug 960442, video support for WebRTC is disabled on b2g), android(Bug 1189784, timeouts on 4.3 emulator)
 [test_peerConnection_noTrickleAnswer.html]
 skip-if = toolkit == 'gonk' # B2G emulator is too slow to handle a two-way audio call reliably
 [test_peerConnection_noTrickleOffer.html]
new file mode 100644
--- /dev/null
+++ b/dom/media/tests/mochitest/test_peerConnection_constructedStream.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <script type="application/javascript" src="pc.js"></script>
+</head>
+<body>
+<pre id="test">
+<script type="application/javascript;version=1.8">
+createHTML({
+  bug: "1271669",
+  title: "Test that pc.addTrack() accepts any MediaStream",
+  visible: true
+});
+
+runNetworkTest(() => {
+  var test = new PeerConnectionTest();
+  var constructedStream;
+  var dummyStream = new MediaStream();
+  var dummyStreamTracks = [];
+
+  test.setMediaConstraints([ {audio: true, video: true}
+                           , {audio: true}
+                           , {video: true}
+                           ], []);
+  test.chain.replace("PC_LOCAL_GUM", [
+    function PC_LOCAL_GUM_CONSTRUCTED_STREAM(test) {
+      return getUserMedia(test.pcLocal.constraints[0]).then(stream => {
+        constructedStream = new MediaStream(stream.getTracks());
+        test.pcLocal.attachLocalStream(constructedStream);
+      });
+    },
+    function PC_LOCAL_GUM_DUMMY_STREAM(test) {
+      return getUserMedia(test.pcLocal.constraints[1])
+        .then(stream => dummyStreamTracks.push(...stream.getTracks()))
+        .then(() => getUserMedia(test.pcLocal.constraints[2]))
+        .then(stream => dummyStreamTracks.push(...stream.getTracks()))
+        .then(() => dummyStreamTracks.forEach(t =>
+          test.pcLocal.attachLocalTrack(t, dummyStream)));
+    },
+  ]);
+
+  let checkSentTracksReceived = (sentStreamId, sentTracks) => {
+    let receivedStream =
+      test.pcRemote._pc.getRemoteStreams().find(s => s.id == sentStreamId);
+    ok(receivedStream, "We should receive a stream with with the sent stream's id (" + sentStreamId + ")");
+    if (!receivedStream) {
+      return;
+    }
+
+    is(receivedStream.getTracks().length, sentTracks.length,
+       "Should receive same number of tracks as were sent");
+    sentTracks.forEach(t =>
+      ok(receivedStream.getTracks().find(t2 => t.id == t2.id),
+         "The sent track (" + t.id + ") should exist on the receive side"));
+  };
+
+  test.chain.append([
+    function PC_REMOTE_CHECK_RECEIVED_CONSTRUCTED_STREAM() {
+      checkSentTracksReceived(constructedStream.id, constructedStream.getTracks());
+    },
+    function PC_REMOTE_CHECK_RECEIVED_DUMMY_STREAM() {
+      checkSentTracksReceived(dummyStream.id, dummyStreamTracks);
+    },
+  ]);
+  test.run();
+});
+</script>
+</pre>
+</body>
+</html>