Index: content/test/data/media/peerconnection-call.html |
diff --git a/content/test/data/media/peerconnection-call.html b/content/test/data/media/peerconnection-call.html |
index 535498f45d409b115b8c39774cd2d173bfd7d2a0..dbd873a197eb9d8f9c533e276b5130a731b16520 100644 |
--- a/content/test/data/media/peerconnection-call.html |
+++ b/content/test/data/media/peerconnection-call.html |
@@ -9,7 +9,6 @@ |
var gFirstConnection = null; |
var gSecondConnection = null; |
var gTestWithoutMsid = false; |
- |
var gLocalStream = null; |
var gSentTones = ''; |
@@ -19,6 +18,7 @@ |
var transformSdp = function(sdp) { return sdp; }; |
var transformRemoteSdp = function(sdp) { return sdp; }; |
var transformCandidate = function(candidate) { return candidate; }; |
+ var onLocalDescriptionError = function(error) { }; |
// When using external SDES, the crypto key is chosen by javascript. |
var EXTERNAL_SDES_LINES = { |
@@ -114,11 +114,43 @@ |
transformRemoteSdp = removeMsid; |
gTestWithoutMsid = true; |
navigator.webkitGetUserMedia({audio: true, video: true}, |
- addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
+ addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
waitForVideo('remote-view-1'); |
waitForVideo('remote-view-2'); |
} |
+ // Test that we can't setup a call with an unsupported video codec |
+ function negotiateUnsupportedVideoCodec() { |
+ createConnections(null); |
+ transformSdp = removeVideoCodec; |
+ navigator.webkitGetUserMedia({audio: true, video: true}, |
+ addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
+ onLocalDescriptionError = function(error) { |
+ var expectedMsg = 'SetLocalDescription failed: Failed to' + |
+ ' update session state: ERROR_CONTENT'; |
+ expectEquals(expectedMsg, error); |
+ |
+ // Got the right message, test succeeded. |
+ document.title = 'OK'; |
+ }; |
+ } |
+ |
+ // Test that we can't setup a call if one peer does not support encryption |
+ function negotiateNonCryptoCall() { |
+ createConnections(null); |
+ transformSdp = removeCrypto; |
+ navigator.webkitGetUserMedia({audio: true, video: true}, |
+ addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
+ onLocalDescriptionError = function(error) { |
+ var expectedMsg = 'SetLocalDescription failed: Called with a SDP without' |
+ + ' crypto enabled.'; |
+ expectEquals(expectedMsg, error); |
+ |
+ // Got the right message, test succeeded. |
+ document.title = 'OK'; |
+ }; |
+ } |
+ |
// Test that we can setup call with legacy settings. |
function callWithLegacySdp() { |
transformSdp = function(sdp) { |
@@ -418,10 +450,10 @@ |
gLocalStream = localStream; |
} |
- |
+ |
// Called if getUserMedia fails. |
function printGetUserMediaError(error) { |
- document.title = 'getUserMedia request failed with code ' + error.code; |
+ document.title = 'getUserMedia request failed with code ' + error.code; |
} |
// Called if getUserMedia succeeds and we want to send from both connections. |
@@ -510,7 +542,8 @@ |
function onOfferCreated(offer, caller, callee) { |
offer.sdp = transformSdp(offer.sdp); |
- caller.setLocalDescription(offer); |
+ caller.setLocalDescription(offer, null, onLocalDescriptionError); |
+ |
expectEquals('have-local-offer', caller.signalingState); |
receiveOffer(offer.sdp, caller, callee); |
} |
@@ -535,6 +568,18 @@ |
return offerSdp; |
} |
+ function removeVideoCodec(offerSdp) { |
+ offerSdp = offerSdp.replace('a=rtpmap:100 VP8/90000\r\n', |
+ 'a=rtpmap:100 XVP8/90000\r\n'); |
+ return offerSdp; |
+ } |
+ |
+ function removeCrypto(offerSdp) { |
+ offerSdp = offerSdp.replace(/a=crypto.*\r\n/g, 'a=Xcrypto\r\n'); |
+ offerSdp = offerSdp.replace(/a=fingerprint.*\r\n/g, ''); |
+ return offerSdp; |
+ } |
+ |
function removeBundle(sdp) { |
return sdp.replace(/a=group:BUNDLE .*\r\n/g, ''); |
} |