| Index: talk/session/media/channel_unittest.cc
|
| diff --git a/talk/session/media/channel_unittest.cc b/talk/session/media/channel_unittest.cc
|
| index 9020cafcec23fd46a611c07b15f1e23609ec53c0..499f9de89050ce298faead5d853fe40888c11b74 100644
|
| --- a/talk/session/media/channel_unittest.cc
|
| +++ b/talk/session/media/channel_unittest.cc
|
| @@ -33,7 +33,7 @@
|
| #include "talk/media/base/rtpdump.h"
|
| #include "talk/media/base/screencastid.h"
|
| #include "talk/media/base/testutils.h"
|
| -#include "webrtc/p2p/base/fakesession.h"
|
| +#include "webrtc/p2p/base/faketransportcontroller.h"
|
| #include "talk/session/media/channel.h"
|
| #include "webrtc/base/fileutils.h"
|
| #include "webrtc/base/gunit.h"
|
| @@ -73,12 +73,12 @@
|
| static const int kAudioPts[] = {0, 8};
|
| static const int kVideoPts[] = {97, 99};
|
|
|
| -template<class ChannelT,
|
| - class MediaChannelT,
|
| - class ContentT,
|
| - class CodecT,
|
| - class MediaInfoT,
|
| - class OptionsT>
|
| +template <class ChannelT,
|
| + class MediaChannelT,
|
| + class ContentT,
|
| + class CodecT,
|
| + class MediaInfoT,
|
| + class OptionsT>
|
| class Traits {
|
| public:
|
| typedef ChannelT Channel;
|
| @@ -98,25 +98,21 @@
|
| cricket::AudioContentDescription,
|
| cricket::AudioCodec,
|
| cricket::VoiceMediaInfo,
|
| - cricket::AudioOptions> {
|
| -};
|
| + cricket::AudioOptions> {};
|
|
|
| class VideoTraits : public Traits<cricket::VideoChannel,
|
| cricket::FakeVideoMediaChannel,
|
| cricket::VideoContentDescription,
|
| cricket::VideoCodec,
|
| cricket::VideoMediaInfo,
|
| - cricket::VideoOptions> {
|
| -};
|
| + cricket::VideoOptions> {};
|
|
|
| class DataTraits : public Traits<cricket::DataChannel,
|
| cricket::FakeDataMediaChannel,
|
| cricket::DataContentDescription,
|
| cricket::DataCodec,
|
| cricket::DataMediaInfo,
|
| - cricket::DataOptions> {
|
| -};
|
| -
|
| + cricket::DataOptions> {};
|
|
|
| rtc::StreamInterface* Open(const std::string& path) {
|
| return rtc::Filesystem::OpenFile(
|
| @@ -130,10 +126,12 @@
|
| enum Flags { RTCP = 0x1, RTCP_MUX = 0x2, SECURE = 0x4, SSRC_MUX = 0x8,
|
| DTLS = 0x10 };
|
|
|
| - ChannelTest(const uint8* rtp_data, int rtp_len,
|
| - const uint8* rtcp_data, int rtcp_len)
|
| - : session1_(true),
|
| - session2_(false),
|
| + ChannelTest(const uint8* rtp_data,
|
| + int rtp_len,
|
| + const uint8* rtcp_data,
|
| + int rtcp_len)
|
| + : transport_controller1_(cricket::ICEROLE_CONTROLLING),
|
| + transport_controller2_(cricket::ICEROLE_CONTROLLED),
|
| media_channel1_(NULL),
|
| media_channel2_(NULL),
|
| rtp_packet_(reinterpret_cast<const char*>(rtp_data), rtp_len),
|
| @@ -141,8 +139,7 @@
|
| media_info_callbacks1_(),
|
| media_info_callbacks2_(),
|
| ssrc_(0),
|
| - error_(T::MediaChannel::ERROR_NONE) {
|
| - }
|
| + error_(T::MediaChannel::ERROR_NONE) {}
|
|
|
| void CreateChannels(int flags1, int flags2) {
|
| CreateChannels(new typename T::MediaChannel(NULL, typename T::Options()),
|
| @@ -154,9 +151,11 @@
|
| int flags1, int flags2, rtc::Thread* thread) {
|
| media_channel1_ = ch1;
|
| media_channel2_ = ch2;
|
| - channel1_.reset(CreateChannel(thread, &media_engine_, ch1, &session1_,
|
| + channel1_.reset(CreateChannel(thread, &media_engine_, ch1,
|
| + &transport_controller1_,
|
| (flags1 & RTCP) != 0));
|
| - channel2_.reset(CreateChannel(thread, &media_engine_, ch2, &session2_,
|
| + channel2_.reset(CreateChannel(thread, &media_engine_, ch2,
|
| + &transport_controller2_,
|
| (flags2 & RTCP) != 0));
|
| channel1_->SignalMediaMonitor.connect(
|
| this, &ChannelTest<T>::OnMediaMonitor);
|
| @@ -179,15 +178,17 @@
|
|
|
| if (flags1 & DTLS) {
|
| // Confirmed to work with KT_RSA and KT_ECDSA.
|
| - session1_.set_ssl_rtccertificate(rtc::RTCCertificate::Create(
|
| - rtc::scoped_ptr<rtc::SSLIdentity>(rtc::SSLIdentity::Generate(
|
| - "session1", rtc::KT_DEFAULT)).Pass()));
|
| + transport_controller1_.SetLocalCertificate(rtc::RTCCertificate::Create(
|
| + rtc::scoped_ptr<rtc::SSLIdentity>(
|
| + rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT))
|
| + .Pass()));
|
| }
|
| if (flags2 & DTLS) {
|
| // Confirmed to work with KT_RSA and KT_ECDSA.
|
| - session2_.set_ssl_rtccertificate(rtc::RTCCertificate::Create(
|
| - rtc::scoped_ptr<rtc::SSLIdentity>(rtc::SSLIdentity::Generate(
|
| - "session2", rtc::KT_DEFAULT)).Pass()));
|
| + transport_controller2_.SetLocalCertificate(rtc::RTCCertificate::Create(
|
| + rtc::scoped_ptr<rtc::SSLIdentity>(
|
| + rtc::SSLIdentity::Generate("session2", rtc::KT_DEFAULT))
|
| + .Pass()));
|
| }
|
|
|
| // Add stream information (SSRC) to the local content but not to the remote
|
| @@ -204,13 +205,14 @@
|
| AddLegacyStreamInContent(kSsrc2, flags2, &remote_media_content2_);
|
| }
|
| }
|
| - typename T::Channel* CreateChannel(rtc::Thread* thread,
|
| - cricket::MediaEngineInterface* engine,
|
| - typename T::MediaChannel* ch,
|
| - cricket::BaseSession* session,
|
| - bool rtcp) {
|
| + typename T::Channel* CreateChannel(
|
| + rtc::Thread* thread,
|
| + cricket::MediaEngineInterface* engine,
|
| + typename T::MediaChannel* ch,
|
| + cricket::TransportController* transport_controller,
|
| + bool rtcp) {
|
| typename T::Channel* channel = new typename T::Channel(
|
| - thread, engine, ch, session, cricket::CN_AUDIO, rtcp);
|
| + thread, engine, ch, transport_controller, cricket::CN_AUDIO, rtcp);
|
| if (!channel->Init()) {
|
| delete channel;
|
| channel = NULL;
|
| @@ -226,7 +228,7 @@
|
| result = channel2_->SetRemoteContent(&remote_media_content1_,
|
| CA_OFFER, NULL);
|
| if (result) {
|
| - session1_.Connect(&session2_);
|
| + transport_controller1_.Connect(&transport_controller2_);
|
|
|
| result = channel2_->SetLocalContent(&local_media_content2_,
|
| CA_ANSWER, NULL);
|
| @@ -259,7 +261,7 @@
|
| channel2_->Enable(true);
|
| result = channel1_->SetRemoteContent(&remote_media_content2_,
|
| CA_PRANSWER, NULL);
|
| - session1_.Connect(&session2_);
|
| + transport_controller1_.Connect(&transport_controller2_);
|
| }
|
| return result;
|
| }
|
| @@ -286,11 +288,12 @@
|
| return channel1_->RemoveRecvStream(id);
|
| }
|
|
|
| + // Calling "_w" method here is ok since we only use one thread for this test
|
| cricket::FakeTransport* GetTransport1() {
|
| - return session1_.GetTransport(channel1_->content_name());
|
| + return transport_controller1_.GetTransport_w(channel1_->content_name());
|
| }
|
| cricket::FakeTransport* GetTransport2() {
|
| - return session2_.GetTransport(channel2_->content_name());
|
| + return transport_controller2_.GetTransport_w(channel2_->content_name());
|
| }
|
|
|
| bool SendRtp1() {
|
| @@ -769,7 +772,7 @@
|
|
|
| EXPECT_TRUE(channel2_->SetRemoteContent(&content1, CA_OFFER, NULL));
|
| EXPECT_EQ(1u, media_channel2_->recv_streams().size());
|
| - session1_.Connect(&session2_);
|
| + transport_controller1_.Connect(&transport_controller2_);
|
|
|
| // Channel 2 do not send anything.
|
| typename T::Content content2;
|
| @@ -832,7 +835,7 @@
|
| CA_ANSWER, NULL));
|
| EXPECT_FALSE(media_channel2_->playout());
|
| EXPECT_FALSE(media_channel2_->sending());
|
| - session1_.Connect(&session2_);
|
| + transport_controller1_.Connect(&transport_controller2_);
|
| EXPECT_TRUE(media_channel1_->playout());
|
| EXPECT_FALSE(media_channel1_->sending());
|
| EXPECT_FALSE(media_channel2_->playout());
|
| @@ -868,7 +871,7 @@
|
| EXPECT_TRUE(channel2_->SetRemoteContent(&content1, CA_OFFER, NULL));
|
| EXPECT_TRUE(channel2_->SetLocalContent(&content2, CA_PRANSWER, NULL));
|
| EXPECT_TRUE(channel1_->SetRemoteContent(&content2, CA_PRANSWER, NULL));
|
| - session1_.Connect(&session2_);
|
| + transport_controller1_.Connect(&transport_controller2_);
|
|
|
| EXPECT_TRUE(media_channel1_->playout());
|
| EXPECT_FALSE(media_channel1_->sending()); // remote InActive
|
| @@ -938,6 +941,8 @@
|
| CreateChannels(0, 0);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendRtp1());
|
| @@ -953,6 +958,8 @@
|
| CreateChannels(0, 0);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_FALSE(SendRtcp1());
|
| @@ -966,6 +973,8 @@
|
| CreateChannels(0, RTCP);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
| EXPECT_FALSE(SendRtcp1());
|
| @@ -979,6 +988,8 @@
|
| CreateChannels(RTCP, 0);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_FALSE(SendRtcp1());
|
| @@ -992,6 +1003,8 @@
|
| CreateChannels(RTCP, RTCP);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendRtcp1());
|
| @@ -1007,6 +1020,8 @@
|
| CreateChannels(RTCP | RTCP_MUX, RTCP);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendRtcp1());
|
| @@ -1021,6 +1036,8 @@
|
| void SendRtcpMuxToRtcpMux() {
|
| CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX);
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendAccept());
|
| @@ -1045,6 +1062,8 @@
|
| CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX);
|
| channel1_->ActivateRtcpMux();
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendAccept());
|
| @@ -1068,6 +1087,8 @@
|
| CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX);
|
| channel2_->ActivateRtcpMux();
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendAccept());
|
| @@ -1093,6 +1114,8 @@
|
| channel1_->ActivateRtcpMux();
|
| channel2_->ActivateRtcpMux();
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendAccept());
|
| @@ -1117,6 +1140,8 @@
|
| CreateChannels(RTCP | RTCP_MUX, RTCP);
|
| channel1_->ActivateRtcpMux();
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
| EXPECT_FALSE(SendAccept());
|
| @@ -1126,6 +1151,8 @@
|
| void SendEarlyRtcpMuxToRtcp() {
|
| CreateChannels(RTCP | RTCP_MUX, RTCP);
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
|
|
| @@ -1156,6 +1183,8 @@
|
| void SendEarlyRtcpMuxToRtcpMux() {
|
| CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX);
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
|
|
| @@ -1246,6 +1275,8 @@
|
| EXPECT_TRUE(SendProvisionalAnswer());
|
| EXPECT_TRUE(channel1_->secure());
|
| EXPECT_TRUE(channel2_->secure());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendCustomRtcp1(kSsrc1));
|
| @@ -1329,6 +1360,8 @@
|
| CreateChannels(0, 0);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(1U, GetTransport1()->channels().size());
|
| EXPECT_EQ(1U, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendRtp1());
|
| @@ -1393,6 +1426,8 @@
|
| }
|
| CreateChannels(flags, flags);
|
| EXPECT_TRUE(SendInitiate());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(expected_channels, GetTransport2()->channels().size());
|
| EXPECT_TRUE(SendAccept());
|
| @@ -1581,6 +1616,8 @@
|
| CreateChannels(RTCP, RTCP);
|
| EXPECT_TRUE(SendInitiate());
|
| EXPECT_TRUE(SendAccept());
|
| + ASSERT_TRUE(GetTransport1());
|
| + ASSERT_TRUE(GetTransport2());
|
| EXPECT_EQ(2U, GetTransport1()->channels().size());
|
| EXPECT_EQ(2U, GetTransport2()->channels().size());
|
|
|
| @@ -1669,15 +1706,15 @@
|
| EXPECT_TRUE(media_channel1_->ready_to_send());
|
|
|
| // rtp channel becomes not ready to send will be propagated to mediachannel
|
| - channel1_->SetReadyToSend(rtp, false);
|
| + channel1_->SetReadyToSend(false, false);
|
| EXPECT_FALSE(media_channel1_->ready_to_send());
|
| - channel1_->SetReadyToSend(rtp, true);
|
| + channel1_->SetReadyToSend(false, true);
|
| EXPECT_TRUE(media_channel1_->ready_to_send());
|
|
|
| // rtcp channel becomes not ready to send will be propagated to mediachannel
|
| - channel1_->SetReadyToSend(rtcp, false);
|
| + channel1_->SetReadyToSend(true, false);
|
| EXPECT_FALSE(media_channel1_->ready_to_send());
|
| - channel1_->SetReadyToSend(rtcp, true);
|
| + channel1_->SetReadyToSend(true, true);
|
| EXPECT_TRUE(media_channel1_->ready_to_send());
|
| }
|
|
|
| @@ -1696,13 +1733,13 @@
|
| // should trigger the MediaChannel's OnReadyToSend.
|
| rtp->SignalReadyToSend(rtp);
|
| EXPECT_TRUE(media_channel1_->ready_to_send());
|
| - channel1_->SetReadyToSend(rtp, false);
|
| + channel1_->SetReadyToSend(false, false);
|
| EXPECT_FALSE(media_channel1_->ready_to_send());
|
| }
|
|
|
| protected:
|
| - cricket::FakeSession session1_;
|
| - cricket::FakeSession session2_;
|
| + cricket::FakeTransportController transport_controller1_;
|
| + cricket::FakeTransportController transport_controller2_;
|
| cricket::FakeMediaEngine media_engine_;
|
| // The media channels are owned by the voice channel objects below.
|
| typename T::MediaChannel* media_channel1_;
|
| @@ -1763,18 +1800,21 @@
|
| : public ChannelTest<VoiceTraits> {
|
| public:
|
| typedef ChannelTest<VoiceTraits> Base;
|
| - VoiceChannelTest() : Base(kPcmuFrame, sizeof(kPcmuFrame),
|
| - kRtcpReport, sizeof(kRtcpReport)) {}
|
| + VoiceChannelTest()
|
| + : Base(kPcmuFrame, sizeof(kPcmuFrame), kRtcpReport, sizeof(kRtcpReport)) {
|
| + }
|
| };
|
|
|
| // override to add NULL parameter
|
| -template<>
|
| +template <>
|
| cricket::VideoChannel* ChannelTest<VideoTraits>::CreateChannel(
|
| - rtc::Thread* thread, cricket::MediaEngineInterface* engine,
|
| - cricket::FakeVideoMediaChannel* ch, cricket::BaseSession* session,
|
| + rtc::Thread* thread,
|
| + cricket::MediaEngineInterface* engine,
|
| + cricket::FakeVideoMediaChannel* ch,
|
| + cricket::TransportController* transport_controller,
|
| bool rtcp) {
|
| cricket::VideoChannel* channel = new cricket::VideoChannel(
|
| - thread, ch, session, cricket::CN_VIDEO, rtcp);
|
| + thread, ch, transport_controller, cricket::CN_VIDEO, rtcp);
|
| if (!channel->Init()) {
|
| delete channel;
|
| channel = NULL;
|
| @@ -1827,8 +1867,11 @@
|
| : public ChannelTest<VideoTraits> {
|
| public:
|
| typedef ChannelTest<VideoTraits> Base;
|
| - VideoChannelTest() : Base(kH264Packet, sizeof(kH264Packet),
|
| - kRtcpReport, sizeof(kRtcpReport)) {}
|
| + VideoChannelTest()
|
| + : Base(kH264Packet,
|
| + sizeof(kH264Packet),
|
| + kRtcpReport,
|
| + sizeof(kRtcpReport)) {}
|
| };
|
|
|
|
|
| @@ -2546,13 +2589,15 @@
|
| };
|
|
|
| // Override to avoid engine channel parameter.
|
| -template<>
|
| +template <>
|
| cricket::DataChannel* ChannelTest<DataTraits>::CreateChannel(
|
| - rtc::Thread* thread, cricket::MediaEngineInterface* engine,
|
| - cricket::FakeDataMediaChannel* ch, cricket::BaseSession* session,
|
| + rtc::Thread* thread,
|
| + cricket::MediaEngineInterface* engine,
|
| + cricket::FakeDataMediaChannel* ch,
|
| + cricket::TransportController* transport_controller,
|
| bool rtcp) {
|
| cricket::DataChannel* channel = new cricket::DataChannel(
|
| - thread, ch, session, cricket::CN_DATA, rtcp);
|
| + thread, ch, transport_controller, cricket::CN_DATA, rtcp);
|
| if (!channel->Init()) {
|
| delete channel;
|
| channel = NULL;
|
|
|