| Index: webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| diff --git a/webrtc/p2p/base/dtlstransportchannel_unittest.cc b/webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| index 460e294a0048c99badecd63cc1543ea6d538ff0e..07e3b87847203150eac14e38b368ab0677e270d7 100644
|
| --- a/webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| +++ b/webrtc/p2p/base/dtlstransportchannel_unittest.cc
|
| @@ -33,6 +33,7 @@ static const char kIceUfrag1[] = "TESTICEUFRAG0001";
|
| static const char kIcePwd1[] = "TESTICEPWD00000000000001";
|
| static const size_t kPacketNumOffset = 8;
|
| static const size_t kPacketHeaderLen = 12;
|
| +static const int kFakePacketId = 0x1234;
|
|
|
| static bool IsRtpLeadByte(uint8_t b) {
|
| return ((b & 0xC0) == 0x80);
|
| @@ -86,6 +87,8 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| &DtlsTestClient::OnTransportChannelWritableState);
|
| channel->SignalReadPacket.connect(this,
|
| &DtlsTestClient::OnTransportChannelReadPacket);
|
| + channel->SignalSentPacket.connect(
|
| + this, &DtlsTestClient::OnTransportChannelSentPacket);
|
| channels_.push_back(channel);
|
|
|
| // Hook the raw packets so that we can verify they are encrypted.
|
| @@ -259,6 +262,7 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| // Only set the bypass flag if we've activated DTLS.
|
| int flags = (certificate_ && srtp) ? cricket::PF_SRTP_BYPASS : 0;
|
| rtc::PacketOptions packet_options;
|
| + packet_options.packet_id = kFakePacketId;
|
| int rv = channels_[channel]->SendPacket(
|
| packet.get(), size, packet_options, flags);
|
| ASSERT_GT(rv, 0);
|
| @@ -338,6 +342,13 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| ASSERT_EQ(expected_flags, flags);
|
| }
|
|
|
| + void OnTransportChannelSentPacket(cricket::TransportChannel* channel,
|
| + const rtc::SentPacket& sent_packet) {
|
| + sent_packet_ = sent_packet;
|
| + }
|
| +
|
| + rtc::SentPacket sent_packet() const { return sent_packet_; }
|
| +
|
| // Hook into the raw packet stream to make sure DTLS packets are encrypted.
|
| void OnFakeTransportChannelReadPacket(cricket::TransportChannel* channel,
|
| const char* data, size_t size,
|
| @@ -378,6 +389,7 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
| bool negotiated_dtls_;
|
| bool received_dtls_client_hello_;
|
| bool received_dtls_server_hello_;
|
| + rtc::SentPacket sent_packet_;
|
| };
|
|
|
|
|
| @@ -558,6 +570,15 @@ TEST_F(DtlsTransportChannelTest, TestTransfer) {
|
| TestTransfer(0, 1000, 100, false);
|
| }
|
|
|
| +// Connect without DTLS, and transfer some data.
|
| +TEST_F(DtlsTransportChannelTest, TestOnSentPacket) {
|
| + ASSERT_TRUE(Connect());
|
| + EXPECT_EQ(client1_.sent_packet().send_time_ms, -1);
|
| + TestTransfer(0, 1000, 100, false);
|
| + EXPECT_EQ(kFakePacketId, client1_.sent_packet().packet_id);
|
| + EXPECT_GE(client1_.sent_packet().send_time_ms, 0);
|
| +}
|
| +
|
| // Create two channels without DTLS, and transfer some data.
|
| TEST_F(DtlsTransportChannelTest, TestTransferTwoChannels) {
|
| SetChannelCount(2);
|
|
|