1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<!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");
};
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);
},
]);
return test.run();
});
</script>
</pre>
</body>
</html>
|