tor-browser

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

test_peerConnection_insertDTMF.html (2026B)


      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: "1291715",
     11  title: "Test insertDTMF on sender",
     12  visible: true
     13 });
     14 
     15 function insertdtmftest(pc) {
     16  ok(pc.getSenders().length, "have senders");
     17  var sender = pc.getSenders()[0];
     18  ok(sender.dtmf, "sender has dtmf object");
     19 
     20  ok(sender.dtmf.toneBuffer === "", "sender should start with empty tonebuffer");
     21 
     22  // These will trigger assertions on debug builds if we do not enforce the
     23  // specified minimums and maximums for duration and interToneGap.
     24  sender.dtmf.insertDTMF("A", 10);
     25  sender.dtmf.insertDTMF("A", 10000);
     26  sender.dtmf.insertDTMF("A", 70, 10);
     27 
     28  var threw = false;
     29  try {
     30    sender.dtmf.insertDTMF("bad tones");
     31  } catch (ex) {
     32    threw = true;
     33    is(ex.code, DOMException.INVALID_CHARACTER_ERR, "Expected InvalidCharacterError");
     34  }
     35  ok(threw, "Expected exception");
     36 
     37  sender.dtmf.insertDTMF("A");
     38  sender.dtmf.insertDTMF("B");
     39  ok(!sender.dtmf.toneBuffer.includes("A"), "calling insertDTMF should replace current characters");
     40 
     41  sender.dtmf.insertDTMF("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
     42  ok(sender.dtmf.toneBuffer.includes("A"), "lowercase characters should be normalized");
     43 
     44  pc.removeTrack(sender);
     45  threw = false;
     46  try {
     47    sender.dtmf.insertDTMF("AAA");
     48  } catch (ex) {
     49    threw = true;
     50    is(ex.code, DOMException.INVALID_STATE_ERR, "Expected InvalidStateError");
     51  }
     52  ok(threw, "Expected exception");
     53 }
     54 
     55 runNetworkTest(() => {
     56  test = new PeerConnectionTest();
     57  test.setMediaConstraints([{audio: true}], [{audio: true}]);
     58  test.chain.removeAfter("PC_REMOTE_WAIT_FOR_MEDIA_FLOW");
     59 
     60  // Test sender dtmf.
     61  test.chain.append([
     62    function PC_LOCAL_INSERT_DTMF(test) {
     63      // We want to call removeTrack
     64      test.pcLocal.expectNegotiationNeeded();
     65      return insertdtmftest(test.pcLocal._pc);
     66    }
     67  ]);
     68 
     69  return test.run();
     70 });
     71 
     72 </script>
     73 </pre>
     74 </body>
     75 </html>