Index: content/renderer/media/peer_connection_handler_unittest.cc |
diff --git a/content/renderer/media/peer_connection_handler_unittest.cc b/content/renderer/media/peer_connection_handler_unittest.cc |
index 766db5d60982712533900d8c6fa061fa0ae6bf2f..8cb4076947bfbbc63048e03bc64652d6614081c3 100644 |
--- a/content/renderer/media/peer_connection_handler_unittest.cc |
+++ b/content/renderer/media/peer_connection_handler_unittest.cc |
@@ -15,10 +15,22 @@ |
#include "content/renderer/media/rtc_video_decoder.h" |
#include "jingle/glue/thread_wrapper.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/libjingle/source/talk/app/webrtcv1/peerconnection.h" |
+#include "third_party/libjingle/source/talk/app/webrtc/peerconnection.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStreamSource.h" |
+namespace webrtc { |
+ |
+class MockVideoRendererWrapper : public VideoRendererWrapperInterface { |
+ public: |
+ virtual cricket::VideoRenderer* renderer() OVERRIDE { return NULL; } |
+ |
+ protected: |
+ virtual ~MockVideoRendererWrapper() {} |
+}; |
+ |
+} // namespace webrtc |
+ |
TEST(PeerConnectionHandlerTest, Basic) { |
MessageLoop loop; |
@@ -27,15 +39,15 @@ TEST(PeerConnectionHandlerTest, Basic) { |
scoped_refptr<MockMediaStreamImpl> mock_ms_impl(new MockMediaStreamImpl()); |
scoped_ptr<MockMediaStreamDependencyFactory> mock_dependency_factory( |
new MockMediaStreamDependencyFactory()); |
- mock_dependency_factory->CreatePeerConnectionFactory(NULL, NULL); |
+ mock_dependency_factory->CreatePeerConnectionFactory(NULL, |
+ NULL, |
+ NULL, |
+ NULL, |
+ NULL); |
scoped_ptr<PeerConnectionHandler> pc_handler( |
new PeerConnectionHandler(mock_client.get(), |
mock_ms_impl.get(), |
- mock_dependency_factory.get(), |
- NULL, |
- NULL, |
- NULL, |
- NULL)); |
+ mock_dependency_factory.get())); |
WebKit::WebString server_config( |
WebKit::WebString::fromUTF8("STUN stun.l.google.com:19302")); |
@@ -45,24 +57,24 @@ TEST(PeerConnectionHandlerTest, Basic) { |
webrtc::MockPeerConnectionImpl* mock_peer_connection = |
static_cast<webrtc::MockPeerConnectionImpl*>( |
pc_handler->native_peer_connection_.get()); |
- EXPECT_EQ(static_cast<webrtc::PeerConnectionObserver*>(pc_handler.get()), |
- mock_peer_connection->observer()); |
- std::string label("label"); |
+ // TODO(grunell): Add an audio track as well. |
+ std::string stream_label("stream-label"); |
+ std::string video_track_label("video-label"); |
+ talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> local_video_track( |
+ mock_dependency_factory->CreateLocalVideoTrack(video_track_label, NULL)); |
+ mock_ms_impl->AddTrack(video_track_label, local_video_track); |
WebKit::WebVector<WebKit::WebMediaStreamSource> source_vector( |
static_cast<size_t>(1)); |
- source_vector[0].initialize(WebKit::WebString::fromUTF8(label), |
+ source_vector[0].initialize(WebKit::WebString::fromUTF8(video_track_label), |
WebKit::WebMediaStreamSource::TypeVideo, |
WebKit::WebString::fromUTF8("RemoteVideo")); |
- WebKit::WebVector<WebKit::WebMediaStreamDescriptor> pendingAddStreams( |
+ WebKit::WebVector<WebKit::WebMediaStreamDescriptor> local_streams( |
static_cast<size_t>(1)); |
- pendingAddStreams[0].initialize(UTF8ToUTF16(label), source_vector); |
- pc_handler->produceInitialOffer(pendingAddStreams); |
- EXPECT_EQ(label, mock_ms_impl->video_label()); |
- EXPECT_EQ(label, mock_peer_connection->stream_id()); |
- EXPECT_TRUE(mock_peer_connection->video_stream()); |
- EXPECT_TRUE(mock_peer_connection->connected()); |
- EXPECT_TRUE(mock_peer_connection->video_capture_set()); |
+ local_streams[0].initialize(UTF8ToUTF16(stream_label), source_vector); |
+ pc_handler->produceInitialOffer(local_streams); |
+ EXPECT_EQ(stream_label, mock_peer_connection->stream_label()); |
+ EXPECT_TRUE(mock_peer_connection->stream_changes_committed()); |
std::string message("message1"); |
pc_handler->handleInitialOffer(WebKit::WebString::fromUTF8(message)); |
@@ -76,49 +88,47 @@ TEST(PeerConnectionHandlerTest, Basic) { |
pc_handler->OnSignalingMessage(message); |
EXPECT_EQ(message, mock_client->sdp()); |
- std::string remote_label(label); |
- remote_label.append("-remote"); |
- pc_handler->OnAddStream(remote_label, true); |
- EXPECT_EQ(remote_label, mock_client->stream_label()); |
- |
- scoped_refptr<RTCVideoDecoder> rtc_video_decoder( |
- new RTCVideoDecoder(&loop, "")); |
- pc_handler->SetVideoRenderer(label, rtc_video_decoder.get()); |
- EXPECT_EQ(label, mock_peer_connection->video_renderer_stream_id()); |
+ std::string remote_stream_label(stream_label); |
+ remote_stream_label += "-remote"; |
+ std::string remote_video_track_label(video_track_label); |
+ remote_video_track_label += "-remote"; |
+ // We use a local stream as a remote since for testing purposes we really |
+ // only need the MediaStreamInterface. |
+ talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface> remote_stream( |
+ mock_dependency_factory->CreateLocalMediaStream(remote_stream_label)); |
+ talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> remote_video_track( |
+ mock_dependency_factory->CreateLocalVideoTrack(remote_video_track_label, |
+ NULL)); |
+ remote_video_track->set_enabled(true); |
+ remote_stream->AddTrack(remote_video_track); |
+ mock_peer_connection->AddRemoteStream(remote_stream); |
+ pc_handler->OnAddStream(remote_stream); |
+ EXPECT_EQ(remote_stream_label, mock_client->stream_label()); |
+ |
+ talk_base::scoped_refptr<webrtc::MockVideoRendererWrapper> renderer( |
+ new talk_base::RefCountedObject<webrtc::MockVideoRendererWrapper>()); |
+ pc_handler->SetVideoRenderer(remote_stream_label, renderer); |
+ EXPECT_EQ(renderer, static_cast<webrtc::MockLocalVideoTrack*>( |
+ remote_video_track.get())->renderer()); |
+ |
+ WebKit::WebVector<WebKit::WebMediaStreamDescriptor> empty_streams( |
+ static_cast<size_t>(0)); |
+ pc_handler->processPendingStreams(empty_streams, local_streams); |
+ EXPECT_EQ("", mock_peer_connection->stream_label()); |
+ mock_peer_connection->ClearStreamChangesCommitted(); |
+ EXPECT_TRUE(!mock_peer_connection->stream_changes_committed()); |
- pc_handler->OnRemoveStream(remote_label, true); |
+ pc_handler->OnRemoveStream(remote_stream); |
EXPECT_TRUE(mock_client->stream_label().empty()); |
+ pc_handler->processPendingStreams(local_streams, empty_streams); |
+ EXPECT_EQ(stream_label, mock_peer_connection->stream_label()); |
+ EXPECT_TRUE(mock_peer_connection->stream_changes_committed()); |
+ |
pc_handler->stop(); |
EXPECT_FALSE(pc_handler->native_peer_connection_.get()); |
// PC handler is expected to be deleted when stop calls |
// MediaStreamImpl::ClosePeerConnection. We own and delete it here instead of |
// in the mock. |
pc_handler.reset(); |
- |
- // processPendingStreams must be tested on a new PC handler since removing |
- // streams is currently not supported. |
- pc_handler.reset(new PeerConnectionHandler(mock_client.get(), |
- mock_ms_impl.get(), |
- mock_dependency_factory.get(), |
- NULL, |
- NULL, |
- NULL, |
- NULL)); |
- pc_handler->initialize(server_config, security_origin); |
- EXPECT_TRUE(pc_handler->native_peer_connection_.get()); |
- mock_peer_connection = static_cast<webrtc::MockPeerConnectionImpl*>( |
- pc_handler->native_peer_connection_.get()); |
- |
- WebKit::WebVector<WebKit::WebMediaStreamDescriptor> pendingRemoveStreams( |
- static_cast<size_t>(0)); |
- pc_handler->processPendingStreams(pendingAddStreams, pendingRemoveStreams); |
- EXPECT_EQ(label, mock_ms_impl->video_label()); |
- EXPECT_EQ(label, mock_peer_connection->stream_id()); |
- EXPECT_TRUE(mock_peer_connection->video_stream()); |
- EXPECT_TRUE(mock_peer_connection->connected()); |
- EXPECT_TRUE(mock_peer_connection->video_capture_set()); |
- |
- pc_handler->stop(); |
- pc_handler.reset(); |
} |