blob: 7047ce7d1f363b7d2e06ebbebea11736abcccf3e [file] [log] [blame]
Soares Chen172fe9d2017-07-18 09:30:181<!doctype html>
2<meta charset=utf-8>
3<title>RTCRtpReceiver.prototype.getParameters</title>
4<script src="/resources/testharness.js"></script>
5<script src="/resources/testharnessreport.js"></script>
6<script src="dictionary-helper.js"></script>
7<script src="RTCRtpParameters-helper.js"></script>
8<script>
9 'use strict';
10
11 // Test is based on the following editor draft:
12 // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
13
14 // The following helper functions are called from RTCRtpParameters-helper.js:
15 // validateReceiverRtpParameters
16
17 /*
18 Validates the RTCRtpParameters returned from RTCRtpReceiver.prototype.getParameters
19
20 5.3. RTCRtpReceiver Interface
21 getParameters
22 When getParameters is called, the RTCRtpParameters dictionary is constructed
23 as follows:
24
Soares Chen172fe9d2017-07-18 09:30:1825 - The headerExtensions sequence is populated based on the header extensions that
26 the receiver is currently prepared to receive.
27
28 - The codecs sequence is populated based on the codecs that the receiver is currently
29 prepared to receive.
30
31 - rtcp.reducedSize is set to true if the receiver is currently prepared to receive
32 reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined.
Florent Castelli4f34fd42020-04-01 21:31:4933 */
Florent Castelli5dd605c2018-12-11 14:39:5534 promise_test(async t => {
Soares Chen172fe9d2017-07-18 09:30:1835 const pc = new RTCPeerConnection();
Florent Castelli5dd605c2018-12-11 14:39:5536 t.add_cleanup(() => pc.close());
37 pc.addTransceiver('audio');
38 const callee = await doOfferAnswerExchange(t, pc);
Dominique Hazael-Massieux24221e02020-09-30 14:08:2839 const param = callee.getTransceivers()[0].receiver.getParameters();
Soares Chen172fe9d2017-07-18 09:30:1840 validateReceiverRtpParameters(param);
Florent Castelli5dd605c2018-12-11 14:39:5541
42 assert_greater_than(param.headerExtensions.length, 0);
43 assert_greater_than(param.codecs.length, 0);
Florent Castelli5dd605c2018-12-11 14:39:5544 }, 'getParameters() with audio receiver');
45
46 promise_test(async t => {
47 const pc = new RTCPeerConnection();
48 t.add_cleanup(() => pc.close());
49 pc.addTransceiver('video');
50 const callee = await doOfferAnswerExchange(t, pc);
Dominique Hazael-Massieux24221e02020-09-30 14:08:2851 const param = callee.getTransceivers()[0].receiver.getParameters();
Florent Castelli5dd605c2018-12-11 14:39:5552 validateReceiverRtpParameters(param);
53
54 assert_greater_than(param.headerExtensions.length, 0);
55 assert_greater_than(param.codecs.length, 0);
Florent Castelli5dd605c2018-12-11 14:39:5556 }, 'getParameters() with video receiver');
57
58 promise_test(async t => {
59 const pc = new RTCPeerConnection();
60 t.add_cleanup(() => pc.close());
61 pc.addTransceiver('video', {
62 sendEncodings: [
63 { rid: "rid1" },
64 { rid: "rid2" }
65 ]
66 });
67 const callee = await doOfferAnswerExchange(t, pc);
Dominique Hazael-Massieux24221e02020-09-30 14:08:2868 const param = callee.getTransceivers()[0].receiver.getParameters();
Florent Castelli5dd605c2018-12-11 14:39:5569 validateReceiverRtpParameters(param);
Florent Castelli5dd605c2018-12-11 14:39:5570 assert_greater_than(param.headerExtensions.length, 0);
71 assert_greater_than(param.codecs.length, 0);
Florent Castelli5dd605c2018-12-11 14:39:5572 }, 'getParameters() with simulcast video receiver');
Soares Chen172fe9d2017-07-18 09:30:1873</script>