Index: media/cast/net/rtcp/rtcp_unittest.cc |
diff --git a/media/cast/net/rtcp/rtcp_unittest.cc b/media/cast/net/rtcp/rtcp_unittest.cc |
index 815010542aed6658b377766ba195cbcfb6fb9002..ef28072831afb5a6ce16f7793f8dd7fd93bcb07c 100644 |
--- a/media/cast/net/rtcp/rtcp_unittest.cc |
+++ b/media/cast/net/rtcp/rtcp_unittest.cc |
@@ -88,13 +88,15 @@ class RtcpTest : public ::testing::Test { |
base::Bind(&RtcpTest::OnMeasuredRoundTripTime, |
base::Unretained(this)), |
base::Bind(&RtcpTest::OnReceivedLogs, base::Unretained(this)), |
+ base::Bind(&RtcpTest::OnReceivedPli, base::Unretained(this)), |
sender_clock_.get(), |
&rtp_sender_pacer_, |
kSenderSsrc, |
kReceiverSsrc), |
rtcp_at_rtp_receiver_(receiver_clock_.get(), |
kReceiverSsrc, |
- kSenderSsrc) { |
+ kSenderSsrc), |
+ received_pli_(false) { |
sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
receiver_clock_->SetSkew( |
1.0, // No skew. |
@@ -136,6 +138,7 @@ class RtcpTest : public ::testing::Test { |
PacketRef BuildRtcpPacketFromRtpReceiver( |
const RtcpTimeData& time_data, |
const RtcpCastMessage* cast_message, |
+ const RtcpPliMessage* pli_message, |
base::TimeDelta target_delay, |
const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, |
const RtpReceiverStatistics* rtp_receiver_statistics) { |
@@ -172,11 +175,15 @@ class RtcpTest : public ::testing::Test { |
} |
if (cast_message) |
builder.AddCast(*cast_message, target_delay); |
+ if (pli_message) |
+ builder.AddPli(*pli_message); |
if (rtcp_events) |
builder.AddReceiverLog(*rtcp_events); |
return builder.Finish(); |
} |
+ void OnReceivedPli() { received_pli_ = true; } |
+ |
scoped_ptr<base::SimpleTestTickClock> sender_clock_; |
scoped_ptr<test::SkewedTickClock> receiver_clock_; |
FakeRtcpTransport rtp_sender_pacer_; |
@@ -187,6 +194,7 @@ class RtcpTest : public ::testing::Test { |
base::TimeDelta current_round_trip_time_; |
RtcpCastMessage last_cast_message_; |
RtcpReceiverLogMessage last_logs_; |
+ bool received_pli_; |
private: |
DISALLOW_COPY_AND_ASSIGN(RtcpTest); |
@@ -254,7 +262,7 @@ TEST_F(RtcpTest, RoundTripTimesDeterminedFromReportPingPong) { |
rtp_receiver_pacer_.SendRtcpPacket( |
rtcp_at_rtp_receiver_.local_ssrc(), |
BuildRtcpPacketFromRtpReceiver( |
- CreateRtcpTimeData(receiver_clock_->NowTicks()), nullptr, |
+ CreateRtcpTimeData(receiver_clock_->NowTicks()), nullptr, nullptr, |
base::TimeDelta(), nullptr, &stats)); |
expected_rtt_according_to_sender = one_way_trip_time * 2; |
EXPECT_EQ(expected_rtt_according_to_sender, |
@@ -273,7 +281,7 @@ TEST_F(RtcpTest, ReportCastFeedback) { |
rtp_receiver_pacer_.SendRtcpPacket( |
rtcp_at_rtp_receiver_.local_ssrc(), |
BuildRtcpPacketFromRtpReceiver( |
- CreateRtcpTimeData(base::TimeTicks()), &cast_message, |
+ CreateRtcpTimeData(base::TimeTicks()), &cast_message, nullptr, |
base::TimeDelta::FromMilliseconds(kTargetDelayMs), nullptr, nullptr)); |
EXPECT_EQ(last_cast_message_.ack_frame_id, cast_message.ack_frame_id); |
@@ -286,6 +294,16 @@ TEST_F(RtcpTest, ReportCastFeedback) { |
last_cast_message_.missing_frames_and_packets.begin())); |
} |
+TEST_F(RtcpTest, ReportPli) { |
+ RtcpPliMessage pli_message(kSenderSsrc); |
+ rtp_receiver_pacer_.SendRtcpPacket( |
+ rtcp_at_rtp_receiver_.local_ssrc(), |
+ BuildRtcpPacketFromRtpReceiver(CreateRtcpTimeData(base::TimeTicks()), |
+ nullptr, &pli_message, base::TimeDelta(), |
+ nullptr, nullptr)); |
+ EXPECT_TRUE(received_pli_); |
+} |
+ |
TEST_F(RtcpTest, DropLateRtcpPacket) { |
RtcpCastMessage cast_message(kSenderSsrc); |
cast_message.ack_frame_id = 1; |
@@ -293,7 +311,8 @@ TEST_F(RtcpTest, DropLateRtcpPacket) { |
rtcp_at_rtp_receiver_.local_ssrc(), |
BuildRtcpPacketFromRtpReceiver( |
CreateRtcpTimeData(receiver_clock_->NowTicks()), &cast_message, |
- base::TimeDelta::FromMilliseconds(kTargetDelayMs), nullptr, nullptr)); |
+ nullptr, base::TimeDelta::FromMilliseconds(kTargetDelayMs), nullptr, |
+ nullptr)); |
// Send a packet with old timestamp |
RtcpCastMessage late_cast_message(kSenderSsrc); |
@@ -303,7 +322,7 @@ TEST_F(RtcpTest, DropLateRtcpPacket) { |
BuildRtcpPacketFromRtpReceiver( |
CreateRtcpTimeData(receiver_clock_->NowTicks() - |
base::TimeDelta::FromSeconds(10)), |
- &late_cast_message, base::TimeDelta(), nullptr, nullptr)); |
+ &late_cast_message, nullptr, base::TimeDelta(), nullptr, nullptr)); |
// Validate data from second packet is dropped. |
EXPECT_EQ(last_cast_message_.ack_frame_id, cast_message.ack_frame_id); |
@@ -315,7 +334,7 @@ TEST_F(RtcpTest, DropLateRtcpPacket) { |
rtcp_at_rtp_receiver_.local_ssrc(), |
BuildRtcpPacketFromRtpReceiver( |
CreateRtcpTimeData(receiver_clock_->NowTicks()), &late_cast_message, |
- base::TimeDelta(), nullptr, nullptr)); |
+ nullptr, base::TimeDelta(), nullptr, nullptr)); |
EXPECT_EQ(last_cast_message_.ack_frame_id, late_cast_message.ack_frame_id); |
EXPECT_EQ(last_cast_message_.target_delay_ms, 0); |
} |
@@ -336,7 +355,7 @@ TEST_F(RtcpTest, ReportReceiverEvents) { |
rtp_receiver_pacer_.SendRtcpPacket( |
rtcp_at_rtp_receiver_.local_ssrc(), |
BuildRtcpPacketFromRtpReceiver( |
- CreateRtcpTimeData(receiver_clock_->NowTicks()), nullptr, |
+ CreateRtcpTimeData(receiver_clock_->NowTicks()), nullptr, nullptr, |
base::TimeDelta(), &rtcp_events, nullptr)); |
ASSERT_EQ(1UL, last_logs_.size()); |