<!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>