Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that disables it given conditions:
- This WPT test may be referenced by the following Test IDs:
- /mst-content-hint/RTCRtpSendParameters-degradationPreference.html - WPT Dashboard Interop Dashboard
<!doctype html>
<meta charset=utf-8>
<title>RTCRtpSendParameters degradationPreference</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
'use strict';
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = 'maintain-framerate';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-framerate');
param.degradationPreference = 'maintain-resolution';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-resolution');
param.degradationPreference = 'balanced';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'balanced');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference set should succeed on video transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference unset should succeed on video transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
let param = sender.getParameters();
param.degradationPreference = 'invalid';
return promise_rejects_js(t, TypeError, sender.setParameters(param));
}, 'setParameters with invalid degradationPreference should throw TypeError on video transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = 'maintain-framerate';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-framerate');
param.degradationPreference = 'maintain-resolution';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-resolution');
param.degradationPreference = 'balanced';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'balanced');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference set should succeed on audio transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference unset should succeed on audio transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
let param = sender.getParameters();
param.degradationPreference = 'invalid';
return promise_rejects_js(t, TypeError, sender.setParameters(param));
}, 'setParameters with invalid degradationPreference should throw TypeError on audio transceiver');
</script>