Chromium Code Reviews| 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 39b01b5a5f0a926c0e4d9e58fdd904bdb98cd6c2..e482a72f4be23d557f9f9968ac0e050109239706 100644 |
| --- a/content/test/data/media/peerconnection-call.html |
| +++ b/content/test/data/media/peerconnection-call.html |
| @@ -13,8 +13,8 @@ |
| var gLocalStream = null; |
| var gSentTones = ''; |
| - setAllEventsOccuredHandler(function() { |
| - document.title = 'OK'; |
| + setAllEventsOccuredHandler(function() { |
| + document.title = 'OK'; |
| }); |
| // Test that we can setup call with an audio and video track. |
| @@ -43,7 +43,7 @@ |
| createConnections(null); |
| gTestWithoutMsidAndBundle = true; |
| navigator.webkitGetUserMedia({audio:true, video:true}, |
| - addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
| + addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
| waitForVideo('remote-view-1'); |
| waitForVideo('remote-view-2'); |
| } |
| @@ -103,8 +103,8 @@ |
| // Do the DTMF test after we have received video. |
| detectVideoIn('remote-view-2', onCallEstablished); |
| } |
| - |
| - // Test call with a new Video MediaStream that has been created based on a |
| + |
| + // Test call with a new Video MediaStream that has been created based on a |
| // stream generated by getUserMedia. |
| function callWithNewVideoMediaStream() { |
| createConnections(null); |
| @@ -114,6 +114,69 @@ |
| waitForVideo('remote-view-2'); |
| } |
| + // Test call with a new Video MediaStream that has been created based on a |
| + // stream generated by getUserMedia. When Video is flowing, an audio track |
| + // is added to the sent stream and the video track is removed. This |
| + // is to test that adding and removing of remote tracks on an existing |
| + // mediastream works. |
| + function callWithNewVideoMediaStreamLaterSwitchToAudio() { |
| + createConnections(null); |
| + navigator.webkitGetUserMedia({audio:true, video:true}, |
| + createNewVideoStreamAndAddToBothConnections, printGetUserMediaError); |
| + |
| + waitForVideo('remote-view-1'); |
| + waitForVideo('remote-view-2'); |
| + |
| + // Set an event handler for when video is playing. |
| + setAllEventsOccuredHandler(function() { |
| + // Add an audio track to the local stream and remove the video track and |
| + // then renegotiate. But first - setup the expectations. |
| + local_stream = gFirstConnection.getLocalStreams()[0]; |
| + |
| + remote_stream_1 = gFirstConnection.getRemoteStreams()[0]; |
| + // Add an expected event that onaddtrack will be called on the remote |
| + // mediastream received on gFirstConnection when the audio track is |
| + // received. |
| + addExpectedEvent(); |
| + remote_stream_1.onaddtrack = function(){ |
| + expectEquals(remote_stream_1.getAudioTracks()[0].id, |
| + local_stream.getAudioTracks()[0].id); |
| + eventOccured(); |
| + } |
| + |
| + // Add an expectation that the received video track is removed from |
| + // gFirstConnection. |
| + addExpectedEvent(); |
| + remote_stream_1.onremovetrack = function() { |
| + eventOccured(); |
| + } |
| + |
| + // Add an expected event that onaddtrack will be called on the remote |
| + // mediastream received on gSecondConnection when the audio track is |
| + // received. |
| + remote_stream_2 = gSecondConnection.getRemoteStreams()[0]; |
| + addExpectedEvent(); |
| + remote_stream_2.onaddtrack = function() { |
| + expectEquals(remote_stream_2.getAudioTracks()[0].id, |
| + local_stream.getAudioTracks()[0].id); |
| + eventOccured(); |
| + } |
| + |
| + // Add an expectation that the received video track is removed from |
| + // gSecondConnection. |
| + addExpectedEvent(); |
| + remote_stream_2.onremovetrack = function() { |
| + eventOccured(); |
| + } |
| + // When all the above events have occurred- the test pass. |
| + setAllEventsOccuredHandler(function() { document.title = 'OK'; }); |
| + |
| + local_stream.addTrack(gLocalStream.getAudioTracks()[0]); |
| + local_stream.removeTrack(local_stream.getVideoTracks()[0]); |
| + negotiate(); |
|
phoglund_chromium
2013/04/18 17:18:40
Nit: End of...
By the way, that you need to add t
perkj_chrome
2013/04/19 06:23:21
In that case I would like to keep this as is. Yes
|
| + }); // end of setAllEventsOccuredHandler |
| + } |
| + |
| // This function is used for setting up a test that: |
| // 1. Creates a data channel on |gFirstConnection| and sends data to |
| // |gSecondConnection|. |
| @@ -159,7 +222,7 @@ |
| secondDataChannel.send(sendDataString); |
| } |
| } |
| - } |
| + } |
| function onToneChange(tone) { |
| gSentTones += tone.tone; |
| @@ -207,14 +270,17 @@ |
| gFirstConnection.addStream(localStream); |
| negotiate(); |
| } |
| - |
| + |
| // Called if getUserMedia succeeds when we want to send a modified |
| - // MediaStream. A new MediaStream is created and the video track from |
| + // MediaStream. A new MediaStream is created and the video track from |
| // |localStream| is added. |
| function createNewVideoStreamAndAddToBothConnections(localStream) { |
| + displayAndRemember(localStream); |
| var new_stream = new webkitMediaStream(); |
| - new_stream.addTrack(localStream.getVideoTracks()[0]); |
| - addStreamToBothConnectionsAndNegotiate(new_stream); |
| + new_stream.addTrack(localStream.getVideoTracks()[0]); |
| + gFirstConnection.addStream(new_stream); |
| + gSecondConnection.addStream(new_stream); |
| + negotiate(); |
| } |
| function negotiate() { |
| @@ -288,7 +354,7 @@ |
| var remoteVideo = $(target); |
| remoteVideo.src = remoteStreamUrl; |
| } |
| - |
| + |
| </script> |
| </head> |
| <body> |