1
0
Fork 0
firefox/testing/web-platform/tests/mst-content-hint/RTCRtpSendParameters-degradationPreference.html
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

129 lines
4.4 KiB
HTML

<!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>