| <!doctype html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Trying to recycle m sections</title> | |
| <script src="../resources/testharness.js"></script> | |
| <script src="../resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <script> | |
| promise_test(async test => { | |
| const stream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); | |
| const firstConnection = new RTCPeerConnection({sdpSemantics:'unified-plan'}); | |
| const secondConnection = new RTCPeerConnection({sdpSemantics:'unified-plan'}); | |
| firstConnection.addTrack(stream.getAudioTracks()[0], stream); | |
| firstConnection.addTrack(stream.getVideoTracks()[0], stream); | |
| firstConnection.addTransceiver("audio", {direction: "recvonly"}); | |
| firstConnection.addTransceiver("video", {direction: "recvonly"}); | |
| let desc = await firstConnection.createOffer(); | |
| await firstConnection.setLocalDescription(desc); | |
| await secondConnection.setRemoteDescription(desc); | |
| const desc2 = await secondConnection.createAnswer(); | |
| let lines = desc2.sdp.trim().split('\r\n'); | |
| let counter; | |
| for (counter = 0; counter < lines.length; ++counter) { | |
| if (lines[counter] == "a=mid:2") | |
| break; | |
| } | |
| for (;counter < lines.length; ++counter) { | |
| if (lines[counter].startsWith("m=video ")) { | |
| lines[counter] = "m=video 0 RTP/SAVPF 0"; | |
| break; | |
| } | |
| } | |
| for (counter = 0; counter < lines.length; ++counter) { | |
| if (lines[counter] == "a=mid:3") | |
| break; | |
| } | |
| for (;counter < lines.length; ++counter) { | |
| if (lines[counter].startsWith("m=audio ")) | |
| lines[counter] = "m=audio 0 RTP/SAVPF 0"; | |
| else if (lines[counter].startsWith("m=video ")) | |
| lines[counter] = "m=video 0 RTP/SAVPF 0"; | |
| else if (lines[counter] === "a=inactive" || lines[counter].startsWith("a=mid")) { | |
| } else | |
| lines[counter] = "XXX"; | |
| } | |
| lines = lines.filter((line) => { return line != "XXX"; }); | |
| desc2.sdp = lines.join('\r\n') + '\r\n'; | |
| await firstConnection.setRemoteDescription(desc2); | |
| firstConnection.addTransceiver("audio"); | |
| firstConnection.addTransceiver("audio"); | |
| await firstConnection.createOffer(); | |
| }, "Recycle m-section with different media type"); | |
| </script> | |
| </body> | |
| </html> |