From 5b14b42e93f17d0ea57f1f8b3e8224082c514946 Mon Sep 17 00:00:00 2001 From: solenberg Date: Thu, 1 Oct 2015 04:10:31 -0700 Subject: [PATCH] Remove unused SignalMediaError and infrastructure. BUG=webrtc:4690 Review URL: https://codereview.webrtc.org/1362913004 Cr-Commit-Position: refs/heads/master@{#10133} --- talk/media/base/fakemediaengine.h | 16 --- talk/media/base/mediachannel.h | 17 --- talk/media/base/videoengine_unittest.h | 5 - talk/media/webrtc/webrtcvoiceengine.cc | 9 -- talk/media/webrtc/webrtcvoiceengine.h | 4 - .../webrtc/webrtcvoiceengine_unittest.cc | 74 ------------ talk/session/media/channel.cc | 112 +----------------- talk/session/media/channel.h | 23 +--- talk/session/media/channel_unittest.cc | 66 +++++------ 9 files changed, 30 insertions(+), 296 deletions(-) diff --git a/talk/media/base/fakemediaengine.h b/talk/media/base/fakemediaengine.h index 4e39a2a701..13ab8fa894 100644 --- a/talk/media/base/fakemediaengine.h +++ b/talk/media/base/fakemediaengine.h @@ -240,7 +240,6 @@ class FakeVoiceMediaChannel : public RtpHelper { explicit FakeVoiceMediaChannel(FakeVoiceEngine* engine, const AudioOptions& options) : engine_(engine), - fail_set_send_(false), time_since_last_typing_(-1) { output_scalings_[0] = OutputScaling(); // For default channel. SetOptions(options); @@ -270,9 +269,6 @@ class FakeVoiceMediaChannel : public RtpHelper { return true; } virtual bool SetSend(SendFlags flag) { - if (fail_set_send_) { - return false; - } return set_sending(flag != SEND_NOTHING); } virtual bool SetAudioSend(uint32 ssrc, bool enable, @@ -370,17 +366,6 @@ class FakeVoiceMediaChannel : public RtpHelper { } virtual bool GetStats(VoiceMediaInfo* info) { return false; } - virtual void GetLastMediaError(uint32* ssrc, - VoiceMediaChannel::Error* error) { - *ssrc = 0; - *error = fail_set_send_ ? VoiceMediaChannel::ERROR_REC_DEVICE_OPEN_FAILED - : VoiceMediaChannel::ERROR_NONE; - } - - void set_fail_set_send(bool fail) { fail_set_send_ = fail; } - void TriggerError(uint32 ssrc, VoiceMediaChannel::Error error) { - VoiceMediaChannel::SignalMediaError(ssrc, error); - } private: struct OutputScaling { @@ -458,7 +443,6 @@ class FakeVoiceMediaChannel : public RtpHelper { std::vector send_codecs_; std::map output_scalings_; std::vector dtmf_info_queue_; - bool fail_set_send_; int time_since_last_typing_; AudioOptions options_; std::map local_renderers_; diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h index 9ed662dfd2..dd46a2ff1a 100644 --- a/talk/media/base/mediachannel.h +++ b/talk/media/base/mediachannel.h @@ -1097,16 +1097,6 @@ class VoiceMediaChannel : public MediaChannel { virtual bool InsertDtmf(uint32 ssrc, int event, int duration, int flags) = 0; // Gets quality stats for the channel. virtual bool GetStats(VoiceMediaInfo* info) = 0; - // Gets last reported error for this media channel. - virtual void GetLastMediaError(uint32* ssrc, - VoiceMediaChannel::Error* error) { - ASSERT(error != NULL); - *error = ERROR_NONE; - } - - // Signal errors from MediaChannel. Arguments are: - // ssrc(uint32), and error(VoiceMediaChannel::Error). - sigslot::signal2 SignalMediaError; }; struct VideoSendParameters : RtpSendParameters { @@ -1160,10 +1150,6 @@ class VideoMediaChannel : public MediaChannel { virtual bool RequestIntraFrame() = 0; virtual void UpdateAspectRatio(int ratio_w, int ratio_h) = 0; - // Signal errors from MediaChannel. Arguments are: - // ssrc(uint32), and error(VideoMediaChannel::Error). - sigslot::signal2 SignalMediaError; - protected: VideoRenderer *renderer_; }; @@ -1286,9 +1272,6 @@ class DataMediaChannel : public MediaChannel { sigslot::signal3 SignalDataReceived; - // Signal errors from MediaChannel. Arguments are: - // ssrc(uint32), and error(DataMediaChannel::Error). - sigslot::signal2 SignalMediaError; // Signal when the media channel is ready to send the stream. Arguments are: // writable(bool) sigslot::signal1 SignalReadyToSend; diff --git a/talk/media/base/videoengine_unittest.h b/talk/media/base/videoengine_unittest.h index 3f02055555..74f6294f42 100644 --- a/talk/media/base/videoengine_unittest.h +++ b/talk/media/base/videoengine_unittest.h @@ -465,7 +465,6 @@ class VideoMediaChannelTest : public testing::Test, channel_.reset( engine_.CreateChannel(call_.get(), cricket::VideoOptions())); EXPECT_TRUE(channel_.get() != NULL); - ConnectVideoChannelError(); network_interface_.SetDestination(channel_.get()); channel_->SetInterface(&network_interface_); media_error_ = cricket::VideoMediaChannel::ERROR_NONE; @@ -520,10 +519,6 @@ class VideoMediaChannelTest : public testing::Test, virtual void TearDown() { channel_.reset(); } - void ConnectVideoChannelError() { - channel_->SignalMediaError.connect(this, - &VideoMediaChannelTest::OnVideoChannelError); - } bool SetDefaultCodec() { return SetOneCodec(DefaultCodec()); } diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc index ac37425886..40d8442405 100644 --- a/talk/media/webrtc/webrtcvoiceengine.cc +++ b/talk/media/webrtc/webrtcvoiceengine.cc @@ -2970,14 +2970,6 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) { return true; } -void WebRtcVoiceMediaChannel::GetLastMediaError( - uint32* ssrc, VoiceMediaChannel::Error* error) { - RTC_DCHECK(ssrc != NULL); - RTC_DCHECK(error != NULL); - FindSsrc(voe_channel(), ssrc); - *error = WebRtcErrorToChannelError(GetLastEngineError()); -} - bool WebRtcVoiceMediaChannel::FindSsrc(int channel_num, uint32* ssrc) { rtc::CritScope lock(&receive_channels_cs_); RTC_DCHECK(ssrc != NULL); @@ -3019,7 +3011,6 @@ void WebRtcVoiceMediaChannel::OnError(uint32 ssrc, int error) { } else if (error == VE_TYPING_NOISE_OFF_WARNING) { typing_noise_detected_ = false; } - SignalMediaError(ssrc, WebRtcErrorToChannelError(error)); } int WebRtcVoiceMediaChannel::GetOutputLevel(int channel) { diff --git a/talk/media/webrtc/webrtcvoiceengine.h b/talk/media/webrtc/webrtcvoiceengine.h index 8f8f69502b..7950024712 100644 --- a/talk/media/webrtc/webrtcvoiceengine.h +++ b/talk/media/webrtc/webrtcvoiceengine.h @@ -221,10 +221,6 @@ class WebRtcVoiceMediaChannel : public VoiceMediaChannel, const rtc::PacketTime& packet_time) override; void OnReadyToSend(bool ready) override {} bool GetStats(VoiceMediaInfo* info) override; - // Gets last reported error from WebRtc voice engine. This should be only - // called in response a failure. - void GetLastMediaError(uint32* ssrc, - VoiceMediaChannel::Error* error) override; // implements Transport interface bool SendRtp(const uint8_t* data, size_t len) override { diff --git a/talk/media/webrtc/webrtcvoiceengine_unittest.cc b/talk/media/webrtc/webrtcvoiceengine_unittest.cc index 791e7cfa8f..0a72783c7a 100644 --- a/talk/media/webrtc/webrtcvoiceengine_unittest.cc +++ b/talk/media/webrtc/webrtcvoiceengine_unittest.cc @@ -89,35 +89,6 @@ class FakeVoETraceWrapper : public cricket::VoETraceWrapper { class WebRtcVoiceEngineTestFake : public testing::Test { public: - class ChannelErrorListener : public sigslot::has_slots<> { - public: - explicit ChannelErrorListener(cricket::VoiceMediaChannel* channel) - : ssrc_(0), error_(cricket::VoiceMediaChannel::ERROR_NONE) { - RTC_DCHECK(channel != NULL); - channel->SignalMediaError.connect( - this, &ChannelErrorListener::OnVoiceChannelError); - } - void OnVoiceChannelError(uint32 ssrc, - cricket::VoiceMediaChannel::Error error) { - ssrc_ = ssrc; - error_ = error; - } - void Reset() { - ssrc_ = 0; - error_ = cricket::VoiceMediaChannel::ERROR_NONE; - } - uint32 ssrc() const { - return ssrc_; - } - cricket::VoiceMediaChannel::Error error() const { - return error_; - } - - private: - uint32 ssrc_; - cricket::VoiceMediaChannel::Error error_; - }; - WebRtcVoiceEngineTestFake() : call_(webrtc::Call::Config()), voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)), @@ -2543,51 +2514,6 @@ TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { TestInsertDtmf(kSsrc1, false); } -TEST_F(WebRtcVoiceEngineTestFake, MediaEngineCallbackOnError) { - rtc::scoped_ptr listener; - cricket::WebRtcVoiceMediaChannel* media_channel; - unsigned int ssrc = 0; - - EXPECT_TRUE(SetupEngine()); - send_parameters_.options = options_conference_; - EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); - EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); - - media_channel = static_cast(channel_); - listener.reset(new ChannelErrorListener(channel_)); - - // Test on WebRtc VoE channel. - voe_.TriggerCallbackOnError(media_channel->voe_channel(), - VE_SATURATION_WARNING); - EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_DEVICE_SATURATION, - listener->error()); - EXPECT_NE(-1, voe_.GetLocalSSRC(voe_.GetLastChannel(), ssrc)); - EXPECT_EQ(ssrc, listener->ssrc()); - - listener->Reset(); - voe_.TriggerCallbackOnError(-1, VE_TYPING_NOISE_WARNING); - EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_TYPING_NOISE_DETECTED, - listener->error()); - EXPECT_EQ(0U, listener->ssrc()); - - // Add another stream and test on that. - ++ssrc; - EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy( - ssrc))); - listener->Reset(); - voe_.TriggerCallbackOnError(voe_.GetLastChannel(), - VE_SATURATION_WARNING); - EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_DEVICE_SATURATION, - listener->error()); - EXPECT_EQ(ssrc, listener->ssrc()); - - // Testing a non-existing channel. - listener->Reset(); - voe_.TriggerCallbackOnError(voe_.GetLastChannel() + 2, - VE_SATURATION_WARNING); - EXPECT_EQ(0, listener->error()); -} - TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { EXPECT_TRUE(SetupEngine()); send_parameters_.options = options_conference_; diff --git a/talk/session/media/channel.cc b/talk/session/media/channel.cc index 6eb9b580ba..fc998c2531 100644 --- a/talk/session/media/channel.cc +++ b/talk/session/media/channel.cc @@ -1301,10 +1301,6 @@ bool VoiceChannel::Init() { if (!BaseChannel::Init()) { return false; } - media_channel()->SignalMediaError.connect( - this, &VoiceChannel::OnVoiceChannelError); - srtp_filter()->SignalSrtpError.connect( - this, &VoiceChannel::OnSrtpError); return true; } @@ -1430,9 +1426,7 @@ void VoiceChannel::ChangeState() { // Render incoming data if we're the active call, and we have the local // content. We receive data on the default channel and multiplexed streams. bool recv = IsReadyToReceive(); - if (!media_channel()->SetPlayout(recv)) { - SendLastMediaError(); - } + media_channel()->SetPlayout(recv); // Send outgoing data if we're the active call, we have the remote content, // and we have had some form of connectivity. @@ -1440,7 +1434,6 @@ void VoiceChannel::ChangeState() { SendFlags send_flag = send ? SEND_MICROPHONE : SEND_NOTHING; if (!media_channel()->SetSend(send_flag)) { LOG(LS_ERROR) << "Failed to SetSend " << send_flag << " on voice channel"; - SendLastMediaError(); } LOG(LS_INFO) << "Changing voice state, recv=" << recv << " send=" << send; @@ -1571,7 +1564,6 @@ void VoiceChannel::OnMessage(rtc::Message *pmsg) { case MSG_CHANNEL_ERROR: { VoiceChannelErrorMessageData* data = static_cast(pmsg->pdata); - SignalMediaError(this, data->ssrc, data->error); delete data; break; } @@ -1597,36 +1589,6 @@ void VoiceChannel::OnAudioMonitorUpdate(AudioMonitor* monitor, SignalAudioMonitor(this, info); } -void VoiceChannel::OnVoiceChannelError( - uint32 ssrc, VoiceMediaChannel::Error err) { - VoiceChannelErrorMessageData* data = new VoiceChannelErrorMessageData( - ssrc, err); - signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); -} - -void VoiceChannel::OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, - SrtpFilter::Error error) { - switch (error) { - case SrtpFilter::ERROR_FAIL: - OnVoiceChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? - VoiceMediaChannel::ERROR_REC_SRTP_ERROR : - VoiceMediaChannel::ERROR_PLAY_SRTP_ERROR); - break; - case SrtpFilter::ERROR_AUTH: - OnVoiceChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? - VoiceMediaChannel::ERROR_REC_SRTP_AUTH_FAILED : - VoiceMediaChannel::ERROR_PLAY_SRTP_AUTH_FAILED); - break; - case SrtpFilter::ERROR_REPLAY: - // Only receving channel should have this error. - ASSERT(mode == SrtpFilter::UNPROTECT); - OnVoiceChannelError(ssrc, VoiceMediaChannel::ERROR_PLAY_SRTP_REPLAY); - break; - default: - break; - } -} - void VoiceChannel::GetSrtpCryptoSuiteNames( std::vector* ciphers) const { GetSupportedAudioCryptoSuites(ciphers); @@ -1649,20 +1611,9 @@ bool VideoChannel::Init() { if (!BaseChannel::Init()) { return false; } - media_channel()->SignalMediaError.connect( - this, &VideoChannel::OnVideoChannelError); - srtp_filter()->SignalSrtpError.connect( - this, &VideoChannel::OnSrtpError); return true; } -void VoiceChannel::SendLastMediaError() { - uint32 ssrc; - VoiceMediaChannel::Error error; - media_channel()->GetLastMediaError(&ssrc, &error); - SignalMediaError(this, ssrc, error); -} - VideoChannel::~VideoChannel() { std::vector screencast_ssrcs; ScreencastMap::iterator iter; @@ -1964,7 +1915,6 @@ void VideoChannel::OnMessage(rtc::Message *pmsg) { case MSG_CHANNEL_ERROR: { const VideoChannelErrorMessageData* data = static_cast(pmsg->pdata); - SignalMediaError(this, data->ssrc, data->error); delete data; break; } @@ -2029,38 +1979,6 @@ bool VideoChannel::GetLocalSsrc(const VideoCapturer* capturer, uint32* ssrc) { return false; } -void VideoChannel::OnVideoChannelError(uint32 ssrc, - VideoMediaChannel::Error error) { - VideoChannelErrorMessageData* data = new VideoChannelErrorMessageData( - ssrc, error); - signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); -} - -void VideoChannel::OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, - SrtpFilter::Error error) { - switch (error) { - case SrtpFilter::ERROR_FAIL: - OnVideoChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? - VideoMediaChannel::ERROR_REC_SRTP_ERROR : - VideoMediaChannel::ERROR_PLAY_SRTP_ERROR); - break; - case SrtpFilter::ERROR_AUTH: - OnVideoChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? - VideoMediaChannel::ERROR_REC_SRTP_AUTH_FAILED : - VideoMediaChannel::ERROR_PLAY_SRTP_AUTH_FAILED); - break; - case SrtpFilter::ERROR_REPLAY: - // Only receving channel should have this error. - ASSERT(mode == SrtpFilter::UNPROTECT); - // TODO(gangji): Turn on the signaling of replay error once we have - // switched to the new mechanism for doing video retransmissions. - // OnVideoChannelError(ssrc, VideoMediaChannel::ERROR_PLAY_SRTP_REPLAY); - break; - default: - break; - } -} - void VideoChannel::GetSrtpCryptoSuiteNames( std::vector* ciphers) const { GetSupportedVideoCryptoSuites(ciphers); @@ -2093,14 +2011,10 @@ bool DataChannel::Init() { } media_channel()->SignalDataReceived.connect( this, &DataChannel::OnDataReceived); - media_channel()->SignalMediaError.connect( - this, &DataChannel::OnDataChannelError); media_channel()->SignalReadyToSend.connect( this, &DataChannel::OnDataChannelReadyToSend); media_channel()->SignalStreamClosedRemotely.connect( this, &DataChannel::OnStreamClosedRemotely); - srtp_filter()->SignalSrtpError.connect( - this, &DataChannel::OnSrtpError); return true; } @@ -2308,7 +2222,6 @@ void DataChannel::OnMessage(rtc::Message *pmsg) { case MSG_CHANNEL_ERROR: { const DataChannelErrorMessageData* data = static_cast(pmsg->pdata); - SignalMediaError(this, data->ssrc, data->error); delete data; break; } @@ -2374,29 +2287,6 @@ void DataChannel::OnDataChannelReadyToSend(bool writable) { new DataChannelReadyToSendMessageData(writable)); } -void DataChannel::OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, - SrtpFilter::Error error) { - switch (error) { - case SrtpFilter::ERROR_FAIL: - OnDataChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? - DataMediaChannel::ERROR_SEND_SRTP_ERROR : - DataMediaChannel::ERROR_RECV_SRTP_ERROR); - break; - case SrtpFilter::ERROR_AUTH: - OnDataChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? - DataMediaChannel::ERROR_SEND_SRTP_AUTH_FAILED : - DataMediaChannel::ERROR_RECV_SRTP_AUTH_FAILED); - break; - case SrtpFilter::ERROR_REPLAY: - // Only receving channel should have this error. - ASSERT(mode == SrtpFilter::UNPROTECT); - OnDataChannelError(ssrc, DataMediaChannel::ERROR_RECV_SRTP_REPLAY); - break; - default: - break; - } -} - void DataChannel::GetSrtpCryptoSuiteNames( std::vector* ciphers) const { GetSupportedDataCryptoSuites(ciphers); diff --git a/talk/session/media/channel.h b/talk/session/media/channel.h index ac8736e53f..969f907928 100644 --- a/talk/session/media/channel.h +++ b/talk/session/media/channel.h @@ -144,10 +144,6 @@ class BaseChannel // For ConnectionStatsGetter, used by ConnectionMonitor bool GetConnectionStats(ConnectionInfos* infos) override; - void set_srtp_signal_silent_time(uint32 silent_time) { - srtp_filter_.set_signal_silent_time(silent_time); - } - BundleFilter* bundle_filter() { return &bundle_filter_; } const std::vector& local_streams() const { @@ -170,6 +166,8 @@ class BaseChannel // Only public for unit tests. Otherwise, consider protected. virtual int SetOption(SocketType type, rtc::Socket::Option o, int val); + SrtpFilter* srtp_filter() { return &srtp_filter_; } + protected: virtual MediaChannel* media_channel() const { return media_channel_; } // Sets the |transport_channel_| (and |rtcp_transport_channel_|, if |rtcp_| is @@ -192,7 +190,6 @@ class BaseChannel rtc::Thread* signaling_thread() { return transport_controller_->signaling_thread(); } - SrtpFilter* srtp_filter() { return &srtp_filter_; } bool rtcp_transport_enabled() const { return rtcp_transport_enabled_; } void ConnectToTransportChannel(TransportChannel* tc); @@ -389,11 +386,6 @@ class VoiceChannel : public BaseChannel { int GetOutputLevel_w(); void GetActiveStreams_w(AudioInfo::StreamList* actives); - // Signal errors from VoiceMediaChannel. Arguments are: - // ssrc(uint32), and error(VoiceMediaChannel::Error). - sigslot::signal3 - SignalMediaError; - private: // overrides from BaseChannel virtual void OnChannelRead(TransportChannel* channel, @@ -420,9 +412,6 @@ class VoiceChannel : public BaseChannel { virtual void OnMediaMonitorUpdate( VoiceMediaChannel* media_channel, const VoiceMediaInfo& info); void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); - void OnVoiceChannelError(uint32 ssrc, VoiceMediaChannel::Error error); - void SendLastMediaError(); - void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); static const int kEarlyMediaTimeout = 1000; MediaEngineInterface* media_engine_; @@ -481,8 +470,6 @@ class VideoChannel : public BaseChannel { bool SendIntraFrame(); bool RequestIntraFrame(); - sigslot::signal3 - SignalMediaError; // Configure sending media on the stream with SSRC |ssrc| // If there is only one sending stream SSRC 0 can be used. @@ -521,9 +508,6 @@ class VideoChannel : public BaseChannel { virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); bool GetLocalSsrc(const VideoCapturer* capturer, uint32* ssrc); - void OnVideoChannelError(uint32 ssrc, VideoMediaChannel::Error error); - void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); - VideoRenderer* renderer_; ScreencastMap screencast_capturers_; rtc::scoped_ptr media_monitor_; @@ -564,8 +548,6 @@ class DataChannel : public BaseChannel { sigslot::signal2 SignalMediaMonitor; sigslot::signal2&> SignalConnectionMonitor; - sigslot::signal3 - SignalMediaError; sigslot::signal3 @@ -646,7 +628,6 @@ class DataChannel : public BaseChannel { const ReceiveDataParams& params, const char* data, size_t len); void OnDataChannelError(uint32 ssrc, DataMediaChannel::Error error); void OnDataChannelReadyToSend(bool writable); - void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); void OnStreamClosedRemotely(uint32 sid); rtc::scoped_ptr media_monitor_; diff --git a/talk/session/media/channel_unittest.cc b/talk/session/media/channel_unittest.cc index 784d53cc24..7f76e167d3 100644 --- a/talk/session/media/channel_unittest.cc +++ b/talk/session/media/channel_unittest.cc @@ -139,9 +139,7 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { rtp_packet_(reinterpret_cast(rtp_data), rtp_len), rtcp_packet_(reinterpret_cast(rtcp_data), rtcp_len), media_info_callbacks1_(), - media_info_callbacks2_(), - ssrc_(0), - error_(T::MediaChannel::ERROR_NONE) {} + media_info_callbacks2_() {} void CreateChannels(int flags1, int flags2) { CreateChannels(new typename T::MediaChannel(NULL, typename T::Options()), @@ -163,10 +161,6 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { this, &ChannelTest::OnMediaMonitor); channel2_->SignalMediaMonitor.connect( this, &ChannelTest::OnMediaMonitor); - channel1_->SignalMediaError.connect( - this, &ChannelTest::OnMediaChannelError); - channel2_->SignalMediaError.connect( - this, &ChannelTest::OnMediaChannelError); if ((flags1 & DTLS) && (flags2 & DTLS)) { flags1 = (flags1 & ~SECURE); flags2 = (flags2 & ~SECURE); @@ -472,13 +466,6 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { } } - void OnMediaChannelError(typename T::Channel* channel, - uint32 ssrc, - typename T::MediaChannel::Error error) { - ssrc_ = ssrc; - error_ = error; - } - void AddLegacyStreamInContent(uint32 ssrc, int flags, typename T::Content* content) { // Base implementation. @@ -1677,16 +1664,20 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { EXPECT_TRUE(CheckRtcp2()); } - void TestChangeStateError() { - CreateChannels(RTCP, RTCP); - EXPECT_TRUE(SendInitiate()); - media_channel2_->set_fail_set_send(true); - EXPECT_TRUE(channel2_->Enable(true)); - EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_DEVICE_OPEN_FAILED, - error_); - } - void TestSrtpError(int pl_type) { + struct SrtpErrorHandler : public sigslot::has_slots<> { + SrtpErrorHandler() : + mode_(cricket::SrtpFilter::UNPROTECT), + error_(cricket::SrtpFilter::ERROR_NONE) {} + void OnSrtpError(uint32 ssrc, cricket::SrtpFilter::Mode mode, + cricket::SrtpFilter::Error error) { + mode_ = mode; + error_ = error; + } + cricket::SrtpFilter::Mode mode_; + cricket::SrtpFilter::Error error_; + } error_handler; + // For Audio, only pl_type 0 is added to the bundle filter. // For Video, only pl_type 97 is added to the bundle filter. // So we need to pass in pl_type so that the packet can pass through @@ -1711,30 +1702,36 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { EXPECT_TRUE(SendAccept()); EXPECT_TRUE(channel1_->secure()); EXPECT_TRUE(channel2_->secure()); - channel2_->set_srtp_signal_silent_time(200); + + channel2_->srtp_filter()->SignalSrtpError.connect( + &error_handler, &SrtpErrorHandler::OnSrtpError); // Testing failures in sending packets. EXPECT_FALSE(media_channel2_->SendRtp(kBadPacket, sizeof(kBadPacket))); // The first failure will trigger an error. - EXPECT_EQ_WAIT(T::MediaChannel::ERROR_REC_SRTP_ERROR, error_, 500); - error_ = T::MediaChannel::ERROR_NONE; + EXPECT_EQ_WAIT(cricket::SrtpFilter::ERROR_FAIL, error_handler.error_, 500); + EXPECT_EQ(cricket::SrtpFilter::PROTECT, error_handler.mode_); + error_handler.error_ = cricket::SrtpFilter::ERROR_NONE; // The next 1 sec failures will not trigger an error. EXPECT_FALSE(media_channel2_->SendRtp(kBadPacket, sizeof(kBadPacket))); // Wait for a while to ensure no message comes in. rtc::Thread::Current()->ProcessMessages(210); - EXPECT_EQ(T::MediaChannel::ERROR_NONE, error_); + EXPECT_EQ(cricket::SrtpFilter::ERROR_NONE, error_handler.error_); // The error will be triggered again. EXPECT_FALSE(media_channel2_->SendRtp(kBadPacket, sizeof(kBadPacket))); - EXPECT_EQ_WAIT(T::MediaChannel::ERROR_REC_SRTP_ERROR, error_, 500); + EXPECT_EQ_WAIT(cricket::SrtpFilter::ERROR_FAIL, error_handler.error_, 500); + EXPECT_EQ(cricket::SrtpFilter::PROTECT, error_handler.mode_); // Testing failures in receiving packets. - error_ = T::MediaChannel::ERROR_NONE; + error_handler.error_ = cricket::SrtpFilter::ERROR_NONE; + cricket::TransportChannel* transport_channel = channel2_->transport_channel(); transport_channel->SignalReadPacket( transport_channel, reinterpret_cast(kBadPacket), sizeof(kBadPacket), rtc::PacketTime(), 0); - EXPECT_EQ_WAIT(T::MediaChannel::ERROR_PLAY_SRTP_ERROR, error_, 500); + EXPECT_EQ_WAIT(cricket::SrtpFilter::ERROR_FAIL, error_handler.error_, 500); + EXPECT_EQ(cricket::SrtpFilter::UNPROTECT, error_handler.mode_); } void TestOnReadyToSend() { @@ -1802,9 +1799,6 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { std::string rtcp_packet_; int media_info_callbacks1_; int media_info_callbacks2_; - - uint32 ssrc_; - typename T::MediaChannel::Error error_; }; template<> @@ -2168,10 +2162,6 @@ TEST_F(VoiceChannelTest, TestFlushRtcp) { Base::TestFlushRtcp(); } -TEST_F(VoiceChannelTest, TestChangeStateError) { - Base::TestChangeStateError(); -} - TEST_F(VoiceChannelTest, TestSrtpError) { Base::TestSrtpError(kAudioPts[0]); } @@ -2524,8 +2514,6 @@ TEST_F(VideoChannelTest, SendBundleToBundleWithRtcpMuxSecure) { kVideoPts, ARRAY_SIZE(kVideoPts), true, true); } -// TODO(gangji): Add VideoChannelTest.TestChangeStateError. - TEST_F(VideoChannelTest, TestSrtpError) { Base::TestSrtpError(kVideoPts[0]); }