test_peerConnection_checkPacketDumpHook.html (4445B)
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: "1377299", 11 title: "Check that packet dump hooks generate callbacks" 12 }); 13 14 function waitForPacket(pc, checkFunction) { 15 return new Promise(resolve => { 16 function onPacket(level, type, sending, packet) { 17 if (checkFunction(level, type, sending, packet)) { 18 SpecialPowers.wrap(pc).mozSetPacketCallback(() => {}); 19 resolve(); 20 } 21 } 22 23 SpecialPowers.wrap(pc).mozSetPacketCallback(onPacket); 24 } 25 ); 26 } 27 28 async function waitForSendPacket(pc, type, level) { 29 await SpecialPowers.wrap(pc).mozEnablePacketDump(level, type, true); 30 await timeout( 31 waitForPacket(pc, (obsLevel, obsType, sending) => { 32 is(obsLevel, level, "Level for packet is " + level); 33 is(obsType, type, "Type for packet is " + type); 34 ok(sending, "This is a send packet"); 35 return true; 36 }), 37 10000, "Timeout waiting for " + type + " send packet on level " + level); 38 await SpecialPowers.wrap(pc).mozDisablePacketDump(level, type, true); 39 } 40 41 async function waitForRecvPacket(pc, type, level) { 42 await SpecialPowers.wrap(pc).mozEnablePacketDump(level, type, false); 43 await timeout( 44 waitForPacket(pc, (obsLevel, obsType, sending) => { 45 is(obsLevel, level, "Level for packet is " + level); 46 is(obsType, type, "Type for packet is " + type); 47 ok(!sending, "This is a recv packet"); 48 return true; 49 }), 50 10000, "Timeout waiting for " + type + " recv packet on level " + level); 51 await SpecialPowers.wrap(pc).mozDisablePacketDump(level, type, false); 52 } 53 54 var test; 55 runNetworkTest(function (options) { 56 test = new PeerConnectionTest(options); 57 test.setMediaConstraints([{audio: true, video: true}], 58 [{audio: true, video: true}]); 59 // pc.js uses video elements by default, we want to test audio elements here 60 test.pcLocal.audioElementsOnly = true; 61 62 test.chain.insertBefore('PC_LOCAL_WAIT_FOR_MEDIA_FLOW',[ 63 async function PC_LOCAL_CHECK_PACKET_DUMP_HOOKS() { 64 await waitForRecvPacket(test.pcLocal._pc, "rtp", 0); 65 await waitForRecvPacket(test.pcLocal._pc, "rtcp", 0); 66 await waitForRecvPacket(test.pcLocal._pc, "srtp", 0); 67 await waitForRecvPacket(test.pcLocal._pc, "srtcp", 0); 68 await waitForSendPacket(test.pcLocal._pc, "rtp", 0); 69 await waitForSendPacket(test.pcLocal._pc, "rtcp", 0); 70 await waitForSendPacket(test.pcLocal._pc, "srtp", 0); 71 await waitForSendPacket(test.pcLocal._pc, "srtcp", 0); 72 73 await waitForRecvPacket(test.pcLocal._pc, "rtp", 1); 74 await waitForRecvPacket(test.pcLocal._pc, "rtcp", 1); 75 await waitForRecvPacket(test.pcLocal._pc, "srtp", 1); 76 await waitForRecvPacket(test.pcLocal._pc, "srtcp", 1); 77 await waitForSendPacket(test.pcLocal._pc, "rtp", 1); 78 await waitForSendPacket(test.pcLocal._pc, "rtcp", 1); 79 await waitForSendPacket(test.pcLocal._pc, "srtp", 1); 80 await waitForSendPacket(test.pcLocal._pc, "srtcp", 1); 81 }, 82 async function PC_REMOTE_CHECK_PACKET_DUMP_HOOKS() { 83 await waitForRecvPacket(test.pcRemote._pc, "rtp", 0); 84 await waitForRecvPacket(test.pcRemote._pc, "rtcp", 0); 85 await waitForRecvPacket(test.pcRemote._pc, "srtp", 0); 86 await waitForRecvPacket(test.pcRemote._pc, "srtcp", 0); 87 await waitForSendPacket(test.pcRemote._pc, "rtp", 0); 88 await waitForSendPacket(test.pcRemote._pc, "rtcp", 0); 89 await waitForSendPacket(test.pcRemote._pc, "srtp", 0); 90 await waitForSendPacket(test.pcRemote._pc, "srtcp", 0); 91 92 await waitForRecvPacket(test.pcRemote._pc, "rtp", 1); 93 await waitForRecvPacket(test.pcRemote._pc, "rtcp", 1); 94 await waitForRecvPacket(test.pcRemote._pc, "srtp", 1); 95 await waitForRecvPacket(test.pcRemote._pc, "srtcp", 1); 96 await waitForSendPacket(test.pcRemote._pc, "rtp", 1); 97 await waitForSendPacket(test.pcRemote._pc, "rtcp", 1); 98 await waitForSendPacket(test.pcRemote._pc, "srtp", 1); 99 await waitForSendPacket(test.pcRemote._pc, "srtcp", 1); 100 } 101 ]); 102 return test.run(); 103 }); 104 </script> 105 </pre> 106 </body> 107 </html>