tor-browser

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

RTCRtpParameters-headerExtensions.html (2520B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>RTCRtpParameters headerExtensions</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 RTCRtpHeaderExtensionParameters {
     33        [readonly]
     34        DOMString      uri;
     35 
     36        [readonly]
     37        unsigned short id;
     38 
     39        [readonly]
     40        boolean        encrypted;
     41      };
     42 
     43      getParameters
     44        - The headerExtensions sequence is populated based on the header extensions
     45          that have been negotiated for sending.
     46   */
     47 
     48  /*
     49    5.2.  setParameters
     50      7.  If parameters.encodings.length is different from N, or if any parameter
     51          in the parameters argument, marked as a Read-only parameter, has a value
     52          that is different from the corresponding parameter value returned from
     53          sender.getParameters(), abort these steps and return a promise rejected
     54          with a newly created InvalidModificationError. Note that this also applies
     55          to transactionId.
     56   */
     57  promise_test(t => {
     58    const pc = new RTCPeerConnection();
     59    t.add_cleanup(() => pc.close());
     60    const { sender } = pc.addTransceiver('audio');
     61    const param = sender.getParameters();
     62    validateSenderRtpParameters(param);
     63 
     64    param.headerExtensions = [{
     65      uri: 'non-existent.example.org',
     66      id: 404,
     67      encrypted: false
     68    }];
     69 
     70    return promise_rejects_dom(t, 'InvalidModificationError',
     71      sender.setParameters(param));
     72  }, `setParameters() with modified headerExtensions should reject with InvalidModificationError`);
     73 
     74 </script>