From 8699a3229f63455a4f6ed04330742f0a0175bb31 Mon Sep 17 00:00:00 2001 From: Steve Anton Date: Mon, 6 Nov 2017 15:53:33 -0800 Subject: [PATCH] Have BaseChannel take MediaChannel as unique_ptr Bug: None Change-Id: I9a0c67cc364623b7c17824271edfbd782f88dbfb Reviewed-on: https://webrtc-review.googlesource.com/18300 Commit-Queue: Steve Anton Reviewed-by: Peter Thatcher Reviewed-by: Zhi Huang Cr-Commit-Position: refs/heads/master@{#20594} --- pc/channel.cc | 68 +++++++--------- pc/channel.h | 20 ++--- pc/channel_unittest.cc | 135 ++++++++++++++----------------- pc/channelmanager.cc | 33 ++++---- pc/rtcstatscollector_unittest.cc | 58 ++++++------- pc/statscollector_unittest.cc | 97 +++++++++++----------- 6 files changed, 199 insertions(+), 212 deletions(-) diff --git a/pc/channel.cc b/pc/channel.cc index 1185ec6c93..5d8bbcd451 100644 --- a/pc/channel.cc +++ b/pc/channel.cc @@ -142,7 +142,7 @@ void RtpSendParametersFromMediaDescription( BaseChannel::BaseChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, - MediaChannel* media_channel, + std::unique_ptr media_channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required) @@ -152,9 +152,9 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread, content_name_(content_name), rtcp_mux_required_(rtcp_mux_required), srtp_required_(srtp_required), - media_channel_(media_channel), + media_channel_(std::move(media_channel)), selected_candidate_pair_(nullptr) { - RTC_DCHECK(worker_thread_ == rtc::Thread::Current()); + RTC_DCHECK_RUN_ON(worker_thread_); if (srtp_required) { auto transport = rtc::MakeUnique(rtcp_mux_required, content_name); @@ -179,7 +179,7 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread, BaseChannel::~BaseChannel() { TRACE_EVENT0("webrtc", "BaseChannel::~BaseChannel"); - RTC_DCHECK(worker_thread_ == rtc::Thread::Current()); + RTC_DCHECK_RUN_ON(worker_thread_); Deinit(); StopConnectionMonitor(); // Eats any outstanding messages or packets. @@ -188,7 +188,7 @@ BaseChannel::~BaseChannel() { // We must destroy the media channel before the transport channel, otherwise // the media channel may try to send on the dead transport channel. NULLing // is not an effective strategy since the sends will come on another thread. - delete media_channel_; + media_channel_.reset(); LOG(LS_INFO) << "Destroyed channel: " << content_name_; } @@ -217,24 +217,22 @@ void BaseChannel::DisconnectTransportChannels_n() { network_thread_->Clear(this); } -bool BaseChannel::Init_w(DtlsTransportInternal* rtp_dtls_transport, +void BaseChannel::Init_w(DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, rtc::PacketTransportInternal* rtp_packet_transport, rtc::PacketTransportInternal* rtcp_packet_transport) { - if (!network_thread_->Invoke( - RTC_FROM_HERE, Bind(&BaseChannel::InitNetwork_n, this, - rtp_dtls_transport, rtcp_dtls_transport, - rtp_packet_transport, rtcp_packet_transport))) { - return false; - } + RTC_DCHECK_RUN_ON(worker_thread_); + network_thread_->Invoke(RTC_FROM_HERE, [&] { + return InitNetwork_n(rtp_dtls_transport, rtcp_dtls_transport, + rtp_packet_transport, rtcp_packet_transport); + }); + // Both RTP and RTCP channels should be set, we can call SetInterface on // the media channel and it can set network options. - RTC_DCHECK_RUN_ON(worker_thread_); media_channel_->SetInterface(this); - return true; } -bool BaseChannel::InitNetwork_n( +void BaseChannel::InitNetwork_n( DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, rtc::PacketTransportInternal* rtp_packet_transport, @@ -246,7 +244,6 @@ bool BaseChannel::InitNetwork_n( if (rtcp_mux_required_) { rtcp_mux_filter_.SetActive(); } - return true; } void BaseChannel::Deinit() { @@ -615,16 +612,14 @@ void BaseChannel::OnSelectedCandidatePairChanged( UpdateTransportOverhead(); } - invoker_.AsyncInvoke( - RTC_FROM_HERE, worker_thread_, - Bind(&MediaChannel::OnNetworkRouteChanged, media_channel_, transport_name, - network_route)); + invoker_.AsyncInvoke(RTC_FROM_HERE, worker_thread_, [=] { + media_channel_->OnNetworkRouteChanged(transport_name, network_route); + }); } void BaseChannel::OnTransportReadyToSend(bool ready) { - invoker_.AsyncInvoke( - RTC_FROM_HERE, worker_thread_, - Bind(&MediaChannel::OnReadyToSend, media_channel_, ready)); + invoker_.AsyncInvoke(RTC_FROM_HERE, worker_thread_, + [=] { media_channel_->OnReadyToSend(ready); }); } bool BaseChannel::SendPacket(bool rtcp, @@ -1435,19 +1430,18 @@ VoiceChannel::VoiceChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, MediaEngineInterface* media_engine, - VoiceMediaChannel* media_channel, + std::unique_ptr media_channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required) : BaseChannel(worker_thread, network_thread, signaling_thread, - media_channel, + std::move(media_channel), content_name, rtcp_mux_required, srtp_required), - media_engine_(media_engine), - received_media_(false) {} + media_engine_(media_engine) {} VoiceChannel::~VoiceChannel() { TRACE_EVENT0("webrtc", "VoiceChannel::~VoiceChannel"); @@ -1676,7 +1670,7 @@ void BaseChannel::UpdateTransportOverhead() { if (transport_overhead_per_packet) invoker_.AsyncInvoke( RTC_FROM_HERE, worker_thread_, - Bind(&MediaChannel::OnTransportOverheadChanged, media_channel_, + Bind(&MediaChannel::OnTransportOverheadChanged, media_channel_.get(), transport_overhead_per_packet)); } @@ -1852,14 +1846,14 @@ void VoiceChannel::OnAudioMonitorUpdate(AudioMonitor* monitor, VideoChannel::VideoChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, - VideoMediaChannel* media_channel, + std::unique_ptr media_channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required) : BaseChannel(worker_thread, network_thread, signaling_thread, - media_channel, + std::move(media_channel), content_name, rtcp_mux_required, srtp_required) {} @@ -2112,14 +2106,14 @@ void VideoChannel::OnMediaMonitorUpdate( RtpDataChannel::RtpDataChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, - DataMediaChannel* media_channel, + std::unique_ptr media_channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required) : BaseChannel(worker_thread, network_thread, signaling_thread, - media_channel, + std::move(media_channel), content_name, rtcp_mux_required, srtp_required) {} @@ -2133,20 +2127,18 @@ RtpDataChannel::~RtpDataChannel() { Deinit(); } -bool RtpDataChannel::Init_w( +void RtpDataChannel::Init_w( DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, rtc::PacketTransportInternal* rtp_packet_transport, rtc::PacketTransportInternal* rtcp_packet_transport) { - if (!BaseChannel::Init_w(rtp_dtls_transport, rtcp_dtls_transport, - rtp_packet_transport, rtcp_packet_transport)) { - return false; - } + BaseChannel::Init_w(rtp_dtls_transport, rtcp_dtls_transport, + rtp_packet_transport, rtcp_packet_transport); + media_channel()->SignalDataReceived.connect(this, &RtpDataChannel::OnDataReceived); media_channel()->SignalReadyToSend.connect( this, &RtpDataChannel::OnDataChannelReadyToSend); - return true; } bool RtpDataChannel::SendData(const SendDataParams& params, diff --git a/pc/channel.h b/pc/channel.h index c5888db558..5689338230 100644 --- a/pc/channel.h +++ b/pc/channel.h @@ -80,12 +80,12 @@ class BaseChannel BaseChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, - MediaChannel* channel, + std::unique_ptr media_channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required); virtual ~BaseChannel(); - bool Init_w(DtlsTransportInternal* rtp_dtls_transport, + void Init_w(DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, rtc::PacketTransportInternal* rtp_packet_transport, rtc::PacketTransportInternal* rtcp_packet_transport); @@ -191,7 +191,7 @@ class BaseChannel bool HandlesPayloadType(int payload_type) const; protected: - virtual MediaChannel* media_channel() const { return media_channel_; } + virtual MediaChannel* media_channel() const { return media_channel_.get(); } void SetTransports_n(DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, @@ -353,7 +353,7 @@ class BaseChannel void AddHandledPayloadType(int payload_type); private: - bool InitNetwork_n(DtlsTransportInternal* rtp_dtls_transport, + void InitNetwork_n(DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, rtc::PacketTransportInternal* rtp_packet_transport, rtc::PacketTransportInternal* rtcp_packet_transport); @@ -400,7 +400,7 @@ class BaseChannel // MediaChannel related members that should be accessed from the worker // thread. - MediaChannel* const media_channel_; + std::unique_ptr media_channel_; // Currently the |enabled_| flag is accessed from the signaling thread as // well, but it can be changed only when signaling thread does a synchronous // call to the worker thread, so it should be safe. @@ -420,7 +420,7 @@ class VoiceChannel : public BaseChannel { rtc::Thread* network_thread, rtc::Thread* signaling_thread, MediaEngineInterface* media_engine, - VoiceMediaChannel* channel, + std::unique_ptr channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required); @@ -517,7 +517,7 @@ class VoiceChannel : public BaseChannel { static const int kEarlyMediaTimeout = 1000; MediaEngineInterface* media_engine_; - bool received_media_; + bool received_media_ = false; std::unique_ptr media_monitor_; std::unique_ptr audio_monitor_; @@ -535,7 +535,7 @@ class VideoChannel : public BaseChannel { VideoChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, - VideoMediaChannel* channel, + std::unique_ptr media_channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required); @@ -612,12 +612,12 @@ class RtpDataChannel : public BaseChannel { RtpDataChannel(rtc::Thread* worker_thread, rtc::Thread* network_thread, rtc::Thread* signaling_thread, - DataMediaChannel* channel, + std::unique_ptr channel, const std::string& content_name, bool rtcp_mux_required, bool srtp_required); ~RtpDataChannel(); - bool Init_w(DtlsTransportInternal* rtp_dtls_transport, + void Init_w(DtlsTransportInternal* rtp_dtls_transport, DtlsTransportInternal* rtcp_dtls_transport, rtc::PacketTransportInternal* rtp_packet_transport, rtc::PacketTransportInternal* rtcp_packet_transport); diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc index 07333b4070..5736bb6afa 100644 --- a/pc/channel_unittest.cc +++ b/pc/channel_unittest.cc @@ -121,12 +121,14 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { } void CreateChannels(int flags1, int flags2) { - CreateChannels(new typename T::MediaChannel(NULL, typename T::Options()), - new typename T::MediaChannel(NULL, typename T::Options()), + CreateChannels(rtc::MakeUnique( + nullptr, typename T::Options()), + rtc::MakeUnique( + nullptr, typename T::Options()), flags1, flags2); } - void CreateChannels(typename T::MediaChannel* ch1, - typename T::MediaChannel* ch2, + void CreateChannels(std::unique_ptr ch1, + std::unique_ptr ch2, int flags1, int flags2) { // Network thread is started in CreateChannels, to allow the test to @@ -142,8 +144,8 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { // channels. RTC_DCHECK_EQ(flags1 & RAW_PACKET_TRANSPORT, flags2 & RAW_PACKET_TRANSPORT); rtc::Thread* worker_thread = rtc::Thread::Current(); - media_channel1_ = ch1; - media_channel2_ = ch2; + media_channel1_ = ch1.get(); + media_channel2_ = ch2.get(); rtc::PacketTransportInternal* rtp1 = nullptr; rtc::PacketTransportInternal* rtcp1 = nullptr; rtc::PacketTransportInternal* rtp2 = nullptr; @@ -240,14 +242,14 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { } } } - channel1_.reset( - CreateChannel(worker_thread, network_thread_, &media_engine_, ch1, - fake_rtp_dtls_transport1_.get(), - fake_rtcp_dtls_transport1_.get(), rtp1, rtcp1, flags1)); - channel2_.reset( - CreateChannel(worker_thread, network_thread_, &media_engine_, ch2, - fake_rtp_dtls_transport2_.get(), - fake_rtcp_dtls_transport2_.get(), rtp2, rtcp2, flags2)); + channel1_ = + CreateChannel(worker_thread, network_thread_, &media_engine_, + std::move(ch1), fake_rtp_dtls_transport1_.get(), + fake_rtcp_dtls_transport1_.get(), rtp1, rtcp1, flags1); + channel2_ = + CreateChannel(worker_thread, network_thread_, &media_engine_, + std::move(ch2), fake_rtp_dtls_transport2_.get(), + fake_rtcp_dtls_transport2_.get(), rtp2, rtcp2, flags2); channel1_->SignalMediaMonitor.connect(this, &ChannelTest::OnMediaMonitor1); channel2_->SignalMediaMonitor.connect(this, @@ -281,30 +283,26 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { AddLegacyStreamInContent(kSsrc2, flags2, &remote_media_content2_); } } - typename T::Channel* CreateChannel( + std::unique_ptr CreateChannel( rtc::Thread* worker_thread, rtc::Thread* network_thread, cricket::MediaEngineInterface* engine, - typename T::MediaChannel* ch, + std::unique_ptr ch, cricket::DtlsTransportInternal* fake_rtp_dtls_transport, cricket::DtlsTransportInternal* fake_rtcp_dtls_transport, rtc::PacketTransportInternal* fake_rtp_packet_transport, rtc::PacketTransportInternal* fake_rtcp_packet_transport, int flags) { rtc::Thread* signaling_thread = rtc::Thread::Current(); - typename T::Channel* channel = new typename T::Channel( - worker_thread, network_thread, signaling_thread, engine, ch, + auto channel = rtc::MakeUnique( + worker_thread, network_thread, signaling_thread, engine, std::move(ch), cricket::CN_AUDIO, (flags & RTCP_MUX_REQUIRED) != 0, (flags & SECURE) != 0); if (!channel->NeedsRtcpTransport()) { fake_rtcp_dtls_transport = nullptr; } - if (!channel->Init_w(fake_rtp_dtls_transport, fake_rtcp_dtls_transport, - fake_rtp_packet_transport, - fake_rtcp_packet_transport)) { - delete channel; - channel = NULL; - } + channel->Init_w(fake_rtp_dtls_transport, fake_rtcp_dtls_transport, + fake_rtp_packet_transport, fake_rtcp_packet_transport); return channel; } @@ -1280,8 +1278,8 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { T::MediaChannel::SendRtcp(kRtcpReport, sizeof(kRtcpReport)); } }; - CreateChannels(new LastWordMediaChannel(), new LastWordMediaChannel(), - RTCP_MUX, RTCP_MUX); + CreateChannels(rtc::MakeUnique(), + rtc::MakeUnique(), RTCP_MUX, RTCP_MUX); EXPECT_TRUE(SendInitiate()); EXPECT_TRUE(SendAccept()); EXPECT_TRUE(Terminate()); @@ -2207,28 +2205,26 @@ class VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest // override to add NULL parameter template <> -cricket::VideoChannel* ChannelTest::CreateChannel( +std::unique_ptr ChannelTest::CreateChannel( rtc::Thread* worker_thread, rtc::Thread* network_thread, cricket::MediaEngineInterface* engine, - cricket::FakeVideoMediaChannel* ch, + std::unique_ptr ch, cricket::DtlsTransportInternal* fake_rtp_dtls_transport, cricket::DtlsTransportInternal* fake_rtcp_dtls_transport, rtc::PacketTransportInternal* fake_rtp_packet_transport, rtc::PacketTransportInternal* fake_rtcp_packet_transport, int flags) { rtc::Thread* signaling_thread = rtc::Thread::Current(); - cricket::VideoChannel* channel = new cricket::VideoChannel( - worker_thread, network_thread, signaling_thread, ch, cricket::CN_VIDEO, - (flags & RTCP_MUX_REQUIRED) != 0, (flags & SECURE) != 0); + auto channel = rtc::MakeUnique( + worker_thread, network_thread, signaling_thread, std::move(ch), + cricket::CN_VIDEO, (flags & RTCP_MUX_REQUIRED) != 0, + (flags & SECURE) != 0); if (!channel->NeedsRtcpTransport()) { fake_rtcp_dtls_transport = nullptr; } - if (!channel->Init_w(fake_rtp_dtls_transport, fake_rtcp_dtls_transport, - fake_rtp_packet_transport, fake_rtcp_packet_transport)) { - delete channel; - channel = NULL; - } + channel->Init_w(fake_rtp_dtls_transport, fake_rtcp_dtls_transport, + fake_rtp_packet_transport, fake_rtcp_packet_transport); return channel; } @@ -3501,28 +3497,26 @@ class RtpDataChannelDoubleThreadTest : public ChannelTest { // Override to avoid engine channel parameter. template <> -cricket::RtpDataChannel* ChannelTest::CreateChannel( +std::unique_ptr ChannelTest::CreateChannel( rtc::Thread* worker_thread, rtc::Thread* network_thread, cricket::MediaEngineInterface* engine, - cricket::FakeDataMediaChannel* ch, + std::unique_ptr ch, cricket::DtlsTransportInternal* fake_rtp_dtls_transport, cricket::DtlsTransportInternal* fake_rtcp_dtls_transport, rtc::PacketTransportInternal* fake_rtp_packet_transport, rtc::PacketTransportInternal* fake_rtcp_packet_transport, int flags) { rtc::Thread* signaling_thread = rtc::Thread::Current(); - cricket::RtpDataChannel* channel = new cricket::RtpDataChannel( - worker_thread, network_thread, signaling_thread, ch, cricket::CN_DATA, - (flags & RTCP_MUX_REQUIRED) != 0, (flags & SECURE) != 0); + auto channel = rtc::MakeUnique( + worker_thread, network_thread, signaling_thread, std::move(ch), + cricket::CN_DATA, (flags & RTCP_MUX_REQUIRED) != 0, + (flags & SECURE) != 0); if (!channel->NeedsRtcpTransport()) { fake_rtcp_dtls_transport = nullptr; } - if (!channel->Init_w(fake_rtp_dtls_transport, fake_rtcp_dtls_transport, - fake_rtp_packet_transport, fake_rtcp_packet_transport)) { - delete channel; - channel = NULL; - } + channel->Init_w(fake_rtp_dtls_transport, fake_rtcp_dtls_transport, + fake_rtp_packet_transport, fake_rtcp_packet_transport); return channel; } @@ -3847,16 +3841,16 @@ class BaseChannelDeathTest : public testing::Test { : fake_rtp_dtls_transport_("foo", cricket::ICE_CANDIDATE_COMPONENT_RTP), fake_rtcp_dtls_transport_("foo", cricket::ICE_CANDIDATE_COMPONENT_RTCP), // RTCP mux not required, SRTP required. - voice_channel_( - rtc::Thread::Current(), - rtc::Thread::Current(), - rtc::Thread::Current(), - &fake_media_engine_, - new cricket::FakeVoiceMediaChannel(nullptr, - cricket::AudioOptions()), - cricket::CN_AUDIO, - false, - true) {} + voice_channel_(rtc::Thread::Current(), + rtc::Thread::Current(), + rtc::Thread::Current(), + &fake_media_engine_, + rtc::MakeUnique( + nullptr, + cricket::AudioOptions()), + cricket::CN_AUDIO, + false, + true) {} protected: cricket::FakeMediaEngine fake_media_engine_; @@ -3866,27 +3860,24 @@ class BaseChannelDeathTest : public testing::Test { }; TEST_F(BaseChannelDeathTest, SetTransportsWithNullRtpTransport) { - ASSERT_TRUE(voice_channel_.Init_w( - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_)); + voice_channel_.Init_w(&fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, + &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_); cricket::FakeDtlsTransport new_rtcp_transport( "bar", cricket::ICE_CANDIDATE_COMPONENT_RTCP); EXPECT_DEATH(voice_channel_.SetTransports(nullptr, &new_rtcp_transport), ""); } TEST_F(BaseChannelDeathTest, SetTransportsWithMissingRtcpTransport) { - ASSERT_TRUE(voice_channel_.Init_w( - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_)); + voice_channel_.Init_w(&fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, + &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_); cricket::FakeDtlsTransport new_rtp_transport( "bar", cricket::ICE_CANDIDATE_COMPONENT_RTP); EXPECT_DEATH(voice_channel_.SetTransports(&new_rtp_transport, nullptr), ""); } TEST_F(BaseChannelDeathTest, SetTransportsWithUnneededRtcpTransport) { - ASSERT_TRUE(voice_channel_.Init_w( - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_)); + voice_channel_.Init_w(&fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, + &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_); // Activate RTCP muxing, simulating offer/answer negotiation. cricket::AudioContentDescription content; content.set_rtcp_mux(true); @@ -3905,9 +3896,8 @@ TEST_F(BaseChannelDeathTest, SetTransportsWithUnneededRtcpTransport) { // This test will probably go away if/when we move the transport name out of // the transport classes and into their parent classes. TEST_F(BaseChannelDeathTest, SetTransportsWithMismatchingTransportNames) { - ASSERT_TRUE(voice_channel_.Init_w( - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_)); + voice_channel_.Init_w(&fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, + &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_); cricket::FakeDtlsTransport new_rtp_transport( "bar", cricket::ICE_CANDIDATE_COMPONENT_RTP); cricket::FakeDtlsTransport new_rtcp_transport( @@ -3920,9 +3910,8 @@ TEST_F(BaseChannelDeathTest, SetTransportsWithMismatchingTransportNames) { // Not expected to support going from DtlsTransportInternal to // PacketTransportInternal. TEST_F(BaseChannelDeathTest, SetTransportsDtlsToNonDtls) { - ASSERT_TRUE(voice_channel_.Init_w( - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, - &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_)); + voice_channel_.Init_w(&fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_, + &fake_rtp_dtls_transport_, &fake_rtcp_dtls_transport_); EXPECT_DEATH( voice_channel_.SetTransports( static_cast(&fake_rtp_dtls_transport_), @@ -3934,8 +3923,8 @@ TEST_F(BaseChannelDeathTest, SetTransportsDtlsToNonDtls) { // Not expected to support going from PacketTransportInternal to // DtlsTransportInternal. TEST_F(BaseChannelDeathTest, SetTransportsNonDtlsToDtls) { - ASSERT_TRUE(voice_channel_.Init_w(nullptr, nullptr, &fake_rtp_dtls_transport_, - &fake_rtcp_dtls_transport_)); + voice_channel_.Init_w(nullptr, nullptr, &fake_rtp_dtls_transport_, + &fake_rtcp_dtls_transport_); EXPECT_DEATH(voice_channel_.SetTransports(&fake_rtp_dtls_transport_, &fake_rtp_dtls_transport_), ""); diff --git a/pc/channelmanager.cc b/pc/channelmanager.cc index 96584440bf..bb1548dc86 100644 --- a/pc/channelmanager.cc +++ b/pc/channelmanager.cc @@ -210,12 +210,10 @@ VoiceChannel* ChannelManager::CreateVoiceChannel_w( auto voice_channel = rtc::MakeUnique( worker_thread_, network_thread_, signaling_thread, media_engine_.get(), - media_channel, content_name, rtcp_packet_transport == nullptr, - srtp_required); - if (!voice_channel->Init_w(rtp_dtls_transport, rtcp_dtls_transport, - rtp_packet_transport, rtcp_packet_transport)) { - return nullptr; - } + rtc::WrapUnique(media_channel), content_name, + rtcp_packet_transport == nullptr, srtp_required); + voice_channel->Init_w(rtp_dtls_transport, rtcp_dtls_transport, + rtp_packet_transport, rtcp_packet_transport); VoiceChannel* voice_channel_ptr = voice_channel.get(); voice_channels_.push_back(std::move(voice_channel)); @@ -302,12 +300,11 @@ VideoChannel* ChannelManager::CreateVideoChannel_w( } auto video_channel = rtc::MakeUnique( - worker_thread_, network_thread_, signaling_thread, media_channel, - content_name, rtcp_packet_transport == nullptr, srtp_required); - if (!video_channel->Init_w(rtp_dtls_transport, rtcp_dtls_transport, - rtp_packet_transport, rtcp_packet_transport)) { - return nullptr; - } + worker_thread_, network_thread_, signaling_thread, + rtc::WrapUnique(media_channel), content_name, + rtcp_packet_transport == nullptr, srtp_required); + video_channel->Init_w(rtp_dtls_transport, rtcp_dtls_transport, + rtp_packet_transport, rtcp_packet_transport); VideoChannel* video_channel_ptr = video_channel.get(); video_channels_.push_back(std::move(video_channel)); @@ -363,13 +360,11 @@ RtpDataChannel* ChannelManager::CreateRtpDataChannel( } auto data_channel = rtc::MakeUnique( - worker_thread_, network_thread_, signaling_thread, media_channel, - content_name, rtcp_transport == nullptr, srtp_required); - if (!data_channel->Init_w(rtp_transport, rtcp_transport, rtp_transport, - rtcp_transport)) { - LOG(LS_WARNING) << "Failed to init data channel."; - return nullptr; - } + worker_thread_, network_thread_, signaling_thread, + rtc::WrapUnique(media_channel), content_name, rtcp_transport == nullptr, + srtp_required); + data_channel->Init_w(rtp_transport, rtcp_transport, rtp_transport, + rtcp_transport); RtpDataChannel* data_channel_ptr = data_channel.get(); data_channels_.push_back(std::move(data_channel)); diff --git a/pc/rtcstatscollector_unittest.cc b/pc/rtcstatscollector_unittest.cc index 50cc6033b1..2e77ec3c01 100644 --- a/pc/rtcstatscollector_unittest.cc +++ b/pc/rtcstatscollector_unittest.cc @@ -454,20 +454,21 @@ class RTCStatsCollectorTestHelper : public SetSessionDescriptionObserver { EXPECT_CALL(pc_, GetSenders()).WillRepeatedly(Return(rtp_senders_)); EXPECT_CALL(pc_, GetReceivers()).WillRepeatedly(Return(rtp_receivers_)); - MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); + auto* voice_media_channel = new MockVoiceMediaChannel(); voice_channel_.reset(new cricket::VoiceChannel( worker_thread_, network_thread_, nullptr, media_engine_, - voice_media_channel, "VoiceContentName", kDefaultRtcpMuxRequired, - kDefaultSrtpRequired)); + rtc::WrapUnique(voice_media_channel), "VoiceContentName", + kDefaultRtcpMuxRequired, kDefaultSrtpRequired)); EXPECT_CALL(pc_, voice_channel()) .WillRepeatedly(Return(voice_channel_.get())); EXPECT_CALL(*voice_media_channel, GetStats(_)) .WillOnce(DoAll(SetArgPointee<0>(*voice_media_info_), Return(true))); - MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); + auto* video_media_channel = new MockVideoMediaChannel(); video_channel_.reset(new cricket::VideoChannel( - worker_thread_, network_thread_, nullptr, video_media_channel, - "VideoContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired)); + worker_thread_, network_thread_, nullptr, + rtc::WrapUnique(video_media_channel), "VideoContentName", + kDefaultRtcpMuxRequired, kDefaultSrtpRequired)); EXPECT_CALL(pc_, video_channel()) .WillRepeatedly(Return(video_channel_.get())); EXPECT_CALL(*video_media_channel, GetStats(_)) @@ -737,17 +738,18 @@ TEST_F(RTCStatsCollectorTest, CollectRTCCertificateStatsSingle) { } TEST_F(RTCStatsCollectorTest, CollectRTCCodecStats) { - MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); + auto* voice_media_channel = new MockVoiceMediaChannel(); cricket::VoiceChannel voice_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), test_->media_engine(), voice_media_channel, - "VoiceContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), test_->media_engine(), + rtc::WrapUnique(voice_media_channel), "VoiceContentName", + kDefaultRtcpMuxRequired, kDefaultSrtpRequired); - MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); + auto* video_media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), video_media_channel, "VideoContentName", - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), rtc::WrapUnique(video_media_channel), + "VideoContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); // Audio cricket::VoiceMediaInfo voice_media_info; @@ -1210,11 +1212,11 @@ TEST_F(RTCStatsCollectorTest, CollectRTCIceCandidateStats) { } TEST_F(RTCStatsCollectorTest, CollectRTCIceCandidatePairStats) { - MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); + auto* video_media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), video_media_channel, "VideoContentName", - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), rtc::WrapUnique(video_media_channel), + "VideoContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); std::unique_ptr local_candidate = CreateFakeCandidate( "42.42.42.42", 42, "protocol", cricket::LOCAL_PORT_TYPE, 42); @@ -1804,11 +1806,12 @@ TEST_F(RTCStatsCollectorTest, } TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { - MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); + auto* voice_media_channel = new MockVoiceMediaChannel(); cricket::VoiceChannel voice_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), test_->media_engine(), voice_media_channel, - "VoiceContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), test_->media_engine(), + rtc::WrapUnique(voice_media_channel), "VoiceContentName", + kDefaultRtcpMuxRequired, kDefaultSrtpRequired); test_->SetupRemoteTrackAndReceiver( cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", 1); @@ -1883,11 +1886,11 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { } TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { - MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); + auto* video_media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), video_media_channel, "VideoContentName", - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), rtc::WrapUnique(video_media_channel), + "VideoContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); test_->SetupRemoteTrackAndReceiver( cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID", 1); @@ -1984,11 +1987,12 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { } TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) { - MockVoiceMediaChannel* voice_media_channel = new MockVoiceMediaChannel(); + auto* voice_media_channel = new MockVoiceMediaChannel(); cricket::VoiceChannel voice_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), test_->media_engine(), voice_media_channel, - "VoiceContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), test_->media_engine(), + rtc::WrapUnique(voice_media_channel), "VoiceContentName", + kDefaultRtcpMuxRequired, kDefaultSrtpRequired); test_->SetupLocalTrackAndSender( cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID", 1); @@ -2061,11 +2065,11 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) { } TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) { - MockVideoMediaChannel* video_media_channel = new MockVideoMediaChannel(); + auto* video_media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( test_->worker_thread(), test_->network_thread(), - test_->signaling_thread(), video_media_channel, "VideoContentName", - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + test_->signaling_thread(), rtc::WrapUnique(video_media_channel), + "VideoContentName", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); test_->SetupLocalTrackAndSender( cricket::MEDIA_TYPE_VIDEO, "LocalVideoTrackID", 1); diff --git a/pc/statscollector_unittest.cc b/pc/statscollector_unittest.cc index 7448a12d55..104ee77c1b 100644 --- a/pc/statscollector_unittest.cc +++ b/pc/statscollector_unittest.cc @@ -926,9 +926,9 @@ TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { new SessionStats(session_stats_)); })); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), kVideoChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); StatsReports reports; // returned values. cricket::VideoSenderInfo video_sender_info; @@ -973,10 +973,11 @@ TEST_F(StatsCollectorTest, AudioBandwidthEstimationInfoIsReported) { return std::unique_ptr(new SessionStats(session_stats_)); })); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, nullptr, media_channel, - kAudioChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, nullptr, + rtc::WrapUnique(media_channel), kAudioChannelName, + kDefaultRtcpMuxRequired, kDefaultSrtpRequired); StatsReports reports; // returned values. cricket::VoiceSenderInfo voice_sender_info; @@ -1040,9 +1041,9 @@ TEST_F(StatsCollectorTest, VideoBandwidthEstimationInfoIsReported) { new SessionStats(session_stats_)); })); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), kVideoChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); StatsReports reports; // returned values. @@ -1125,10 +1126,10 @@ TEST_F(StatsCollectorTest, OnlyOneSessionObjectExists) { TEST_F(StatsCollectorTest, TrackObjectExistsWithoutUpdateStats) { StatsCollectorForTest stats(&pc_); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, "video", - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), + "video", kDefaultRtcpMuxRequired, kDefaultSrtpRequired); AddOutgoingVideoTrackStats(); stats.AddStream(stream_); @@ -1163,9 +1164,9 @@ TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { new SessionStats(session_stats_)); })); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), kVideoChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); AddOutgoingVideoTrackStats(); stats.AddStream(stream_); @@ -1229,12 +1230,12 @@ TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); // The transport_name known by the video channel. const std::string kVcName("vcname"); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, kVcName, - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), + kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); AddOutgoingVideoTrackStats(); stats.AddStream(stream_); @@ -1290,12 +1291,12 @@ TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { TEST_F(StatsCollectorTest, RemoteSsrcInfoIsAbsent) { StatsCollectorForTest stats(&pc_); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); // The transport_name known by the video channel. const std::string kVcName("vcname"); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, kVcName, - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), + kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); AddOutgoingVideoTrackStats(); stats.AddStream(stream_); @@ -1316,12 +1317,12 @@ TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); // The transport_name known by the video channel. const std::string kVcName("vcname"); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, kVcName, - kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), + kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); AddOutgoingVideoTrackStats(); stats.AddStream(stream_); @@ -1377,9 +1378,9 @@ TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { new SessionStats(session_stats_)); })); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), kVideoChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); AddIncomingVideoTrackStats(); stats.AddStream(stream_); @@ -1685,12 +1686,13 @@ TEST_F(StatsCollectorTest, FilterOutNegativeInitialValues) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); // The transport_name known by the voice channel. const std::string kVcName("vcname"); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, media_engine_, media_channel, - kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, media_engine_, + rtc::WrapUnique(media_channel), kVcName, kDefaultRtcpMuxRequired, + kDefaultSrtpRequired); // Create a local stream with a local audio track and adds it to the stats. if (stream_ == NULL) @@ -1794,12 +1796,13 @@ TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); // The transport_name known by the voice channel. const std::string kVcName("vcname"); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, media_engine_, media_channel, - kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, media_engine_, + rtc::WrapUnique(media_channel), kVcName, kDefaultRtcpMuxRequired, + kDefaultSrtpRequired); AddOutgoingAudioTrackStats(); stats.AddStream(stream_); stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack); @@ -1829,12 +1832,13 @@ TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); // The transport_name known by the voice channel. const std::string kVcName("vcname"); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, media_engine_, media_channel, - kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, media_engine_, + rtc::WrapUnique(media_channel), kVcName, kDefaultRtcpMuxRequired, + kDefaultSrtpRequired); AddIncomingAudioTrackStats(); stats.AddStream(stream_); @@ -1858,12 +1862,13 @@ TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); // The transport_name known by the voice channel. const std::string kVcName("vcname"); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, media_engine_, media_channel, - kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, media_engine_, + rtc::WrapUnique(media_channel), kVcName, kDefaultRtcpMuxRequired, + kDefaultSrtpRequired); AddOutgoingAudioTrackStats(); stats.AddStream(stream_); stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); @@ -1921,12 +1926,13 @@ TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); // The transport_name known by the voice channel. const std::string kVcName("vcname"); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, media_engine_, media_channel, - kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, media_engine_, + rtc::WrapUnique(media_channel), kVcName, kDefaultRtcpMuxRequired, + kDefaultSrtpRequired); // Create a local stream with a local audio track and adds it to the stats. AddOutgoingAudioTrackStats(); @@ -2010,12 +2016,13 @@ TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) { EXPECT_CALL(pc_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) .WillRepeatedly(Return(nullptr)); - MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); + auto* media_channel = new MockVoiceMediaChannel(); // The transport_name known by the voice channel. const std::string kVcName("vcname"); cricket::VoiceChannel voice_channel( - worker_thread_, network_thread_, nullptr, media_engine_, media_channel, - kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); + worker_thread_, network_thread_, nullptr, media_engine_, + rtc::WrapUnique(media_channel), kVcName, kDefaultRtcpMuxRequired, + kDefaultSrtpRequired); // Create a local stream with a local audio track and adds it to the stats. AddOutgoingAudioTrackStats(); @@ -2072,9 +2079,9 @@ TEST_F(StatsCollectorTest, VerifyVideoSendSsrcStats) { new SessionStats(session_stats_)); })); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), kVideoChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); StatsReports reports; // returned values. cricket::VideoSenderInfo video_sender_info; @@ -2119,9 +2126,9 @@ TEST_F(StatsCollectorTest, VerifyVideoReceiveSsrcStats) { new SessionStats(session_stats_)); })); - MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); + auto* media_channel = new MockVideoMediaChannel(); cricket::VideoChannel video_channel( - worker_thread_, network_thread_, nullptr, media_channel, + worker_thread_, network_thread_, nullptr, rtc::WrapUnique(media_channel), kVideoChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); StatsReports reports; // returned values. cricket::VideoReceiverInfo video_receiver_info;