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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getSenders.html
diff --git a/third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getSenders.html b/third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getSenders.html
new file mode 100644
index 0000000000000000000000000000000000000000..eb2f5091e34c9d5d5104c7aa53175e9c1598a635
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getSenders.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>RTCPeerConnection.getSenders</title>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+</head>
+<body>
+<script>
+promise_test(function() {
+ let pc = new RTCPeerConnection();
+ return createStreams({audio:true}, 1)
+ .then(function(streams) {
+ for (let i = 0; i < streams.length; ++i) {
+ pc.addStream(streams[i]);
+ }
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, true, false);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+ });
+}, 'getSenders() for a single audio track.');
+
+promise_test(function() {
+ let pc = new RTCPeerConnection();
+ return createStreams({video:true}, 1)
+ .then(function(streams) {
+ for (let i = 0; i < streams.length; ++i) {
+ pc.addStream(streams[i]);
+ }
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, false, true);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+ });
+}, 'getSenders() for a single video track.');
+
+promise_test(function() {
+ let pc = new RTCPeerConnection();
+ return createStreams({audio:true, video:true}, 1)
+ .then(function(streams) {
+ for (let i = 0; i < streams.length; ++i) {
+ pc.addStream(streams[i]);
+ }
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, true, true);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+ });
+}, 'getSenders() for a single stream with an audio and video track.');
+
+promise_test(function() {
+ let pc = new RTCPeerConnection();
+ return createStreams({audio:true, video:true}, 2)
+ .then(function(streams) {
+ for (let i = 0; i < streams.length; ++i) {
+ pc.addStream(streams[i]);
+ }
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 2, true, true);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+ });
+}, 'getSenders() for a multiple audio-video streams.');
+
+promise_test(function() {
+ let pc = new RTCPeerConnection();
+ let senders = new Set();
+ return createStreams({audio:true, video:true}, 2)
+ .then(function(streams) {
+ for (let i = 0; i < streams.length; ++i) {
+ pc.addStream(streams[i]);
+ }
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 2, true, true);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+
+ for (let i = 0; i < pc.getSenders().length; ++i)
+ senders.add(pc.getSenders()[i]);
+ // 2 senders per stream, one for audio and one for video
+ assert_equals(senders.size, 4);
+
+ pc.removeStream(pc.getLocalStreams()[0]);
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 1, true, true);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+
+ for (let i = 0; i < pc.getSenders().length; ++i)
+ assert_true(senders.has(pc.getSenders()[i]));
+
+ return createStreams({audio:true, video:true}, 1);
+ })
+ .then(function(streams) {
+ for (let i = 0; i < streams.length; ++i) {
+ pc.addStream(streams[i]);
+ }
+ verifyStreamAndTrackCounts(pc.getLocalStreams(), 2, true, true);
+ verifyLocalTracksHaveSenders(pc);
+ // Make sure object identities are preserved between calls.
+ assert_array_equals(pc.getSenders(), pc.getSenders());
+
+ // |senders| contains all senders so far (4), including the ones for
+ // the removed streams. The set does not contain duplicates, so adding all
+ // senders here should only increase the size for the new stream (2 new
+ // senders).
+ for (let i = 0; i < pc.getSenders().length; ++i)
+ senders.add(pc.getSenders()[i]);
+ assert_equals(senders.size, 6);
+
+ while (pc.getLocalStreams().length > 0) {
+ pc.removeStream(pc.getLocalStreams()[0]);
+ }
+ assert_equals(pc.getLocalStreams().length, 0);
+ assert_equals(pc.getSenders().length, 0);
+ });
+}, 'getSenders() for streams being added and removed.');
+
+/**
+ * Helper functions to tests.
+ */
+
+function createStreams(constraints, numStreams, streamsSoFar = []) {
+ if (numStreams == 0) {
+ return Promise.resolve(streamsSoFar);;
+ }
+ return navigator.mediaDevices.getUserMedia(constraints)
+ .then(function(stream) {
+ return createStreams(constraints,
+ numStreams - 1,
+ streamsSoFar.concat([stream]));
+ });
+}
+
+function verifyStreamAndTrackCounts(streams, streamCount, audio, video) {
+ assert_equals(streams.length, streamCount);
+ for (let i = 0; i < streams.length; ++i) {
+ assert_equals(streams[i].getAudioTracks().length, audio ? 1 : 0);
+ assert_equals(streams[i].getVideoTracks().length, video ? 1 : 0);
+ }
+}
+
+function verifyLocalTracksHaveSenders(pc) {
+ let localTracks = new Set();
+ let localStreams = pc.getLocalStreams();
+ for (let i = 0; i < localStreams.length; ++i) {
+ let localStreamTracks = localStreams[i].getTracks();
+ for (let j = 0; j < localStreamTracks.length; ++j) {
+ localTracks.add(localStreamTracks[j]);
+ }
+ }
+
+ let senderTracks = new Set();
+ let senders = pc.getSenders();
+ for (let i = 0; i < senders.length; ++i) {
+ assert_true(senders[i] != null);
+ assert_true(senders[i].track != null);
+ assert_true(localTracks.has(senders[i].track));
+ assert_false(senderTracks.has(senders[i].track));
+ senderTracks.add(senders[i].track);
+ }
+ assert_equals(senderTracks.size, localTracks.size);
+}
+</script>
+</body>
+</html>

Powered by Google App Engine
This is Rietveld 408576698