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

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

Issue 14200016: Added implementation of RemoteMediaStreams. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits Created 7 years, 8 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
diff --git a/content/test/data/media/peerconnection-call.html b/content/test/data/media/peerconnection-call.html
index 39b01b5a5f0a926c0e4d9e58fdd904bdb98cd6c2..bf348708f6176f555b5f594547ae9bdfac487673 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();
+ }); // 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>

Powered by Google App Engine
This is Rietveld 408576698