tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

RTCRtpParameters-rtcp.html (3299B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>RTCRtpParameters rtcp</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  //   validateSenderRtpParameters
     16 
     17  /*
     18    5.2.  RTCRtpSender Interface
     19      interface RTCRtpSender {
     20        Promise<void>           setParameters(optional RTCRtpParameters parameters);
     21        RTCRtpParameters        getParameters();
     22      };
     23 
     24      dictionary RTCRtpParameters {
     25        DOMString                                 transactionId;
     26        sequence<RTCRtpEncodingParameters>        encodings;
     27        sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
     28        RTCRtcpParameters                         rtcp;
     29        sequence<RTCRtpCodecParameters>           codecs;
     30      };
     31 
     32      dictionary RTCRtcpParameters {
     33        [readonly]
     34        DOMString cname;
     35 
     36        [readonly]
     37        boolean   reducedSize;
     38      };
     39 
     40      getParameters
     41        - rtcp.cname is set to the CNAME of the associated RTCPeerConnection.
     42 
     43          rtcp.reducedSize is set to true if reduced-size RTCP has been negotiated for
     44          sending, and false otherwise.
     45   */
     46 
     47  /*
     48    5.2.  setParameters
     49      7.  If parameters.encodings.length is different from N, or if any parameter
     50          in the parameters argument, marked as a Read-only parameter, has a value
     51          that is different from the corresponding parameter value returned from
     52          sender.getParameters(), abort these steps and return a promise rejected
     53          with a newly created InvalidModificationError. Note that this also applies
     54          to transactionId.
     55   */
     56  promise_test(t => {
     57    const pc = new RTCPeerConnection();
     58    t.add_cleanup(() => pc.close());
     59    const { sender } = pc.addTransceiver('audio');
     60 
     61    const param = sender.getParameters();
     62    validateSenderRtpParameters(param);
     63 
     64    const { rtcp } = param;
     65 
     66    if(rtcp === undefined) {
     67      param.rtcp = { cname: 'foo' };
     68 
     69    } else if(rtcp.cname === undefined) {
     70      rtcp.cname = 'foo';
     71 
     72    } else {
     73      rtcp.cname = `${rtcp.cname}-modified`;
     74    }
     75 
     76    return promise_rejects_dom(t, 'InvalidModificationError',
     77      sender.setParameters(param));
     78  }, `setParameters() with modified rtcp.cname should reject with InvalidModificationError`);
     79 
     80  promise_test(t => {
     81    const pc = new RTCPeerConnection();
     82    t.add_cleanup(() => pc.close());
     83    const { sender } = pc.addTransceiver('audio');
     84 
     85    const param = sender.getParameters();
     86    validateSenderRtpParameters(param);
     87 
     88    const { rtcp } = param;
     89 
     90    if(rtcp === undefined) {
     91      param.rtcp = { reducedSize: true };
     92 
     93    } else if(rtcp.reducedSize === undefined) {
     94      rtcp.reducedSize = true;
     95 
     96    } else {
     97      rtcp.reducedSize = !rtcp.reducedSize;
     98    }
     99 
    100    return promise_rejects_dom(t, 'InvalidModificationError',
    101      sender.setParameters(param));
    102  }, `setParameters() with modified rtcp.reducedSize should reject with InvalidModificationError`);
    103 
    104 </script>