diff options
Diffstat (limited to 'content/renderer/media/peer_connection_handler_jsep_unittest.cc')
-rw-r--r-- | content/renderer/media/peer_connection_handler_jsep_unittest.cc | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/content/renderer/media/peer_connection_handler_jsep_unittest.cc b/content/renderer/media/peer_connection_handler_jsep_unittest.cc deleted file mode 100644 index 03f3eb6..0000000 --- a/content/renderer/media/peer_connection_handler_jsep_unittest.cc +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include <string> - -#include "base/memory/scoped_ptr.h" -#include "base/message_loop.h" -#include "base/utf_string_conversions.h" -#include "content/renderer/media/mock_media_stream_dependency_factory.h" -#include "content/renderer/media/mock_media_stream_impl.h" -#include "content/renderer/media/mock_web_peer_connection_00_handler_client.h" -#include "content/renderer/media/mock_peer_connection_impl.h" -#include "content/renderer/media/peer_connection_handler_jsep.h" -#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/webrtc/peerconnection.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebICECandidateDescriptor.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebICEOptions.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaHints.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStreamSource.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSessionDescriptionDescriptor.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" - -namespace webrtc { - -class MockVideoRendererWrapper : public VideoRendererWrapperInterface { - public: - virtual cricket::VideoRenderer* renderer() OVERRIDE { return NULL; } - - protected: - virtual ~MockVideoRendererWrapper() {} -}; - -} // namespace webrtc - -TEST(PeerConnectionHandlerJsepTest, Basic) { - MessageLoop loop; - - scoped_ptr<WebKit::MockWebPeerConnection00HandlerClient> mock_client( - new WebKit::MockWebPeerConnection00HandlerClient()); - scoped_refptr<MockMediaStreamImpl> mock_ms_impl(new MockMediaStreamImpl()); - scoped_ptr<MockMediaStreamDependencyFactory> mock_dependency_factory( - new MockMediaStreamDependencyFactory()); - mock_dependency_factory->CreatePeerConnectionFactory(NULL, - NULL, - NULL, - NULL, - NULL); - scoped_ptr<PeerConnectionHandlerJsep> pc_handler( - new PeerConnectionHandlerJsep(mock_client.get(), - mock_ms_impl.get(), - mock_dependency_factory.get())); - - WebKit::WebString server_config( - WebKit::WebString::fromUTF8("STUN stun.l.google.com:19302")); - WebKit::WebString username; - pc_handler->initialize(server_config, username); - EXPECT_TRUE(pc_handler->native_peer_connection_.get()); - webrtc::MockPeerConnectionImpl* mock_peer_connection = - static_cast<webrtc::MockPeerConnectionImpl*>( - pc_handler->native_peer_connection_.get()); - - // Create offer. - WebKit::WebMediaHints hints; - hints.initialize(true, true); - WebKit::WebSessionDescriptionDescriptor offer = - pc_handler->createOffer(hints); - EXPECT_FALSE(offer.isNull()); - EXPECT_EQ(std::string(mock_peer_connection->kDummyOffer), - UTF16ToUTF8(offer.initialSDP())); - EXPECT_EQ(hints.audio(), mock_peer_connection->hint_audio()); - EXPECT_EQ(hints.video(), mock_peer_connection->hint_video()); - - // Create answer. - WebKit::WebString offer_string = "offer"; - hints.reset(); - hints.initialize(false, false); - WebKit::WebSessionDescriptionDescriptor answer = - pc_handler->createAnswer(offer_string, hints); - EXPECT_FALSE(answer.isNull()); - EXPECT_EQ(UTF16ToUTF8(offer_string), UTF16ToUTF8(answer.initialSDP())); - EXPECT_EQ(UTF16ToUTF8(offer_string), mock_peer_connection->description_sdp()); - EXPECT_EQ(hints.audio(), mock_peer_connection->hint_audio()); - EXPECT_EQ(hints.video(), mock_peer_connection->hint_video()); - - // Set local description. - PeerConnectionHandlerJsep::Action action = - PeerConnectionHandlerJsep::ActionSDPOffer; - WebKit::WebSessionDescriptionDescriptor description; - WebKit::WebString sdp = "test sdp"; - description.initialize(sdp); - EXPECT_TRUE(pc_handler->setLocalDescription(action, description)); - EXPECT_EQ(webrtc::PeerConnectionInterface::kOffer, - mock_peer_connection->action()); - EXPECT_EQ(UTF16ToUTF8(sdp), mock_peer_connection->description_sdp()); - - // Get local description. - description.reset(); - description = pc_handler->localDescription(); - EXPECT_FALSE(description.isNull()); - EXPECT_EQ(UTF16ToUTF8(sdp), UTF16ToUTF8(description.initialSDP())); - - // Set remote description. - action = PeerConnectionHandlerJsep::ActionSDPAnswer; - sdp = "test sdp 2"; - description.reset(); - description.initialize(sdp); - EXPECT_TRUE(pc_handler->setRemoteDescription(action, description)); - EXPECT_EQ(webrtc::PeerConnectionInterface::kAnswer, - mock_peer_connection->action()); - EXPECT_EQ(UTF16ToUTF8(sdp), mock_peer_connection->description_sdp()); - - // Get remote description. - description.reset(); - description = pc_handler->remoteDescription(); - EXPECT_FALSE(description.isNull()); - EXPECT_EQ(UTF16ToUTF8(sdp), UTF16ToUTF8(description.initialSDP())); - - // Start ICE. - WebKit::WebICEOptions options; - options.initialize(WebKit::WebICEOptions::CandidateTypeAll); - EXPECT_TRUE(pc_handler->startIce(options)); - EXPECT_EQ(webrtc::PeerConnectionInterface::kUseAll, - mock_peer_connection->ice_options()); - - // Process ICE message. - WebKit::WebICECandidateDescriptor candidate; - WebKit::WebString label = "test label"; - sdp = "test sdp"; - candidate.initialize(label, sdp); - EXPECT_TRUE(pc_handler->processIceMessage(candidate)); - EXPECT_EQ(UTF16ToUTF8(label), mock_peer_connection->ice_label()); - EXPECT_EQ(UTF16ToUTF8(sdp), mock_peer_connection->ice_sdp()); - - // Add stream. - // 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(video_track_label), - WebKit::WebMediaStreamSource::TypeVideo, - WebKit::WebString::fromUTF8("RemoteVideo")); - WebKit::WebMediaStreamDescriptor local_stream; - local_stream.initialize(UTF8ToUTF16(stream_label), source_vector); - pc_handler->addStream(local_stream); - EXPECT_EQ(stream_label, mock_peer_connection->stream_label()); - EXPECT_TRUE(mock_peer_connection->stream_changes_committed()); - - // On add stream. - 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()); - - // Set renderer. - 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()); - - // Remove stream. - WebKit::WebVector<WebKit::WebMediaStreamDescriptor> empty_streams( - static_cast<size_t>(0)); - pc_handler->removeStream(local_stream); - EXPECT_EQ("", mock_peer_connection->stream_label()); - mock_peer_connection->ClearStreamChangesCommitted(); - EXPECT_TRUE(!mock_peer_connection->stream_changes_committed()); - - // On remove stream. - pc_handler->OnRemoveStream(remote_stream); - EXPECT_TRUE(mock_client->stream_label().empty()); - - // Add stream again. - pc_handler->addStream(local_stream); - EXPECT_EQ(stream_label, mock_peer_connection->stream_label()); - EXPECT_TRUE(mock_peer_connection->stream_changes_committed()); - - // On state change. - mock_peer_connection->SetReadyState(webrtc::PeerConnectionInterface::kActive); - webrtc::PeerConnectionObserver::StateType state = - webrtc::PeerConnectionObserver::kReadyState; - pc_handler->OnStateChange(state); - EXPECT_EQ(WebKit::WebPeerConnection00HandlerClient::ReadyStateActive, - mock_client->ready_state()); - - // On ICE candidate. - std::string candidate_label = "test label"; - std::string candidate_sdp = "test sdp"; - webrtc::IceCandidateInterface* native_candidate = - mock_dependency_factory->CreateIceCandidate(candidate_label, - candidate_sdp); - pc_handler->OnIceCandidate(native_candidate); - EXPECT_EQ(candidate_label, mock_client->candidate_label()); - EXPECT_EQ(candidate_sdp, mock_client->candidate_sdp()); - EXPECT_TRUE(mock_client->more_to_follow()); - - // On ICE complete. - pc_handler->OnIceComplete(); - EXPECT_TRUE(mock_client->candidate_label().empty()); - EXPECT_TRUE(mock_client->candidate_sdp().empty()); - EXPECT_FALSE(mock_client->more_to_follow()); - - // Stop. - 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(); -} |