863929.html (2897B)
1 <!DOCTYPE html> 2 <html class="reftest-wait"> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=863929 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Bug 863929</title> 9 <script type="application/javascript"> 10 var pc1, pc2, pc1_offer, pc2_answer; 11 12 function onFailure(code) { 13 stop(); 14 } 15 16 function stop() { 17 pc1.close(); 18 pc1 = null; 19 pc2.close(); 20 pc2 = null; 21 document.documentElement.removeAttribute("class"); 22 } 23 24 function step1(offer) { 25 pc1_offer = offer; 26 pc1_offer.sdp = 'v=0\r\no=Mozilla-SIPUA 2208 0 IN IP4 0.0.0.0\r\ns=SIP Call\r\nt=0 0\r\na=ice-ufrag:96e36277\r\na=ice-pwd:4450d5a4a5f097855c16fa079893be18\r\na=fingerprint:sha-256 23:9A:2E:43:94:42:CF:46:68:FC:62:F9:F4:48:61:DB:2F:8C:C9:FF:6B:25:54:9D:41:09:EF:83:A8:19:FC:B6\r\nm=audio 56187 RTP/SAVPF 109 0 8 101\r\nc=IN IP4 77.9.79.167\r\na=rtpmap:109 opus/48000/2\r\na=ptime:20\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-15\r\na=sendrecv\r\na=candidate:0 1 UDP 2113601791 192.168.178.20 56187 typ host\r\na=candidate:1 1 UDP 1694236671 77.9.79.167 56187 typ srflx raddr 192.168.178.20 rport 56187\r\na=candidate:0 2 UDP 2113601790 192.168.178.20 52955 typ host\r\na=candidate:1 2 UDP 1694236670 77.9.79.167 52955 typ srflx raddr 192.168.178.20 rport 52955\r\nm=video 49929 RTP/SAVPF 120\r\nc=IN IP4 77.9.79.167\r\na=rtpmap:120 telephone-event/90000\r\na=recvonly\r\na=candidate:0 1 UDP 2113601791 192.168.178.20 49929 typ host\r\na=candidate:1 1 UDP 1694236671 77.9.79.167 49929 typ srflx raddr 192.168.178.20 rport 49929\r\na=candidate:0 2 UDP 2113601790 192.168.178.20 50769 typ host\r\na=candidate:1 2 UDP 1694236670 77.9.79.167 50769 typ srflx raddr 192.168.178.20 rport 50769\r\nm=application 54054 SCTP/DTLS 5000 \r\nc=IN IP4 77.9.79.167\r\na=fmtp:5000 protocol=webrtc-datachannel;streams=16\r\na=sendrecv\r\n'; 27 pc1.setLocalDescription(pc1_offer, step2, onFailure); 28 } 29 30 function step2() { 31 pc2.setRemoteDescription(pc1_offer, step3, onFailure); 32 } 33 34 function step3() { 35 pc2.createAnswer(step4, onFailure); 36 } 37 38 function step4(answer) { 39 pc2_answer = answer; 40 pc2.setLocalDescription(pc2_answer, step5, onFailure); 41 } 42 43 function step5() { 44 pc1.setRemoteDescription(pc2_answer, step6, onFailure); 45 } 46 47 function step6() { 48 stop(); 49 } 50 51 function start() { 52 pc1 = new RTCPeerConnection(); 53 pc2 = new RTCPeerConnection(); 54 navigator.mediaDevices.getUserMedia({audio:true, video:true, fake:true}).then(function(s) { 55 pc1.addStream(s); 56 navigator.mediaDevices.getUserMedia({audio:true, video:true, fake:true}).then(function(s) { 57 pc2.addStream(s); 58 pc1.createOffer(step1, onFailure); 59 }, onFailure); 60 }, onFailure); 61 } 62 </script> 63 </head> 64 65 <body onload="start()"> 66 </html>