| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Inactive/reactivate audio transceiver</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <video id="video" controls autoplay playsinline></video> |
| <script src ="routines.js"></script> |
| <script> |
| var pc1, pc2; |
| var remoteStream, remoteTrack; |
| promise_test(async (test) => { |
| const localStream = await navigator.mediaDevices.getUserMedia({audio: true }); |
| |
| await new Promise(resolve => { |
| createConnections((firstConnection) => { |
| pc1 = firstConnection; |
| firstConnection.addTrack(localStream.getAudioTracks()[0], localStream); |
| }, (secondConnection) => { |
| pc2 = secondConnection; |
| secondConnection.ontrack = (trackEvent) => { |
| remoteTrack = trackEvent.track; |
| remoteStream = trackEvent.streams[0]; |
| resolve(); |
| }; |
| }); |
| }); |
| video.srcObject = remoteStream; |
| await video.play(); |
| }, "Setup audio call"); |
| |
| promise_test(async (test) => { |
| pc1.getTransceivers()[0].direction = "inactive"; |
| let offer = await pc1.createOffer(); |
| await pc1.setLocalDescription(offer); |
| |
| // Let's remove ssrc lines |
| let sdpLines = offer.sdp.split("\r\n"); |
| offer.sdp = sdpLines.filter(line => line && line.length && !line.startsWith("a=ssrc")).join("\r\n") + "\r\n"; |
| |
| await pc2.setRemoteDescription(offer); |
| let answer = await pc2.createAnswer(); |
| await pc2.setLocalDescription(answer); |
| await pc1.setRemoteDescription(answer); |
| |
| // FIXME: The track should be live but is ended due to a bug in our backend. |
| assert_equals(remoteTrack.readyState, "ended"); |
| }, "Inactivate the audio transceiver"); |
| |
| promise_test(async (test) => { |
| pc1.getTransceivers()[0].direction = "sendonly"; |
| let offer = await pc1.createOffer(); |
| await pc1.setLocalDescription(offer); |
| await pc2.setRemoteDescription(offer); |
| let answer = await pc2.createAnswer(); |
| await pc2.setLocalDescription(answer); |
| await pc1.setRemoteDescription(answer); |
| |
| // FIXME: The track should be live but is ended due to a bug in our backend. |
| assert_equals(remoteTrack.readyState, "ended"); |
| }, "Reactivate the audio transceiver"); |
| </script> |
| </body> |
| </html> |