3 <title>RTCRtpSendParameters degradationPreference
</title>
4 <script src=
"/resources/testharness.js"></script>
5 <script src=
"/resources/testharnessreport.js"></script>
9 promise_test(async t
=> {
10 const pc
= new RTCPeerConnection();
11 t
.add_cleanup(() => pc
.close());
12 const { sender
} = pc
.addTransceiver('video');
14 let param
= sender
.getParameters();
16 assert_equals(param
.degradationPreference
, undefined,
17 'Expect initial param.degradationPreference to be undefined');
19 param
.degradationPreference
= 'maintain-framerate';
20 await sender
.setParameters(param
);
21 param
= sender
.getParameters();
22 assert_equals(param
.degradationPreference
, 'maintain-framerate');
24 param
.degradationPreference
= 'maintain-resolution';
25 await sender
.setParameters(param
);
26 param
= sender
.getParameters();
27 assert_equals(param
.degradationPreference
, 'maintain-resolution');
29 param
.degradationPreference
= 'balanced';
30 await sender
.setParameters(param
);
31 param
= sender
.getParameters();
32 assert_equals(param
.degradationPreference
, 'balanced');
34 param
.degradationPreference
= undefined;
35 await sender
.setParameters(param
);
36 param
= sender
.getParameters();
37 assert_equals(param
.degradationPreference
, undefined);
38 }, 'setParameters with degradationPreference set should succeed on video transceiver');
40 promise_test(async t
=> {
41 const pc
= new RTCPeerConnection();
42 t
.add_cleanup(() => pc
.close());
43 const { sender
} = pc
.addTransceiver('video');
45 let param
= sender
.getParameters();
47 assert_equals(param
.degradationPreference
, undefined,
48 'Expect initial param.degradationPreference to be undefined');
50 param
.degradationPreference
= undefined;
52 await sender
.setParameters(param
);
54 param
= sender
.getParameters();
55 assert_equals(param
.degradationPreference
, undefined);
56 }, 'setParameters with degradationPreference unset should succeed on video transceiver');
58 promise_test(async t
=> {
59 const pc
= new RTCPeerConnection();
60 t
.add_cleanup(() => pc
.close());
61 const { sender
} = pc
.addTransceiver('video');
63 let param
= sender
.getParameters();
64 param
.degradationPreference
= 'invalid';
66 return promise_rejects_js(t
, TypeError
, sender
.setParameters(param
));
67 }, 'setParameters with invalid degradationPreference should throw TypeError on video transceiver');
69 promise_test(async t
=> {
70 const pc
= new RTCPeerConnection();
71 t
.add_cleanup(() => pc
.close());
72 const { sender
} = pc
.addTransceiver('audio');
74 let param
= sender
.getParameters();
76 assert_equals(param
.degradationPreference
, undefined,
77 'Expect initial param.degradationPreference to be undefined');
79 param
.degradationPreference
= 'maintain-framerate';
80 await sender
.setParameters(param
);
81 param
= sender
.getParameters();
82 assert_equals(param
.degradationPreference
, 'maintain-framerate');
84 param
.degradationPreference
= 'maintain-resolution';
85 await sender
.setParameters(param
);
86 param
= sender
.getParameters();
87 assert_equals(param
.degradationPreference
, 'maintain-resolution');
89 param
.degradationPreference
= 'balanced';
90 await sender
.setParameters(param
);
91 param
= sender
.getParameters();
92 assert_equals(param
.degradationPreference
, 'balanced');
94 param
.degradationPreference
= undefined;
95 await sender
.setParameters(param
);
96 param
= sender
.getParameters();
97 assert_equals(param
.degradationPreference
, undefined);
98 }, 'setParameters with degradationPreference set should succeed on audio transceiver');
100 promise_test(async t
=> {
101 const pc
= new RTCPeerConnection();
102 t
.add_cleanup(() => pc
.close());
103 const { sender
} = pc
.addTransceiver('audio');
105 let param
= sender
.getParameters();
107 assert_equals(param
.degradationPreference
, undefined,
108 'Expect initial param.degradationPreference to be undefined');
110 param
.degradationPreference
= undefined;
112 await sender
.setParameters(param
);
114 param
= sender
.getParameters();
115 assert_equals(param
.degradationPreference
, undefined);
116 }, 'setParameters with degradationPreference unset should succeed on audio transceiver');
118 promise_test(async t
=> {
119 const pc
= new RTCPeerConnection();
120 t
.add_cleanup(() => pc
.close());
121 const { sender
} = pc
.addTransceiver('audio');
123 let param
= sender
.getParameters();
124 param
.degradationPreference
= 'invalid';
126 return promise_rejects_js(t
, TypeError
, sender
.setParameters(param
));
127 }, 'setParameters with invalid degradationPreference should throw TypeError on audio transceiver');