gecko-dev/dom/media/tests/mochitest/test_peerConnection_constru...

71 строка
2.3 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<script type="application/javascript" src="pc.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
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>