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

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 after landing data channel change 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..82a0d1a3ff016788074be1b1c10049d9582c35a8 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"
@@ -183,14 +184,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 +209,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;
@@ -249,7 +256,7 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
new MediaStreamTrack(
WebRtcLocalAudioTrackAdapter::Create(audio_track_label,
NULL),
- true));
+ true));
blink::WebVector<blink::WebMediaStreamTrack> video_tracks(
static_cast<size_t>(1));
blink::WebMediaConstraints constraints;
@@ -467,7 +474,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 +484,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 +502,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 +521,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 +541,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 +555,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 +563,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 +571,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 +579,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 +587,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 +600,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 +608,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 +616,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 +624,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 +632,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 +640,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 +648,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 +671,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 +709,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 +725,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 +741,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 +760,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 +776,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 +788,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 +802,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 +818,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 +829,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 +844,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 +856,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