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

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

Issue 675013005: Split libjingle's signaling thread from the UI thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 2 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 247fcc129e1b32bde7d250ef6532ebeb2fb2871d..610897f35b2ec74a3e696431a79a771670213803 100644
--- a/content/renderer/media/rtc_peer_connection_handler_unittest.cc
+++ b/content/renderer/media/rtc_peer_connection_handler_unittest.cc
@@ -7,6 +7,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "content/child/child_process.h"
@@ -14,6 +15,7 @@
#include "content/renderer/media/media_stream_audio_source.h"
#include "content/renderer/media/media_stream_source.h"
#include "content/renderer/media/media_stream_video_track.h"
+#include "content/renderer/media/mock_media_constraint_factory.h"
#include "content/renderer/media/mock_media_stream_video_source.h"
#include "content/renderer/media/mock_peer_connection_impl.h"
#include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h"
@@ -22,7 +24,7 @@
#include "content/renderer/media/rtc_peer_connection_handler.h"
#include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h"
#include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h"
-#include "content/renderer/media/webrtc_audio_capturer.h"
+#include "content/renderer/media/webrtc_local_audio_track.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/WebKit/public/platform/WebMediaConstraints.h"
@@ -183,14 +185,19 @@ class RTCPeerConnectionHandlerUnderTest : public RTCPeerConnectionHandler {
public:
RTCPeerConnectionHandlerUnderTest(
WebRTCPeerConnectionHandlerClient* client,
- PeerConnectionDependencyFactory* dependency_factory)
- : RTCPeerConnectionHandler(client, dependency_factory) {
+ PeerConnectionDependencyFactory* dependency_factory,
+ const scoped_refptr<base::SingleThreadTaskRunner>& signaling_thread)
+ : RTCPeerConnectionHandler(client, dependency_factory, signaling_thread) {
}
MockPeerConnectionImpl* native_peer_connection() {
return static_cast<MockPeerConnectionImpl*>(
RTCPeerConnectionHandler::native_peer_connection());
}
+
+ webrtc::PeerConnectionObserver* observer() {
+ return native_peer_connection()->observer();
+ }
};
class RTCPeerConnectionHandlerTest : public ::testing::Test {
@@ -203,8 +210,9 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>());
mock_dependency_factory_.reset(new MockPeerConnectionDependencyFactory());
pc_handler_.reset(
- new RTCPeerConnectionHandlerUnderTest(mock_client_.get(),
- mock_dependency_factory_.get()));
+ new RTCPeerConnectionHandlerUnderTest(
+ mock_client_.get(), mock_dependency_factory_.get(),
+ message_loop_.message_loop_proxy()));
mock_tracker_.reset(new NiceMock<MockPeerConnectionTracker>());
blink::WebRTCConfiguration config;
blink::WebMediaConstraints constraints;
@@ -245,17 +253,25 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
blink::WebVector<blink::WebMediaStreamTrack> audio_tracks(
static_cast<size_t>(1));
audio_tracks[0].initialize(audio_source.id(), audio_source);
- audio_tracks[0].setExtraData(
- new MediaStreamTrack(
- WebRtcLocalAudioTrackAdapter::Create(audio_track_label,
- NULL),
- true));
+ StreamDeviceInfo device_info(MEDIA_DEVICE_AUDIO_CAPTURE, "Mock device",
+ "mock_device_id");
+ MockMediaConstraintFactory constraint_factory;
+ const blink::WebMediaConstraints constraints =
+ constraint_factory.CreateWebMediaConstraints();
+ scoped_refptr<WebRtcAudioCapturer> capturer(
+ WebRtcAudioCapturer::CreateCapturer(
+ -1, device_info, constraints, nullptr, nullptr));
+ scoped_refptr<WebRtcLocalAudioTrackAdapter> adapter(
+ WebRtcLocalAudioTrackAdapter::Create(audio_track_label, nullptr));
+ scoped_ptr<WebRtcLocalAudioTrack> native_track(
+ new WebRtcLocalAudioTrack(adapter.get(), capturer, nullptr));
+ audio_tracks[0].setExtraData(native_track.release());
blink::WebVector<blink::WebMediaStreamTrack> video_tracks(
static_cast<size_t>(1));
- blink::WebMediaConstraints constraints;
- constraints.initialize();
+ blink::WebMediaConstraints video_constraints;
+ video_constraints.initialize();
video_tracks[0] = MediaStreamVideoTrack::CreateVideoTrack(
- native_video_source, constraints,
+ native_video_source, video_constraints,
MediaStreamVideoSource::ConstraintsCallback(), true);
blink::WebMediaStream local_stream;
@@ -282,7 +298,6 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
stream->AddTrack(video_track.get());
}
if (!audio_track_label.empty()) {
- scoped_refptr<WebRtcAudioCapturer> capturer;
scoped_refptr<webrtc::AudioTrackInterface> audio_track(
WebRtcLocalAudioTrackAdapter::Create(audio_track_label, NULL));
stream->AddTrack(audio_track.get());
@@ -467,7 +482,7 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) {
scoped_refptr<MockRTCStatsRequest> request(
new rtc::RefCountedObject<MockRTCStatsRequest>());
pc_handler_->getStats(request.get());
- // Note that callback gets executed synchronously by mock.
+ base::RunLoop().RunUntilIdle();
ASSERT_TRUE(request->result());
EXPECT_LT(1, request->result()->report_count());
}
@@ -477,7 +492,7 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) {
new rtc::RefCountedObject<MockRTCStatsRequest>());
pc_handler_->stop();
pc_handler_->getStats(request.get());
- // Note that callback gets executed synchronously by mock.
+ base::RunLoop().RunUntilIdle();
ASSERT_TRUE(request->result());
EXPECT_LT(1, request->result()->report_count());
}
@@ -495,13 +510,15 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
new rtc::RefCountedObject<MockRTCStatsRequest>());
request->setSelector(tracks[0]);
pc_handler_->getStats(request.get());
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, request->result()->report_count());
}
TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) {
scoped_refptr<webrtc::MediaStreamInterface> stream(
AddRemoteMockMediaStream("remote_stream", "video", "audio"));
- pc_handler_->OnAddStream(stream.get());
+ pc_handler_->observer()->OnAddStream(stream.get());
+ base::RunLoop().RunUntilIdle();
const blink::WebMediaStream& remote_stream = mock_client_->remote_stream();
blink::WebVector<blink::WebMediaStreamTrack> tracks;
@@ -512,6 +529,7 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) {
new rtc::RefCountedObject<MockRTCStatsRequest>());
request->setSelector(tracks[0]);
pc_handler_->getStats(request.get());
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, request->result()->report_count());
}
@@ -531,6 +549,7 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) {
new rtc::RefCountedObject<MockRTCStatsRequest>());
request->setSelector(component);
pc_handler_->getStats(request.get());
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(0, request->result()->report_count());
}
@@ -544,7 +563,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
- pc_handler_->OnSignalingChange(new_state);
+ pc_handler_->observer()->OnSignalingChange(new_state);
new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer;
EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
@@ -552,7 +571,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
- pc_handler_->OnSignalingChange(new_state);
+ pc_handler_->observer()->OnSignalingChange(new_state);
new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer;
EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
@@ -560,7 +579,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
- pc_handler_->OnSignalingChange(new_state);
+ pc_handler_->observer()->OnSignalingChange(new_state);
new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer;
EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
@@ -568,7 +587,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
- pc_handler_->OnSignalingChange(new_state);
+ pc_handler_->observer()->OnSignalingChange(new_state);
new_state = webrtc::PeerConnectionInterface::kClosed;
EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
@@ -576,7 +595,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
- pc_handler_->OnSignalingChange(new_state);
+ pc_handler_->observer()->OnSignalingChange(new_state);
}
TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
@@ -589,7 +608,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking;
EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
@@ -597,7 +616,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected;
EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
@@ -605,7 +624,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted;
EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
@@ -613,7 +632,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed;
EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
@@ -621,7 +640,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected;
EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
@@ -629,7 +648,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed;
EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
@@ -637,7 +656,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
- pc_handler_->OnIceConnectionChange(new_state);
+ pc_handler_->observer()->OnIceConnectionChange(new_state);
}
TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) {
@@ -660,13 +679,13 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) {
webrtc::PeerConnectionInterface::IceGatheringState new_state =
webrtc::PeerConnectionInterface::kIceGatheringNew;
- pc_handler_->OnIceGatheringChange(new_state);
+ pc_handler_->observer()->OnIceGatheringChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering;
- pc_handler_->OnIceGatheringChange(new_state);
+ pc_handler_->observer()->OnIceGatheringChange(new_state);
new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete;
- pc_handler_->OnIceGatheringChange(new_state);
+ pc_handler_->observer()->OnIceGatheringChange(new_state);
// Check NULL candidate after ice gathering is completed.
EXPECT_EQ("", mock_client_->candidate_mid());
@@ -698,8 +717,10 @@ TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) {
testing::Property(&blink::WebMediaStream::id,
base::UTF8ToUTF16(remote_stream_label))));
- pc_handler_->OnAddStream(remote_stream.get());
- pc_handler_->OnRemoveStream(remote_stream.get());
+ pc_handler_->observer()->OnAddStream(remote_stream.get());
+ base::RunLoop().RunUntilIdle();
+ pc_handler_->observer()->OnRemoveStream(remote_stream.get());
+ base::RunLoop().RunUntilIdle();
}
// This test that WebKit is notified about remote track state changes.
@@ -712,7 +733,8 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
testing::Property(&blink::WebMediaStream::id,
base::UTF8ToUTF16(remote_stream_label))));
- pc_handler_->OnAddStream(remote_stream.get());
+ pc_handler_->observer()->OnAddStream(remote_stream.get());
+ base::RunLoop().RunUntilIdle();
const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
@@ -727,11 +749,13 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
remote_stream->GetAudioTracks()[0]->set_state(
webrtc::MediaStreamTrackInterface::kEnded);
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
audio_tracks[0].source().readyState());
remote_stream->GetVideoTracks()[0]->set_state(
webrtc::MediaStreamTrackInterface::kEnded);
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
video_tracks[0].source().readyState());
}
@@ -744,7 +768,8 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
testing::Property(&blink::WebMediaStream::id,
base::UTF8ToUTF16(remote_stream_label))));
- pc_handler_->OnAddStream(remote_stream.get());
+ pc_handler_->observer()->OnAddStream(remote_stream.get());
+ base::RunLoop().RunUntilIdle();
const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
{
@@ -759,6 +784,7 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
scoped_refptr<webrtc::AudioTrackInterface> webrtc_track =
remote_stream->GetAudioTracks()[0].get();
remote_stream->RemoveTrack(webrtc_track.get());
+ base::RunLoop().RunUntilIdle();
{
blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1;
@@ -770,6 +796,7 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
// Add the WebRtc audio track again.
remote_stream->AddTrack(webrtc_track.get());
+ base::RunLoop().RunUntilIdle();
blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2;
webkit_stream.audioTracks(modified_audio_tracks2);
EXPECT_EQ(1u, modified_audio_tracks2.size());
@@ -783,7 +810,8 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
testing::Property(&blink::WebMediaStream::id,
base::UTF8ToUTF16(remote_stream_label))));
- pc_handler_->OnAddStream(remote_stream.get());
+ pc_handler_->observer()->OnAddStream(remote_stream.get());
+ base::RunLoop().RunUntilIdle();
const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
{
@@ -798,6 +826,7 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
scoped_refptr<webrtc::VideoTrackInterface> webrtc_track =
remote_stream->GetVideoTracks()[0].get();
remote_stream->RemoveTrack(webrtc_track.get());
+ base::RunLoop().RunUntilIdle();
{
blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1;
webkit_stream.videoTracks(modified_video_tracks1);
@@ -808,6 +837,7 @@ TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
// Add the WebRtc video track again.
remote_stream->AddTrack(webrtc_track.get());
+ base::RunLoop().RunUntilIdle();
blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2;
webkit_stream.videoTracks(modified_video_tracks2);
EXPECT_EQ(1u, modified_video_tracks2.size());
@@ -822,7 +852,8 @@ TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) {
scoped_ptr<webrtc::IceCandidateInterface> native_candidate(
mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp));
- pc_handler_->OnIceCandidate(native_candidate.get());
+ pc_handler_->observer()->OnIceCandidate(native_candidate.get());
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ("sdpMid", mock_client_->candidate_mid());
EXPECT_EQ(1, mock_client_->candidate_mlineindex());
EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp());
@@ -833,7 +864,7 @@ TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) {
EXPECT_CALL(*mock_tracker_.get(),
TrackOnRenegotiationNeeded(pc_handler_.get()));
EXPECT_CALL(*mock_client_.get(), negotiationNeeded());
- pc_handler_->OnRenegotiationNeeded();
+ pc_handler_->observer()->OnRenegotiationNeeded();
}
TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) {

Powered by Google App Engine
This is Rietveld 408576698