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>