| Index: webrtc/pc/channel_unittest.cc
|
| diff --git a/webrtc/pc/channel_unittest.cc b/webrtc/pc/channel_unittest.cc
|
| index 589ebd54d17342648a26f4b93187a0588643256d..b07e8a68f2bab530831149b06f370979b17cf321 100644
|
| --- a/webrtc/pc/channel_unittest.cc
|
| +++ b/webrtc/pc/channel_unittest.cc
|
| @@ -145,6 +145,12 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
| &ChannelTest<T>::OnMediaMonitor1);
|
| channel2_->SignalMediaMonitor.connect(this,
|
| &ChannelTest<T>::OnMediaMonitor2);
|
| + channel1_->SignalDestroyRtcpTransport.connect(
|
| + transport_controller1_.get(),
|
| + &cricket::FakeTransportController::OnDestroyRtcpTransport);
|
| + channel2_->SignalDestroyRtcpTransport.connect(
|
| + transport_controller2_.get(),
|
| + &cricket::FakeTransportController::OnDestroyRtcpTransport);
|
| if ((flags1 & DTLS) && (flags2 & DTLS)) {
|
| flags1 = (flags1 & ~SECURE);
|
| flags2 = (flags2 & ~SECURE);
|
| @@ -190,13 +196,24 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
| typename T::MediaChannel* ch,
|
| cricket::TransportController* transport_controller,
|
| int flags) {
|
| + rtc::Thread* signaling_thread =
|
| + transport_controller ? transport_controller->signaling_thread()
|
| + : nullptr;
|
| typename T::Channel* channel = new typename T::Channel(
|
| - worker_thread, network_thread, engine, ch, transport_controller,
|
| + worker_thread, network_thread, signaling_thread, engine, ch,
|
| cricket::CN_AUDIO, (flags & RTCP) != 0, (flags & SECURE) != 0);
|
| rtc::CryptoOptions crypto_options;
|
| crypto_options.enable_gcm_crypto_suites = (flags & GCM_CIPHER) != 0;
|
| channel->SetCryptoOptions(crypto_options);
|
| - if (!channel->Init_w(nullptr)) {
|
| + cricket::TransportChannel* rtp_transport =
|
| + transport_controller->CreateTransportChannel(
|
| + channel->content_name(), cricket::ICE_CANDIDATE_COMPONENT_RTP);
|
| + cricket::TransportChannel* rtcp_transport = nullptr;
|
| + if (channel->NeedsRtcpTransport()) {
|
| + rtcp_transport = transport_controller->CreateTransportChannel(
|
| + channel->content_name(), cricket::ICE_CANDIDATE_COMPONENT_RTCP);
|
| + }
|
| + if (!channel->Init_w(rtp_transport, rtcp_transport)) {
|
| delete channel;
|
| channel = NULL;
|
| }
|
| @@ -383,7 +400,7 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
| // Returns true if so.
|
| bool CheckGcmCipher(typename T::Channel* channel, int flags) {
|
| int suite;
|
| - if (!channel->transport_channel()->GetSrtpCryptoSuite(&suite)) {
|
| + if (!channel->rtp_transport()->GetSrtpCryptoSuite(&suite)) {
|
| return false;
|
| }
|
|
|
| @@ -513,43 +530,43 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
| // mux.
|
| void TestSetContentsRtcpMux() {
|
| CreateChannels(RTCP, RTCP);
|
| - EXPECT_TRUE(channel1_->rtcp_transport_channel() != NULL);
|
| - EXPECT_TRUE(channel2_->rtcp_transport_channel() != NULL);
|
| + EXPECT_TRUE(channel1_->rtcp_transport() != NULL);
|
| + EXPECT_TRUE(channel2_->rtcp_transport() != NULL);
|
| typename T::Content content;
|
| CreateContent(0, kPcmuCodec, kH264Codec, &content);
|
| // Both sides agree on mux. Should no longer be a separate RTCP channel.
|
| content.set_rtcp_mux(true);
|
| EXPECT_TRUE(channel1_->SetLocalContent(&content, CA_OFFER, NULL));
|
| EXPECT_TRUE(channel1_->SetRemoteContent(&content, CA_ANSWER, NULL));
|
| - EXPECT_TRUE(channel1_->rtcp_transport_channel() == NULL);
|
| + EXPECT_TRUE(channel1_->rtcp_transport() == NULL);
|
| // Only initiator supports mux. Should still have a separate RTCP channel.
|
| EXPECT_TRUE(channel2_->SetLocalContent(&content, CA_OFFER, NULL));
|
| content.set_rtcp_mux(false);
|
| EXPECT_TRUE(channel2_->SetRemoteContent(&content, CA_ANSWER, NULL));
|
| - EXPECT_TRUE(channel2_->rtcp_transport_channel() != NULL);
|
| + EXPECT_TRUE(channel2_->rtcp_transport() != NULL);
|
| }
|
|
|
| // Test that SetLocalContent and SetRemoteContent properly set RTCP
|
| // mux when a provisional answer is received.
|
| void TestSetContentsRtcpMuxWithPrAnswer() {
|
| CreateChannels(RTCP, RTCP);
|
| - EXPECT_TRUE(channel1_->rtcp_transport_channel() != NULL);
|
| - EXPECT_TRUE(channel2_->rtcp_transport_channel() != NULL);
|
| + EXPECT_TRUE(channel1_->rtcp_transport() != NULL);
|
| + EXPECT_TRUE(channel2_->rtcp_transport() != NULL);
|
| typename T::Content content;
|
| CreateContent(0, kPcmuCodec, kH264Codec, &content);
|
| content.set_rtcp_mux(true);
|
| EXPECT_TRUE(channel1_->SetLocalContent(&content, CA_OFFER, NULL));
|
| EXPECT_TRUE(channel1_->SetRemoteContent(&content, CA_PRANSWER, NULL));
|
| - EXPECT_TRUE(channel1_->rtcp_transport_channel() != NULL);
|
| + EXPECT_TRUE(channel1_->rtcp_transport() != NULL);
|
| EXPECT_TRUE(channel1_->SetRemoteContent(&content, CA_ANSWER, NULL));
|
| // Both sides agree on mux. Should no longer be a separate RTCP channel.
|
| - EXPECT_TRUE(channel1_->rtcp_transport_channel() == NULL);
|
| + EXPECT_TRUE(channel1_->rtcp_transport() == NULL);
|
| // Only initiator supports mux. Should still have a separate RTCP channel.
|
| EXPECT_TRUE(channel2_->SetLocalContent(&content, CA_OFFER, NULL));
|
| content.set_rtcp_mux(false);
|
| EXPECT_TRUE(channel2_->SetRemoteContent(&content, CA_PRANSWER, NULL));
|
| EXPECT_TRUE(channel2_->SetRemoteContent(&content, CA_ANSWER, NULL));
|
| - EXPECT_TRUE(channel2_->rtcp_transport_channel() != NULL);
|
| + EXPECT_TRUE(channel2_->rtcp_transport() != NULL);
|
| }
|
|
|
| // Test that SetRemoteContent properly deals with a content update.
|
| @@ -931,8 +948,7 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
|
|
| CreateChannels(0, 0);
|
|
|
| - cricket::TransportChannel* transport_channel1 =
|
| - channel1_->transport_channel();
|
| + cricket::TransportChannel* transport_channel1 = channel1_->rtp_transport();
|
| ASSERT_TRUE(transport_channel1);
|
| typename T::MediaChannel* media_channel1 =
|
| static_cast<typename T::MediaChannel*>(channel1_->media_channel());
|
| @@ -1804,8 +1820,7 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
| error_handler.mode_ = cricket::SrtpFilter::UNPROTECT;
|
|
|
| network_thread_->Invoke<void>(RTC_FROM_HERE, [this] {
|
| - cricket::TransportChannel* transport_channel =
|
| - channel2_->transport_channel();
|
| + cricket::TransportChannel* transport_channel = channel2_->rtp_transport();
|
| transport_channel->SignalReadPacket(
|
| transport_channel, reinterpret_cast<const char*>(kBadPacket),
|
| sizeof(kBadPacket), rtc::PacketTime(), 0);
|
| @@ -1818,8 +1833,8 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
|
|
| void TestOnReadyToSend() {
|
| CreateChannels(RTCP, RTCP);
|
| - TransportChannel* rtp = channel1_->transport_channel();
|
| - TransportChannel* rtcp = channel1_->rtcp_transport_channel();
|
| + TransportChannel* rtp = channel1_->rtp_transport();
|
| + TransportChannel* rtcp = channel1_->rtcp_transport();
|
| EXPECT_FALSE(media_channel1_->ready_to_send());
|
|
|
| network_thread_->Invoke<void>(RTC_FROM_HERE,
|
| @@ -1869,8 +1884,8 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> {
|
| content.set_rtcp_mux(true);
|
| EXPECT_TRUE(channel1_->SetLocalContent(&content, CA_OFFER, NULL));
|
| EXPECT_TRUE(channel1_->SetRemoteContent(&content, CA_ANSWER, NULL));
|
| - EXPECT_TRUE(channel1_->rtcp_transport_channel() == NULL);
|
| - TransportChannel* rtp = channel1_->transport_channel();
|
| + EXPECT_TRUE(channel1_->rtcp_transport() == NULL);
|
| + TransportChannel* rtp = channel1_->rtp_transport();
|
| EXPECT_FALSE(media_channel1_->ready_to_send());
|
| // In the case of rtcp mux, the SignalReadyToSend() from rtp channel
|
| // should trigger the MediaChannel's OnReadyToSend.
|
| @@ -2041,13 +2056,23 @@ cricket::VideoChannel* ChannelTest<VideoTraits>::CreateChannel(
|
| cricket::FakeVideoMediaChannel* ch,
|
| cricket::TransportController* transport_controller,
|
| int flags) {
|
| + rtc::Thread* signaling_thread =
|
| + transport_controller ? transport_controller->signaling_thread() : nullptr;
|
| cricket::VideoChannel* channel = new cricket::VideoChannel(
|
| - worker_thread, network_thread, ch, transport_controller,
|
| - cricket::CN_VIDEO, (flags & RTCP) != 0, (flags & SECURE) != 0);
|
| + worker_thread, network_thread, signaling_thread, ch, cricket::CN_VIDEO,
|
| + (flags & RTCP) != 0, (flags & SECURE) != 0);
|
| rtc::CryptoOptions crypto_options;
|
| crypto_options.enable_gcm_crypto_suites = (flags & GCM_CIPHER) != 0;
|
| channel->SetCryptoOptions(crypto_options);
|
| - if (!channel->Init_w(nullptr)) {
|
| + cricket::TransportChannel* rtp_transport =
|
| + transport_controller->CreateTransportChannel(
|
| + channel->content_name(), cricket::ICE_CANDIDATE_COMPONENT_RTP);
|
| + cricket::TransportChannel* rtcp_transport = nullptr;
|
| + if (channel->NeedsRtcpTransport()) {
|
| + rtcp_transport = transport_controller->CreateTransportChannel(
|
| + channel->content_name(), cricket::ICE_CANDIDATE_COMPONENT_RTCP);
|
| + }
|
| + if (!channel->Init_w(rtp_transport, rtcp_transport)) {
|
| delete channel;
|
| channel = NULL;
|
| }
|
| @@ -3313,13 +3338,23 @@ cricket::RtpDataChannel* ChannelTest<DataTraits>::CreateChannel(
|
| cricket::FakeDataMediaChannel* ch,
|
| cricket::TransportController* transport_controller,
|
| int flags) {
|
| + rtc::Thread* signaling_thread =
|
| + transport_controller ? transport_controller->signaling_thread() : nullptr;
|
| cricket::RtpDataChannel* channel = new cricket::RtpDataChannel(
|
| - worker_thread, network_thread, ch, transport_controller, cricket::CN_DATA,
|
| + worker_thread, network_thread, signaling_thread, ch, cricket::CN_DATA,
|
| (flags & RTCP) != 0, (flags & SECURE) != 0);
|
| rtc::CryptoOptions crypto_options;
|
| crypto_options.enable_gcm_crypto_suites = (flags & GCM_CIPHER) != 0;
|
| channel->SetCryptoOptions(crypto_options);
|
| - if (!channel->Init_w(nullptr)) {
|
| + cricket::TransportChannel* rtp_transport =
|
| + transport_controller->CreateTransportChannel(
|
| + channel->content_name(), cricket::ICE_CANDIDATE_COMPONENT_RTP);
|
| + cricket::TransportChannel* rtcp_transport = nullptr;
|
| + if (channel->NeedsRtcpTransport()) {
|
| + rtcp_transport = transport_controller->CreateTransportChannel(
|
| + channel->content_name(), cricket::ICE_CANDIDATE_COMPONENT_RTCP);
|
| + }
|
| + if (!channel->Init_w(rtp_transport, rtcp_transport)) {
|
| delete channel;
|
| channel = NULL;
|
| }
|
|
|