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 ef28072831afb5a6ce16f7793f8dd7fd93bcb07c..a2196f5bb088cf02061e8e36a85d29217caa39df 100644 |
--- a/media/cast/net/rtcp/rtcp_unittest.cc |
+++ b/media/cast/net/rtcp/rtcp_unittest.cc |
@@ -8,6 +8,7 @@ |
#include "base/bind.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/test/simple_test_tick_clock.h" |
#include "media/cast/net/cast_transport_config.h" |
#include "media/cast/net/pacing/paced_sender.h" |
@@ -22,6 +23,8 @@ |
namespace media { |
namespace cast { |
+class RtcpTest; |
+ |
namespace { |
media::cast::RtcpTimeData CreateRtcpTimeData(base::TimeTicks now) { |
@@ -31,6 +34,21 @@ media::cast::RtcpTimeData CreateRtcpTimeData(base::TimeTicks now) { |
return ret; |
} |
+class RtcpClient : public SenderRtcpSession::Client { |
+ public: |
+ explicit RtcpClient(RtcpTest* rtcp_test) : rtcp_test_(rtcp_test) {} |
+ |
+ void OnCastMessageReceived(const RtcpCastMessage& cast_message) override; |
+ void OnRttReceived(base::TimeDelta round_trip_time) override; |
+ void OnReceiverLogReceived(const RtcpReceiverLogMessage& log) override; |
+ void OnPliReceived() override; |
+ |
+ private: |
+ RtcpTest* const rtcp_test_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RtcpClient); |
+}; |
+ |
} // namespace |
using testing::_; |
@@ -76,38 +94,7 @@ class FakeRtcpTransport : public PacedPacketSender { |
}; |
class RtcpTest : public ::testing::Test { |
- protected: |
- RtcpTest() |
- : sender_clock_(new base::SimpleTestTickClock()), |
- receiver_clock_(new test::SkewedTickClock(sender_clock_.get())), |
- rtp_sender_pacer_(sender_clock_.get()), |
- rtp_receiver_pacer_(sender_clock_.get()), |
- rtcp_at_rtp_sender_( |
- base::Bind(&RtcpTest::OnReceivedCastFeedback, |
- base::Unretained(this)), |
- 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), |
- received_pli_(false) { |
- sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
- receiver_clock_->SetSkew( |
- 1.0, // No skew. |
- base::TimeDelta::FromSeconds(kInitialReceiverClockOffsetSeconds)); |
- |
- rtp_sender_pacer_.set_rtcp_destination(&rtcp_at_rtp_receiver_); |
- rtp_receiver_pacer_.set_rtcp_destination(&rtcp_at_rtp_sender_); |
- } |
- |
- ~RtcpTest() override {} |
- |
+ public: |
void OnReceivedCastFeedback(const RtcpCastMessage& cast_message) { |
last_cast_message_ = cast_message; |
} |
@@ -135,6 +122,34 @@ class RtcpTest : public ::testing::Test { |
} |
} |
+ void OnReceivedPli() { received_pli_ = true; } |
+ |
+ protected: |
+ RtcpTest() |
+ : sender_clock_(new base::SimpleTestTickClock()), |
+ receiver_clock_(new test::SkewedTickClock(sender_clock_.get())), |
+ rtp_sender_pacer_(sender_clock_.get()), |
+ rtp_receiver_pacer_(sender_clock_.get()), |
+ rtcp_at_rtp_sender_(base::WrapUnique(new RtcpClient(this)), |
+ sender_clock_.get(), |
+ &rtp_sender_pacer_, |
+ kSenderSsrc, |
+ kReceiverSsrc), |
+ rtcp_at_rtp_receiver_(receiver_clock_.get(), |
+ kReceiverSsrc, |
+ kSenderSsrc), |
+ received_pli_(false) { |
+ sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
+ receiver_clock_->SetSkew( |
+ 1.0, // No skew. |
+ base::TimeDelta::FromSeconds(kInitialReceiverClockOffsetSeconds)); |
+ |
+ rtp_sender_pacer_.set_rtcp_destination(&rtcp_at_rtp_receiver_); |
+ rtp_receiver_pacer_.set_rtcp_destination(&rtcp_at_rtp_sender_); |
+ } |
+ |
+ ~RtcpTest() override {} |
+ |
PacketRef BuildRtcpPacketFromRtpReceiver( |
const RtcpTimeData& time_data, |
const RtcpCastMessage* cast_message, |
@@ -182,10 +197,8 @@ class RtcpTest : public ::testing::Test { |
return builder.Finish(); |
} |
- void OnReceivedPli() { received_pli_ = true; } |
- |
- scoped_ptr<base::SimpleTestTickClock> sender_clock_; |
- scoped_ptr<test::SkewedTickClock> receiver_clock_; |
+ std::unique_ptr<base::SimpleTestTickClock> sender_clock_; |
+ std::unique_ptr<test::SkewedTickClock> receiver_clock_; |
FakeRtcpTransport rtp_sender_pacer_; |
FakeRtcpTransport rtp_receiver_pacer_; |
SenderRtcpSession rtcp_at_rtp_sender_; |
@@ -200,6 +213,26 @@ class RtcpTest : public ::testing::Test { |
DISALLOW_COPY_AND_ASSIGN(RtcpTest); |
}; |
+namespace { |
+ |
+void RtcpClient::OnCastMessageReceived(const RtcpCastMessage& cast_message) { |
+ rtcp_test_->OnReceivedCastFeedback(cast_message); |
+} |
+ |
+void RtcpClient::OnRttReceived(base::TimeDelta round_trip_time) { |
+ rtcp_test_->OnMeasuredRoundTripTime(round_trip_time); |
+} |
+ |
+void RtcpClient::OnReceiverLogReceived(const RtcpReceiverLogMessage& log) { |
+ rtcp_test_->OnReceivedLogs(log); |
+} |
+ |
+void RtcpClient::OnPliReceived() { |
+ rtcp_test_->OnReceivedPli(); |
+} |
+ |
+} // namespace |
+ |
TEST_F(RtcpTest, LipSyncGleanedFromSenderReport) { |
// Initially, expect no lip-sync info receiver-side without having first |
// received a RTCP packet. |