Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getSenders.html

Issue 2749703005: RTCRtpSender with track behind RuntimeEnabled flag (Closed)
Patch Set: external/wpt/webrtc/RTCPeerConnection-idl-expected.txt updated passing 2 more tests Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>RTCPeerConnection.getSenders</title>
5 <script src="../../resources/testharness.js"></script>
6 <script src="../../resources/testharnessreport.js"></script>
7 </head>
8 <body>
9 <script>
10 promise_test(function() {
11 let pc = new RTCPeerConnection();
12 return createStreams({audio:true}, 1)
13 .then(function(streams) {
14 for (let i = 0; i < streams.length; ++i) {
15 pc.addStream(streams[i]);
16 }
17 verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, true, false);
18 verifyLocalTracksHaveSenders(pc);
19 // Make sure object identities are preserved between calls.
20 assert_array_equals(pc.getSenders(), pc.getSenders());
21 });
22 }, 'getSenders() for a single audio track.');
23
24 promise_test(function() {
25 let pc = new RTCPeerConnection();
26 return createStreams({video:true}, 1)
27 .then(function(streams) {
28 for (let i = 0; i < streams.length; ++i) {
29 pc.addStream(streams[i]);
30 }
31 verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, false, true);
32 verifyLocalTracksHaveSenders(pc);
33 // Make sure object identities are preserved between calls.
34 assert_array_equals(pc.getSenders(), pc.getSenders());
35 });
36 }, 'getSenders() for a single video track.');
37
38 promise_test(function() {
39 let pc = new RTCPeerConnection();
40 return createStreams({audio:true, video:true}, 1)
41 .then(function(streams) {
42 for (let i = 0; i < streams.length; ++i) {
43 pc.addStream(streams[i]);
44 }
45 verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, true, true);
46 verifyLocalTracksHaveSenders(pc);
47 // Make sure object identities are preserved between calls.
48 assert_array_equals(pc.getSenders(), pc.getSenders());
49 });
50 }, 'getSenders() for a single stream with an audio and video track.');
51
52 promise_test(function() {
53 let pc = new RTCPeerConnection();
54 return createStreams({audio:true, video:true}, 2)
55 .then(function(streams) {
56 for (let i = 0; i < streams.length; ++i) {
57 pc.addStream(streams[i]);
58 }
59 verifyStreamAndTrackCounts(pc.getLocalStreams(), 2, true, true);
60 verifyLocalTracksHaveSenders(pc);
61 // Make sure object identities are preserved between calls.
62 assert_array_equals(pc.getSenders(), pc.getSenders());
63 });
64 }, 'getSenders() for a multiple audio-video streams.');
65
66 promise_test(function() {
67 let pc = new RTCPeerConnection();
68 let senders = new Set();
69 return createStreams({audio:true, video:true}, 2)
70 .then(function(streams) {
71 for (let i = 0; i < streams.length; ++i) {
72 pc.addStream(streams[i]);
73 }
74 verifyStreamAndTrackCounts(pc.getLocalStreams(), 2, true, true);
75 verifyLocalTracksHaveSenders(pc);
76 // Make sure object identities are preserved between calls.
77 assert_array_equals(pc.getSenders(), pc.getSenders());
78
79 for (let i = 0; i < pc.getSenders().length; ++i)
80 senders.add(pc.getSenders()[i]);
81 // 2 senders per stream, one for audio and one for video
82 assert_equals(senders.size, 4);
83
84 pc.removeStream(pc.getLocalStreams()[0]);
85 verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, true, true);
86 verifyLocalTracksHaveSenders(pc);
87 // Make sure object identities are preserved between calls.
88 assert_array_equals(pc.getSenders(), pc.getSenders());
89
90 for (let i = 0; i < pc.getSenders().length; ++i)
91 assert_true(senders.has(pc.getSenders()[i]));
92
93 return createStreams({audio:true, video:true}, 1);
94 })
95 .then(function(streams) {
96 for (let i = 0; i < streams.length; ++i) {
97 pc.addStream(streams[i]);
98 }
99 verifyStreamAndTrackCounts(pc.getLocalStreams(), 2, true, true);
100 verifyLocalTracksHaveSenders(pc);
101 // Make sure object identities are preserved between calls.
102 assert_array_equals(pc.getSenders(), pc.getSenders());
103
104 // |senders| contains all senders so far (4), including the ones for
105 // the removed streams. The set does not contain duplicates, so adding all
106 // senders here should only increase the size for the new stream (2 new
107 // senders).
108 for (let i = 0; i < pc.getSenders().length; ++i)
109 senders.add(pc.getSenders()[i]);
110 assert_equals(senders.size, 6);
111
112 while (pc.getLocalStreams().length > 0) {
113 pc.removeStream(pc.getLocalStreams()[0]);
114 }
115 assert_equals(pc.getLocalStreams().length, 0);
116 assert_equals(pc.getSenders().length, 0);
117 });
118 }, 'getSenders() for streams being added and removed.');
119
120 /**
121 * Helper functions to tests.
122 */
123
124 function createStreams(constraints, numStreams, streamsSoFar = []) {
125 if (numStreams == 0) {
126 return Promise.resolve(streamsSoFar);;
127 }
128 return navigator.mediaDevices.getUserMedia(constraints)
129 .then(function(stream) {
130 return createStreams(constraints,
131 numStreams - 1,
132 streamsSoFar.concat([stream]));
133 });
134 }
135
136 function verifyStreamAndTrackCounts(streams, streamCount, audio, video) {
137 assert_equals(streams.length, streamCount);
138 for (let i = 0; i < streams.length; ++i) {
139 assert_equals(streams[i].getAudioTracks().length, audio ? 1 : 0);
140 assert_equals(streams[i].getVideoTracks().length, video ? 1 : 0);
141 }
142 }
143
144 function verifyLocalTracksHaveSenders(pc) {
145 let localTracks = new Set();
146 let localStreams = pc.getLocalStreams();
147 for (let i = 0; i < localStreams.length; ++i) {
148 let localStreamTracks = localStreams[i].getTracks();
149 for (let j = 0; j < localStreamTracks.length; ++j) {
150 localTracks.add(localStreamTracks[j]);
151 }
152 }
153
154 let senderTracks = new Set();
155 let senders = pc.getSenders();
156 for (let i = 0; i < senders.length; ++i) {
157 assert_true(senders[i] != null);
158 assert_true(senders[i].track != null);
159 assert_true(localTracks.has(senders[i].track));
160 assert_false(senderTracks.has(senders[i].track));
161 senderTracks.add(senders[i].track);
162 }
163 assert_equals(senderTracks.size, localTracks.size);
164 }
165 </script>
166 </body>
167 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698