Index: talk/session/media/channel_unittest.cc |
diff --git a/talk/session/media/channel_unittest.cc b/talk/session/media/channel_unittest.cc |
index 784d53cc244404cc5522224c025575631e78bcf4..7f76e167d352088476d74a06345d57b00d5ff557 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<const char*>(rtp_data), rtp_len), |
rtcp_packet_(reinterpret_cast<const char*>(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<T>::OnMediaMonitor); |
channel2_->SignalMediaMonitor.connect( |
this, &ChannelTest<T>::OnMediaMonitor); |
- channel1_->SignalMediaError.connect( |
- this, &ChannelTest<T>::OnMediaChannelError); |
- channel2_->SignalMediaError.connect( |
- this, &ChannelTest<T>::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<const char*>(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]); |
} |