Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2226)

Unified Diff: content/test/data/media/peerconnection-call.html

Issue 39033006: Add tests for legacy SDP features. (Closed) Base URL: https://src.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/test/data/media/peerconnection-call.html
===================================================================
--- content/test/data/media/peerconnection-call.html (revision 229411)
+++ content/test/data/media/peerconnection-call.html (working copy)
@@ -8,13 +8,30 @@
var gFirstConnection = null;
var gSecondConnection = null;
- var gTestWithoutMsidAndBundle = false;
+ var gTestWithoutMsid = false;
phoglund_chromium 2013/10/25 00:45:05 This growing amount of global state is a bit unfor
bemasc 2013/10/25 17:39:55 Done.
+ var gTestWithoutBundle = false;
+ var gTestWithGice = false;
+ var gTestWithExternalSdes = false;
var gLocalStream = null;
var gSentTones = '';
var gRemoteStreams = {};
+ // When using external SDES, the crypto key is chosen by javascript.
+ var externalSdesLines = {
phoglund_chromium 2013/10/25 00:45:05 Nit: I guess the external* variables are constants
bemasc 2013/10/25 17:39:55 Done.
+ 'audio': 'a=crypto:1 AES_CM_128_HMAC_SHA1_80 ' +
+ 'inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR',
+ 'video': 'a=crypto:1 AES_CM_128_HMAC_SHA1_80 ' +
+ 'inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj',
+ 'data': 'a=crypto:1 AES_CM_128_HMAC_SHA1_80 ' +
+ 'inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj'
+ };
+
+ // When using GICE, the ICE credentials can be chosen by javascript.
+ var externalGiceUfrag = '1234567890123456';
+ var externalGicePwd = '123456789012345678901234';
+
setAllEventsOccuredHandler(function() {
document.title = 'OK';
});
@@ -91,13 +108,29 @@
// simulate that the remote peer don't support MSID.
function callWithoutMsidAndBundle() {
createConnections(null);
- gTestWithoutMsidAndBundle = true;
+ gTestWithoutMsid = true;
+ gTestWithoutBundle = true;
navigator.webkitGetUserMedia({audio: true, video: true},
addStreamToBothConnectionsAndNegotiate, printGetUserMediaError);
waitForVideo('remote-view-1');
waitForVideo('remote-view-2');
}
+ // Test that we can setup call with legacy settings.
+ function callWithLegacySdp() {
+ gTestWithoutBundle = true;
+ gTestWithGice = true;
+ gTestWithExternalSdes = true;
+ createConnections({
+ 'mandatory': {'RtpDataChannels': true, 'DtlsSrtpKeyAgreement': false}
+ });
+ setupDataChannel({reliable: false});
+ navigator.webkitGetUserMedia({audio: true, video: true},
+ addStreamToBothConnectionsAndNegotiate, printGetUserMediaError);
+ waitForVideo('remote-view-1');
+ waitForVideo('remote-view-2');
+ }
+
// Test only a data channel.
function callWithDataOnly() {
createConnections({optional:[{RtpDataChannels: true}]});
@@ -467,15 +500,20 @@
caller.createOffer(
function (offer) {
- caller.setLocalDescription(offer);
- expectEquals('have-local-offer', caller.signalingState);
- receiveOffer(offer.sdp, caller, callee);
+ onOfferCreated(offer, caller, callee);
});
}
+ function onOfferCreated(offer, caller, callee) {
+ offer.sdp = mungeSdp(offer.sdp);
phoglund_chromium 2013/10/25 00:45:05 Like I said above, try replacing this with the new
bemasc 2013/10/25 17:39:55 Done.
+ caller.setLocalDescription(offer);
+ expectEquals('have-local-offer', caller.signalingState);
+ receiveOffer(offer.sdp, caller, callee);
+ }
+
function receiveOffer(offerSdp, caller, callee) {
- if (gTestWithoutMsidAndBundle) {
- offerSdp = removeMsidAndBundle(offerSdp);
+ if (gTestWithoutMsid) {
phoglund_chromium 2013/10/25 00:45:05 This should be able to move into mungeSdp, or the
bemasc 2013/10/25 00:53:52 This modification has to be performed after setLoc
phoglund_chromium 2013/10/25 01:15:59 Oh, ok. Perhaps we can consider two SDP transform
bemasc 2013/10/25 17:39:55 Done.
+ offerSdp = removeMsid(offerSdp);
}
var parsedOffer = new RTCSessionDescription({ type: 'offer',
@@ -487,25 +525,68 @@
expectEquals('have-remote-offer', callee.signalingState);
}
- function removeMsidAndBundle(offerSdp) {
+ function removeMsid(offerSdp) {
offerSdp = offerSdp.replace(/a=msid-semantic.*\r\n/g, '');
- offerSdp = offerSdp.replace('a=group:BUNDLE audio video\r\n', '');
offerSdp = offerSdp.replace('a=mid:audio\r\n', '');
offerSdp = offerSdp.replace('a=mid:video\r\n', '');
offerSdp = offerSdp.replace(/a=ssrc.*\r\n/g, '');
return offerSdp;
}
+ function mungeSdp(sdp) {
+ if (gTestWithoutBundle) {
+ sdp = removeBundle(sdp);
+ }
+
+ if (gTestWithGice) {
+ sdp = useGice(sdp);
+ }
+
+ if (gTestWithExternalSdes) {
+ sdp = useExternalSdes(sdp);
+ }
+
+ return sdp;
+ }
+
+ function removeBundle(sdp) {
+ return sdp.replace(/a=group:BUNDLE .*\r\n/g, '');
+ }
+
+ function useGice(sdp) {
+ sdp = sdp.replace(/t=.*\r\n/g, function(subString) {
+ return subString + 'a=ice-options:google-ice\r\n';
+ });
+ sdp = sdp.replace(/a=ice-ufrag:.*\r\n/g,
+ 'a=ice-ufrag:' + externalGiceUfrag + '\r\n');
+ sdp = sdp.replace(/a=ice-pwd:.*\r\n/g,
+ 'a=ice-pwd:' + externalGicePwd + '\r\n');
+ return sdp;
+ }
+
+ function useExternalSdes(sdp) {
+ // Remove current crypto specification.
+ sdp = sdp.replace(/a=crypto.*\r\n/g, '');
+ sdp = sdp.replace(/a=fingerprint.*\r\n/g, '');
+ // Add external crypto. This is not compatible with |removeMsid|.
+ sdp = sdp.replace(/a=mid:(\w+)\r\n/g, function(subString, group) {
+ return subString + externalSdesLines[group] + '\r\n';
+ });
+ return sdp;
+ }
+
function onAnswerCreated(answer, caller, callee) {
+ answer.sdp = mungeSdp(answer.sdp);
callee.setLocalDescription(answer);
expectEquals('stable', callee.signalingState);
receiveAnswer(answer.sdp, caller);
}
function receiveAnswer(answerSdp, caller) {
- if (gTestWithoutMsidAndBundle) {
- answerSdp = removeMsidAndBundle(answerSdp);
+ if (gTestWithoutMsid) {
+ answerSdp = removeMsid(answerSdp);
}
+
var parsedAnswer = new RTCSessionDescription({ type: 'answer',
sdp: answerSdp });
caller.setRemoteDescription(parsedAnswer);
@@ -520,12 +601,16 @@
function onIceCandidate(event, target) {
if (event.candidate) {
var candidate = new RTCIceCandidate(event.candidate);
+ if (gTestWithGice) {
+ candidate.candidate = candidate.candidate.trimRight() +
+ ' username ' + externalGiceUfrag + ' password ' + externalGicePwd;
+ }
target.addIceCandidate(candidate);
}
}
function onRemoteStream(e, target) {
- if (gTestWithoutMsidAndBundle && e.stream.id != "default") {
+ if (gTestWithoutMsid && e.stream.id != "default") {
document.title = 'a default remote stream was expected but instead ' +
e.stream.id + ' was received.';
return;
« content/browser/media/webrtc_browsertest.cc ('K') | « content/browser/media/webrtc_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698