You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

177 lines
7.5 KiB

diff --git a/test/rtcpeerconnection.js b/test/rtcpeerconnection.js
index acab159..acd6065 100644
--- a/test/rtcpeerconnection.js
+++ b/test/rtcpeerconnection.js
@@ -699,7 +699,7 @@ describe('Edge shim', () => {
'a=ice-pwd:' + ICEPWD + '\r\n' +
'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
'a=setup:actpass\r\n' +
- 'a=mid:audio1\r\n' +
+ 'a=mid:audio2\r\n' +
'a=sendonly\r\n' +
'a=rtcp-mux\r\n' +
'a=rtcp-rsize\r\n' +
@@ -738,18 +738,22 @@ describe('Edge shim', () => {
'a=group:BUNDLE audio1 video1\r\n' +
MINIMAL_AUDIO_MLINE +
'a=ssrc:1001 msid:stream1 track1\r\n' +
- 'm=audio 9 UDP/TLS/RTP/SAVPF 111\r\n' +
+ 'm=video 1 UDP/TLS/RTP/SAVPF 100\r\n' +
'c=IN IP4 0.0.0.0\r\n' +
- 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
'a=ice-pwd:' + ICEPWD + '\r\n' +
'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
'a=setup:actpass\r\n' +
- 'a=mid:audio1\r\n' +
+ 'a=mid:video1\r\n' +
'a=sendonly\r\n' +
'a=rtcp-mux\r\n' +
'a=rtcp-rsize\r\n' +
- 'a=rtpmap:111 opus/48000/2\r\n' +
+ 'a=rtpmap:100 VP8/90000\r\n' +
+ 'a=rtcp:1 IN IP4 0.0.0.0\r\n' +
+ 'a=rtcp-fb:100 nack\r\n' +
+ 'a=rtcp-fb:100 nack pli\r\n' +
+ 'a=rtcp-fb:100 goog-remb\r\n' +
+ 'a=extmap:1 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n' +
'a=ssrc:2002 msid:stream2 track2\r\n' +
'a=ssrc:2002 cname:some\r\n';
it('disposes the second ice transport', () => {
@@ -783,7 +787,7 @@ describe('Edge shim', () => {
'a=ice-pwd:' + ICEPWD + '\r\n' +
'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
'a=setup:actpass\r\n' +
- 'a=mid:audio1\r\n' +
+ 'a=mid:audio2\r\n' +
'a=sendonly\r\n' +
'a=rtcp-mux\r\n' +
'a=rtcp-rsize\r\n' +
@@ -1182,30 +1186,36 @@ describe('Edge shim', () => {
});
it('ignores extra candidates in a bundle answer', () => {
- const sdp = SDP_BOILERPLATE +
- 'a=group:BUNDLE audio1 video1\r\n' +
- MINIMAL_AUDIO_MLINE +
- 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 typ host\r\n' +
- 'a=end-of-candidates\r\n' +
- 'm=video 9 UDP/TLS/RTP/SAVPF 102\r\n' +
- 'c=IN IP4 0.0.0.0\r\n' +
- 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
- 'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
- 'a=ice-pwd:' + ICEPWD + '\r\n' +
- 'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
- 'a=setup:actpass\r\n' +
- 'a=mid:video1\r\n' +
- 'a=sendrecv\r\n' +
- 'a=rtcp-mux\r\n' +
- 'a=rtcp-rsize\r\n' +
- 'a=rtpmap:102 vp8/90000\r\n' +
- 'a=ssrc:1002 cname:some\r\n' +
- 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 typ host\r\n' +
- 'a=end-of-candidates\r\n';
return pc.createOffer({offerToReceiveAudio: true,
offerToReceiveVideo: true})
.then(offer => pc.setLocalDescription(offer))
- .then(() => pc.setRemoteDescription({type: 'answer', sdp}))
+ .then(() => {
+ const mids = SDPUtils.getMediaSections(pc.localDescription.sdp)
+ .map(mediaSection => SDPUtils.getMid(mediaSection));
+ const sdp = SDP_BOILERPLATE +
+ 'a=group:BUNDLE ' + mids.join(' ') + '\r\n' +
+ MINIMAL_AUDIO_MLINE.replace('audio1', mids[0]) +
+ 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 ' +
+ 'typ host\r\n' +
+ 'a=end-of-candidates\r\n' +
+ 'm=video 9 UDP/TLS/RTP/SAVPF 102\r\n' +
+ 'c=IN IP4 0.0.0.0\r\n' +
+ 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
+ 'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
+ 'a=ice-pwd:' + ICEPWD + '\r\n' +
+ 'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
+ 'a=setup:actpass\r\n' +
+ 'a=mid:' + mids[1] + '\r\n' +
+ 'a=sendrecv\r\n' +
+ 'a=rtcp-mux\r\n' +
+ 'a=rtcp-rsize\r\n' +
+ 'a=rtpmap:102 vp8/90000\r\n' +
+ 'a=ssrc:1002 cname:some\r\n' +
+ 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 ' +
+ 'typ host\r\n' +
+ 'a=end-of-candidates\r\n';
+ return pc.setRemoteDescription({type: 'answer', sdp});
+ })
.then(() => {
const receiver = pc.getReceivers()[0];
const iceTransport = receiver.transport.transport;
@@ -1310,6 +1320,51 @@ describe('Edge shim', () => {
expect(e.name).to.equal('InvalidAccessError');
});
});
+
+ /*
+ it.only('does not do the wrong thing', (done) => {
+ const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE;
+ return navigator.mediaDevices.getUserMedia({video: true})
+ .then((stream => pc.addTrack(stream.getTracks()[0], stream)))
+ .then(() => pc.setRemoteDescription({type: 'offer', sdp}))
+ .then(() => {
+ console.log(pc._transceivers);
+ })
+ .then(() => pc.createAnswer())
+ .then((answer) => {
+ console.log(answer.sdp);
+ });
+ });
+
+ it.only('keeps the order from the remote offer', () => {
+ const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE +
+ 'm=video 9 UDP/TLS/RTP/SAVPF 102\r\n' +
+ 'c=IN IP4 0.0.0.0\r\n' +
+ 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
+ 'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
+ 'a=ice-pwd:' + ICEPWD + '\r\n' +
+ 'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
+ 'a=setup:actpass\r\n' +
+ 'a=mid:video1\r\n' +
+ 'a=sendrecv\r\n' +
+ 'a=rtcp-mux\r\n' +
+ 'a=rtcp-rsize\r\n' +
+ 'a=rtpmap:102 vp8/90000\r\n';
+ return navigator.mediaDevices.getUserMedia({audio: true, video: true})
+ .then((stream) => {
+ pc.addTrack(stream.getVideoTracks()[0], stream);
+ pc.addTrack(stream.getAudioTracks()[0], stream);
+ })
+ .then(() => pc.setRemoteDescription({type: 'offer', sdp}))
+ .then(() => pc.createAnswer())
+ .then((answer) => {
+ console.log(answer.sdp);
+ const sections = SDPUtils.getMediaSections(answer.sdp);
+ expect(SDPUtils.getKind(sections[0])).to.equal('audio');
+ expect(SDPUtils.getKind(sections[1])).to.equal('video');
+ });
+ });
+ */
});
describe('createOffer', () => {
@@ -3320,7 +3375,7 @@ describe('Edge shim', () => {
const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE +
'a=ssrc:1001 msid:stream1 track1\r\n' +
'a=ssrc:1001 cname:some\r\n' +
- MINIMAL_AUDIO_MLINE +
+ MINIMAL_AUDIO_MLINE.replace('audio1', 'audio2') +
'a=ssrc:1001 msid:stream1 track2\r\n' +
'a=ssrc:1001 cname:some\r\n';
pc.setRemoteDescription({type: 'offer', sdp: sdp})
@@ -3337,7 +3392,7 @@ describe('Edge shim', () => {
const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE +
'a=ssrc:1001 msid:stream1 track1\r\n' +
'a=ssrc:1001 cname:some\r\n' +
- MINIMAL_AUDIO_MLINE +
+ MINIMAL_AUDIO_MLINE.replace('audio1', 'audio2') +
'a=ssrc:1001 msid:stream2 track1\r\n' +
'a=ssrc:1001 cname:some\r\n';
pc.setRemoteDescription({type: 'offer', sdp: sdp})