tor-browser

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

test_peerConnection_setParameters_oldSetParameters.html (3064B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <script type="application/javascript" src="pc.js"></script>
      5 </head>
      6 <body>
      7 <pre id="test">
      8 <script type="application/javascript">
      9 createHTML({
     10  bug: "1230184",
     11  title: "Set parameters on sender",
     12  visible: true
     13 });
     14 
     15 function parameterstest(pc) {
     16  ok(pc.getSenders().length, "have senders");
     17  var sender = pc.getSenders()[0];
     18 
     19  var testParameters = (params, errorName, errorMsg) => {
     20    info("Trying to set " + JSON.stringify(params));
     21 
     22    var validateParameters = (a, b) => {
     23      var validateEncoding = (a, b) => {
     24        is(a.rid, b.rid, "same rid");
     25        is(a.maxBitrate, b.maxBitrate, "same maxBitrate");
     26        is(a.maxFramerate, b.maxFramerate, "same maxFramerate");
     27        is(a.scaleResolutionDownBy, b.scaleResolutionDownBy,
     28           "same scaleResolutionDownBy");
     29      };
     30      is(a.encodings.length, (b.encodings || []).length, "same encodings");
     31      a.encodings.forEach((en, i) => validateEncoding(en, b.encodings[i]));
     32    };
     33 
     34    var before = JSON.stringify(sender.getParameters());
     35    isnot(JSON.stringify(params), before, "starting condition");
     36 
     37    var p = sender.setParameters(params)
     38    .then(() => {
     39      isnot(JSON.stringify(sender.getParameters()), before, "parameters changed");
     40      validateParameters(sender.getParameters(), params);
     41      is(null, errorName || null, "is success expected");
     42    }, e => {
     43      is(e.name, errorName, "correct error name");
     44      is(e.message, errorMsg, "correct error message");
     45    });
     46    is(JSON.stringify(sender.getParameters()), before, "parameters not set yet");
     47    return p;
     48  };
     49 
     50  return [
     51    [{ encodings: [ { rid: "foo", maxBitrate: 40000, scaleResolutionDownBy: 2 },
     52                    { rid: "bar", maxBitrate: 10000, scaleResolutionDownBy: 4 }]
     53    }],
     54    [{ encodings: [{ maxBitrate: 10000, scaleResolutionDownBy: 4 }]}],
     55    [{ encodings: [{ maxFramerate: 0.0, scaleResolutionDownBy: 1 }]}],
     56    [{ encodings: [{ maxFramerate: 30.5, scaleResolutionDownBy: 1 }]}],
     57    [{ encodings: [{ maxFramerate: -1, scaleResolutionDownBy: 1 }]}, "RangeError", "maxFramerate must be non-negative"],
     58    [{ encodings: [{ maxBitrate: 40000 },
     59                   { rid: "bar", maxBitrate: 10000 }] }, "TypeError", "Missing rid"],
     60    [{ encodings: [{ rid: "foo", maxBitrate: 40000 },
     61                   { rid: "bar", maxBitrate: 10000 },
     62                   { rid: "bar", maxBitrate: 20000 }] }, "TypeError", "Duplicate rid"],
     63    [{}, "TypeError", `RTCRtpSender.setParameters: Missing required 'encodings' member of RTCRtpSendParameters.`]
     64  ].reduce((p, args) => p.then(() => testParameters.apply(this, args)),
     65           Promise.resolve());
     66 }
     67 
     68 runNetworkTest(() => {
     69  const test = new PeerConnectionTest();
     70  test.setMediaConstraints([{video: true}], [{video: true}]);
     71  test.chain.removeAfter("PC_REMOTE_WAIT_FOR_MEDIA_FLOW");
     72 
     73  // Test sender parameters.
     74  test.chain.append([
     75    function PC_LOCAL_SET_PARAMETERS(test) {
     76      return parameterstest(test.pcLocal._pc);
     77    }
     78  ]);
     79 
     80  return test.run();
     81 });
     82 
     83 </script>
     84 </pre>
     85 </body>
     86 </html>