summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html')
-rw-r--r--testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html104
1 files changed, 104 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html b/testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html
new file mode 100644
index 0000000000..7965304520
--- /dev/null
+++ b/testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html
@@ -0,0 +1,104 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>RTCRtpParameters rtcp</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="dictionary-helper.js"></script>
+<script src="RTCRtpParameters-helper.js"></script>
+<script>
+ 'use strict';
+
+ // Test is based on the following editor draft:
+ // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
+
+ // The following helper functions are called from RTCRtpParameters-helper.js:
+ // validateSenderRtpParameters
+
+ /*
+ 5.2. RTCRtpSender Interface
+ interface RTCRtpSender {
+ Promise<void> setParameters(optional RTCRtpParameters parameters);
+ RTCRtpParameters getParameters();
+ };
+
+ dictionary RTCRtpParameters {
+ DOMString transactionId;
+ sequence<RTCRtpEncodingParameters> encodings;
+ sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
+ RTCRtcpParameters rtcp;
+ sequence<RTCRtpCodecParameters> codecs;
+ };
+
+ dictionary RTCRtcpParameters {
+ [readonly]
+ DOMString cname;
+
+ [readonly]
+ boolean reducedSize;
+ };
+
+ getParameters
+ - rtcp.cname is set to the CNAME of the associated RTCPeerConnection.
+
+ rtcp.reducedSize is set to true if reduced-size RTCP has been negotiated for
+ sending, and false otherwise.
+ */
+
+ /*
+ 5.2. setParameters
+ 7. If parameters.encodings.length is different from N, or if any parameter
+ in the parameters argument, marked as a Read-only parameter, has a value
+ that is different from the corresponding parameter value returned from
+ sender.getParameters(), abort these steps and return a promise rejected
+ with a newly created InvalidModificationError. Note that this also applies
+ to transactionId.
+ */
+ promise_test(t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const { sender } = pc.addTransceiver('audio');
+
+ const param = sender.getParameters();
+ validateSenderRtpParameters(param);
+
+ const { rtcp } = param;
+
+ if(rtcp === undefined) {
+ param.rtcp = { cname: 'foo' };
+
+ } else if(rtcp.cname === undefined) {
+ rtcp.cname = 'foo';
+
+ } else {
+ rtcp.cname = `${rtcp.cname}-modified`;
+ }
+
+ return promise_rejects_dom(t, 'InvalidModificationError',
+ sender.setParameters(param));
+ }, `setParameters() with modified rtcp.cname should reject with InvalidModificationError`);
+
+ promise_test(t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const { sender } = pc.addTransceiver('audio');
+
+ const param = sender.getParameters();
+ validateSenderRtpParameters(param);
+
+ const { rtcp } = param;
+
+ if(rtcp === undefined) {
+ param.rtcp = { reducedSize: true };
+
+ } else if(rtcp.reducedSize === undefined) {
+ rtcp.reducedSize = true;
+
+ } else {
+ rtcp.reducedSize = !rtcp.reducedSize;
+ }
+
+ return promise_rejects_dom(t, 'InvalidModificationError',
+ sender.setParameters(param));
+ }, `setParameters() with modified rtcp.reducedSize should reject with InvalidModificationError`);
+
+</script>