tor-browser

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

RTCRtpParameters-maxFramerate.html (3729B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>RTCRtpParameters encodings</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/webrtc/dictionary-helper.js"></script>
      7 <script src="/webrtc/RTCRtpParameters-helper.js"></script>
      8 <script>
      9 'use strict';
     10 
     11 test(t => {
     12  const pc = new RTCPeerConnection();
     13  t.add_cleanup(() => pc.close());
     14  assert_throws_js(RangeError, () => pc.addTransceiver('video', {
     15    sendEncodings: [{
     16      maxFramerate: -10
     17    }]
     18  }));
     19 }, `addTransceiver() with sendEncoding.maxFramerate field set to less than 0 should reject with RangeError`);
     20 
     21 test(t => {
     22  const pc = new RTCPeerConnection();
     23  t.add_cleanup(() => pc.close());
     24  let {sender} = pc.addTransceiver('audio', {
     25    sendEncodings: [{
     26      maxFramerate: -10
     27    }]
     28  });
     29  let encodings = sender.getParameters().encodings;
     30  assert_equals(encodings.length, 1);
     31  assert_not_own_property(encodings[0], "maxFramerate");
     32 
     33  sender = pc.addTransceiver('audio', {
     34    sendEncodings: [{
     35      maxFramerate: 10
     36    }]
     37  }).sender;
     38  encodings = sender.getParameters().encodings;
     39  assert_equals(encodings.length, 1);
     40  assert_not_own_property(encodings[0], "maxFramerate");
     41 }, `addTransceiver('audio') with sendEncoding.maxFramerate should succeed, but remove the maxFramerate, even if it is invalid`);
     42 
     43 promise_test(async t => {
     44  const pc = new RTCPeerConnection();
     45  t.add_cleanup(() => pc.close());
     46  const {sender} = pc.addTransceiver('audio');
     47  let params = sender.getParameters();
     48  assert_equals(params.encodings.length, 1);
     49  params.encodings[0].maxFramerate = 20;
     50  await sender.setParameters(params);
     51  const {encodings} = sender.getParameters();
     52  assert_equals(encodings.length, 1);
     53  assert_not_own_property(encodings[0], "maxFramerate");
     54 }, `setParameters with maxFramerate on an audio sender should succeed, but remove the maxFramerate`);
     55 
     56 promise_test(async t => {
     57  const pc = new RTCPeerConnection();
     58  t.add_cleanup(() => pc.close());
     59  const {sender} = pc.addTransceiver('audio');
     60  let params = sender.getParameters();
     61  assert_equals(params.encodings.length, 1);
     62  params.encodings[0].maxFramerate = -1;
     63  await sender.setParameters(params);
     64  const {encodings} = sender.getParameters();
     65  assert_equals(encodings.length, 1);
     66  assert_not_own_property(encodings[0], "maxFramerate");
     67 }, `setParameters with an invalid maxFramerate on an audio sender should succeed, but remove the maxFramerate`);
     68 
     69 promise_test(async t => {
     70  const pc = new RTCPeerConnection();
     71  t.add_cleanup(() => pc.close());
     72  const { sender } = pc.addTransceiver('video');
     73  await doOfferAnswerExchange(t, pc);
     74 
     75  const param = sender.getParameters();
     76  const encoding = param.encodings[0];
     77  assert_not_own_property(encoding, "maxFramerate");
     78 
     79  encoding.maxFramerate = -10;
     80  return promise_rejects_js(t, RangeError,
     81    sender.setParameters(param));
     82 }, `setParameters() with encoding.maxFramerate field set to less than 0 should reject with RangeError`);
     83 
     84 // It would be great if we could test to see whether maxFramerate is actually
     85 // honored.
     86 test_modified_encoding('video', 'maxFramerate', 24, 16,
     87  'setParameters() with maxFramerate 24->16 should succeed');
     88 
     89 test_modified_encoding('video', 'maxFramerate', undefined, 16,
     90  'setParameters() with maxFramerate undefined->16 should succeed');
     91 
     92 test_modified_encoding('video', 'maxFramerate', 24, undefined,
     93  'setParameters() with maxFramerate 24->undefined should succeed');
     94 
     95 test_modified_encoding('video', 'maxFramerate', 0, 16,
     96  'setParameters() with maxFramerate 0->16 should succeed');
     97 
     98 test_modified_encoding('video', 'maxFramerate', 24, 0,
     99  'setParameters() with maxFramerate 24->0 should succeed');
    100 
    101 </script>