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

Unified Diff: content/renderer/media/rtc_peer_connection_handler_unittest.cc

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/renderer/media/rtc_peer_connection_handler_unittest.cc
diff --git a/content/renderer/media/rtc_peer_connection_handler_unittest.cc b/content/renderer/media/rtc_peer_connection_handler_unittest.cc
index e3e66df64f4b8f9a9746d6dd59ef92b5f667d298..01dff8a612e2a81ed12bfd217e0ff63a0df8e116 100644
--- a/content/renderer/media/rtc_peer_connection_handler_unittest.cc
+++ b/content/renderer/media/rtc_peer_connection_handler_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <string>
+#include <vector>
#include "base/memory/scoped_ptr.h"
#include "base/utf_string_conversions.h"
@@ -654,6 +655,106 @@ TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) {
pc_handler_->OnRemoveStream(remote_stream);
}
+// This test that WebKit is notified about remote track state changes.
+TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
+ std::string remote_stream_label("remote_stream");
+ scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
+ AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
+
+ testing::InSequence sequence;
+ EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
+ testing::Property(&WebKit::WebMediaStream::label,
+ UTF8ToUTF16(remote_stream_label))));
+ pc_handler_->OnAddStream(remote_stream);
+ const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream();
+
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks;
+ webkit_stream.audioTracks(audio_tracks);
+ EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive,
+ audio_tracks[0].source().readyState());
+
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks;
+ webkit_stream.videoTracks(video_tracks);
+ EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive,
+ video_tracks[0].source().readyState());
+
+ remote_stream->GetAudioTracks()[0]->set_state(
+ webrtc::MediaStreamTrackInterface::kEnded);
+ EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateEnded,
+ audio_tracks[0].source().readyState());
+
+ remote_stream->GetVideoTracks()[0]->set_state(
+ webrtc::MediaStreamTrackInterface::kEnded);
+ EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateEnded,
+ video_tracks[0].source().readyState());
+}
+
+// TODO(perkj): Enable this test once https://codereview.chromium.org/14314003
+// is landed.
+TEST_F(RTCPeerConnectionHandlerTest,
+ DISABLED_RemoveAndAddAudioTrackFromRemoteStream) {
+ std::string remote_stream_label("remote_stream");
+ scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
+ AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
+
+ EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
+ testing::Property(&WebKit::WebMediaStream::label,
+ UTF8ToUTF16(remote_stream_label))));
+ pc_handler_->OnAddStream(remote_stream);
+ const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream();
+
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks;
+ webkit_stream.audioTracks(audio_tracks);
+ EXPECT_EQ(1u, audio_tracks.size());
+
+ // Remove the Webrtc audio track from the Webrtc MediaStream.
+ scoped_refptr<webrtc::AudioTrackInterface> webrtc_track =
+ remote_stream->GetAudioTracks()[0].get();
+ remote_stream->RemoveTrack(webrtc_track);
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks1;
+ webkit_stream.audioTracks(modified_audio_tracks1);
+ EXPECT_EQ(0u, modified_audio_tracks1.size());
+
+ // Add the WebRtc audio track again.
+ remote_stream->AddTrack(webrtc_track);
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks2;
+ webkit_stream.audioTracks(modified_audio_tracks2);
+ EXPECT_EQ(1u, modified_audio_tracks2.size());
+}
+
+// TODO(perkj): Enable this test once https://codereview.chromium.org/14314003
+// is landed.
+TEST_F(RTCPeerConnectionHandlerTest,
+ DISABLED_RemoveAndAddVideoTrackFromRemoteStream) {
+ std::string remote_stream_label("remote_stream");
+ scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
+ AddRemoteMockMediaStream(remote_stream_label, "video", "video"));
+
+ EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
+ testing::Property(&WebKit::WebMediaStream::label,
+ UTF8ToUTF16(remote_stream_label))));
+ pc_handler_->OnAddStream(remote_stream);
+ const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream();
+
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks;
+ webkit_stream.videoTracks(video_tracks);
+ EXPECT_EQ(1u, video_tracks.size());
+
+ // Remove the Webrtc video track from the Webrtc MediaStream.
+ scoped_refptr<webrtc::VideoTrackInterface> webrtc_track =
+ remote_stream->GetVideoTracks()[0].get();
+ remote_stream->RemoveTrack(webrtc_track);
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks1;
+ webkit_stream.videoTracks(modified_video_tracks1);
+ EXPECT_EQ(0u, modified_video_tracks1.size());
+
+ // Add the WebRtc video track again.
+ remote_stream->AddTrack(webrtc_track);
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks2;
+ webkit_stream.videoTracks(modified_video_tracks2);
+ EXPECT_EQ(1u, modified_video_tracks2.size());
+}
+
TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) {
testing::InSequence sequence;
EXPECT_CALL(*mock_tracker_.get(),

Powered by Google App Engine
This is Rietveld 408576698