| Index: webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
 | 
| diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
 | 
| index 22f61f5cab9b6a6791cc225d2172e7847a783c84..e3aa3907608feaf53f651503fa7e5821ebc718a8 100644
 | 
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
 | 
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
 | 
| @@ -23,18 +23,14 @@ using ::testing::ElementsAre;
 | 
|  
 | 
|  using webrtc::rtcp::App;
 | 
|  using webrtc::rtcp::Bye;
 | 
| -using webrtc::rtcp::Dlrr;
 | 
|  using webrtc::rtcp::Fir;
 | 
|  using webrtc::rtcp::RawPacket;
 | 
|  using webrtc::rtcp::ReceiverReport;
 | 
|  using webrtc::rtcp::Remb;
 | 
|  using webrtc::rtcp::ReportBlock;
 | 
|  using webrtc::rtcp::Rpsi;
 | 
| -using webrtc::rtcp::Rrtr;
 | 
|  using webrtc::rtcp::Sdes;
 | 
|  using webrtc::rtcp::SenderReport;
 | 
| -using webrtc::rtcp::VoipMetric;
 | 
| -using webrtc::rtcp::Xr;
 | 
|  using webrtc::test::RtcpPacketParser;
 | 
|  
 | 
|  namespace webrtc {
 | 
| @@ -344,248 +340,4 @@ TEST(RtcpPacketTest, Remb) {
 | 
|    EXPECT_EQ(kRemoteSsrc + 1, ssrcs[1]);
 | 
|    EXPECT_EQ(kRemoteSsrc + 2, ssrcs[2]);
 | 
|  }
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithNoReportBlocks) {
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithRrtr) {
 | 
| -  Rrtr rrtr;
 | 
| -  rrtr.WithNtp(NtpTime(0x11111111, 0x22222222));
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithRrtr(&rrtr));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.rrtr()->num_packets());
 | 
| -  EXPECT_EQ(0x11111111U, parser.rrtr()->NtpSec());
 | 
| -  EXPECT_EQ(0x22222222U, parser.rrtr()->NtpFrac());
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithTwoRrtrBlocks) {
 | 
| -  Rrtr rrtr1;
 | 
| -  rrtr1.WithNtp(NtpTime(0x11111111, 0x22222222));
 | 
| -  Rrtr rrtr2;
 | 
| -  rrtr2.WithNtp(NtpTime(0x33333333, 0x44444444));
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithRrtr(&rrtr1));
 | 
| -  EXPECT_TRUE(xr.WithRrtr(&rrtr2));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(2, parser.rrtr()->num_packets());
 | 
| -  EXPECT_EQ(0x33333333U, parser.rrtr()->NtpSec());
 | 
| -  EXPECT_EQ(0x44444444U, parser.rrtr()->NtpFrac());
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithDlrrWithOneSubBlock) {
 | 
| -  Dlrr dlrr;
 | 
| -  EXPECT_TRUE(dlrr.WithDlrrItem(0x11111111, 0x22222222, 0x33333333));
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithDlrr(&dlrr));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.dlrr()->num_packets());
 | 
| -  EXPECT_EQ(1, parser.dlrr_items()->num_packets());
 | 
| -  EXPECT_EQ(0x11111111U, parser.dlrr_items()->Ssrc(0));
 | 
| -  EXPECT_EQ(0x22222222U, parser.dlrr_items()->LastRr(0));
 | 
| -  EXPECT_EQ(0x33333333U, parser.dlrr_items()->DelayLastRr(0));
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithDlrrWithTwoSubBlocks) {
 | 
| -  Dlrr dlrr;
 | 
| -  EXPECT_TRUE(dlrr.WithDlrrItem(0x11111111, 0x22222222, 0x33333333));
 | 
| -  EXPECT_TRUE(dlrr.WithDlrrItem(0x44444444, 0x55555555, 0x66666666));
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithDlrr(&dlrr));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.dlrr()->num_packets());
 | 
| -  EXPECT_EQ(2, parser.dlrr_items()->num_packets());
 | 
| -  EXPECT_EQ(0x11111111U, parser.dlrr_items()->Ssrc(0));
 | 
| -  EXPECT_EQ(0x22222222U, parser.dlrr_items()->LastRr(0));
 | 
| -  EXPECT_EQ(0x33333333U, parser.dlrr_items()->DelayLastRr(0));
 | 
| -  EXPECT_EQ(0x44444444U, parser.dlrr_items()->Ssrc(1));
 | 
| -  EXPECT_EQ(0x55555555U, parser.dlrr_items()->LastRr(1));
 | 
| -  EXPECT_EQ(0x66666666U, parser.dlrr_items()->DelayLastRr(1));
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, DlrrWithTooManySubBlocks) {
 | 
| -  const int kMaxItems = 100;
 | 
| -  Dlrr dlrr;
 | 
| -  for (int i = 0; i < kMaxItems; ++i)
 | 
| -    EXPECT_TRUE(dlrr.WithDlrrItem(i, i, i));
 | 
| -  EXPECT_FALSE(dlrr.WithDlrrItem(kMaxItems, kMaxItems, kMaxItems));
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithTwoDlrrBlocks) {
 | 
| -  Dlrr dlrr1;
 | 
| -  EXPECT_TRUE(dlrr1.WithDlrrItem(0x11111111, 0x22222222, 0x33333333));
 | 
| -  Dlrr dlrr2;
 | 
| -  EXPECT_TRUE(dlrr2.WithDlrrItem(0x44444444, 0x55555555, 0x66666666));
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithDlrr(&dlrr1));
 | 
| -  EXPECT_TRUE(xr.WithDlrr(&dlrr2));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(2, parser.dlrr()->num_packets());
 | 
| -  EXPECT_EQ(2, parser.dlrr_items()->num_packets());
 | 
| -  EXPECT_EQ(0x11111111U, parser.dlrr_items()->Ssrc(0));
 | 
| -  EXPECT_EQ(0x22222222U, parser.dlrr_items()->LastRr(0));
 | 
| -  EXPECT_EQ(0x33333333U, parser.dlrr_items()->DelayLastRr(0));
 | 
| -  EXPECT_EQ(0x44444444U, parser.dlrr_items()->Ssrc(1));
 | 
| -  EXPECT_EQ(0x55555555U, parser.dlrr_items()->LastRr(1));
 | 
| -  EXPECT_EQ(0x66666666U, parser.dlrr_items()->DelayLastRr(1));
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithVoipMetric) {
 | 
| -  RTCPVoIPMetric metric;
 | 
| -  metric.lossRate = 1;
 | 
| -  metric.discardRate = 2;
 | 
| -  metric.burstDensity = 3;
 | 
| -  metric.gapDensity = 4;
 | 
| -  metric.burstDuration = 0x1111;
 | 
| -  metric.gapDuration = 0x2222;
 | 
| -  metric.roundTripDelay = 0x3333;
 | 
| -  metric.endSystemDelay = 0x4444;
 | 
| -  metric.signalLevel = 5;
 | 
| -  metric.noiseLevel = 6;
 | 
| -  metric.RERL = 7;
 | 
| -  metric.Gmin = 8;
 | 
| -  metric.Rfactor = 9;
 | 
| -  metric.extRfactor = 10;
 | 
| -  metric.MOSLQ = 11;
 | 
| -  metric.MOSCQ = 12;
 | 
| -  metric.RXconfig = 13;
 | 
| -  metric.JBnominal = 0x5555;
 | 
| -  metric.JBmax = 0x6666;
 | 
| -  metric.JBabsMax = 0x7777;
 | 
| -  VoipMetric metric_block;
 | 
| -  metric_block.To(kRemoteSsrc);
 | 
| -  metric_block.WithVoipMetric(metric);
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithVoipMetric(&metric_block));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.voip_metric()->num_packets());
 | 
| -  EXPECT_EQ(kRemoteSsrc, parser.voip_metric()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.voip_metric()->LossRate());
 | 
| -  EXPECT_EQ(2, parser.voip_metric()->DiscardRate());
 | 
| -  EXPECT_EQ(3, parser.voip_metric()->BurstDensity());
 | 
| -  EXPECT_EQ(4, parser.voip_metric()->GapDensity());
 | 
| -  EXPECT_EQ(0x1111, parser.voip_metric()->BurstDuration());
 | 
| -  EXPECT_EQ(0x2222, parser.voip_metric()->GapDuration());
 | 
| -  EXPECT_EQ(0x3333, parser.voip_metric()->RoundTripDelay());
 | 
| -  EXPECT_EQ(0x4444, parser.voip_metric()->EndSystemDelay());
 | 
| -  EXPECT_EQ(5, parser.voip_metric()->SignalLevel());
 | 
| -  EXPECT_EQ(6, parser.voip_metric()->NoiseLevel());
 | 
| -  EXPECT_EQ(7, parser.voip_metric()->Rerl());
 | 
| -  EXPECT_EQ(8, parser.voip_metric()->Gmin());
 | 
| -  EXPECT_EQ(9, parser.voip_metric()->Rfactor());
 | 
| -  EXPECT_EQ(10, parser.voip_metric()->ExtRfactor());
 | 
| -  EXPECT_EQ(11, parser.voip_metric()->MosLq());
 | 
| -  EXPECT_EQ(12, parser.voip_metric()->MosCq());
 | 
| -  EXPECT_EQ(13, parser.voip_metric()->RxConfig());
 | 
| -  EXPECT_EQ(0x5555, parser.voip_metric()->JbNominal());
 | 
| -  EXPECT_EQ(0x6666, parser.voip_metric()->JbMax());
 | 
| -  EXPECT_EQ(0x7777, parser.voip_metric()->JbAbsMax());
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithMultipleReportBlocks) {
 | 
| -  Rrtr rrtr;
 | 
| -  Dlrr dlrr;
 | 
| -  EXPECT_TRUE(dlrr.WithDlrrItem(1, 2, 3));
 | 
| -  VoipMetric metric;
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithRrtr(&rrtr));
 | 
| -  EXPECT_TRUE(xr.WithDlrr(&dlrr));
 | 
| -  EXPECT_TRUE(xr.WithVoipMetric(&metric));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.rrtr()->num_packets());
 | 
| -  EXPECT_EQ(1, parser.dlrr()->num_packets());
 | 
| -  EXPECT_EQ(1, parser.dlrr_items()->num_packets());
 | 
| -  EXPECT_EQ(1, parser.voip_metric()->num_packets());
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, DlrrWithoutItemNotIncludedInPacket) {
 | 
| -  Rrtr rrtr;
 | 
| -  Dlrr dlrr;
 | 
| -  VoipMetric metric;
 | 
| -  Xr xr;
 | 
| -  xr.From(kSenderSsrc);
 | 
| -  EXPECT_TRUE(xr.WithRrtr(&rrtr));
 | 
| -  EXPECT_TRUE(xr.WithDlrr(&dlrr));
 | 
| -  EXPECT_TRUE(xr.WithVoipMetric(&metric));
 | 
| -
 | 
| -  rtc::scoped_ptr<RawPacket> packet(xr.Build());
 | 
| -  RtcpPacketParser parser;
 | 
| -  parser.Parse(packet->Buffer(), packet->Length());
 | 
| -  EXPECT_EQ(1, parser.xr_header()->num_packets());
 | 
| -  EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
 | 
| -  EXPECT_EQ(1, parser.rrtr()->num_packets());
 | 
| -  EXPECT_EQ(0, parser.dlrr()->num_packets());
 | 
| -  EXPECT_EQ(1, parser.voip_metric()->num_packets());
 | 
| -}
 | 
| -
 | 
| -TEST(RtcpPacketTest, XrWithTooManyBlocks) {
 | 
| -  const int kMaxBlocks = 50;
 | 
| -  Xr xr;
 | 
| -
 | 
| -  Rrtr rrtr;
 | 
| -  for (int i = 0; i < kMaxBlocks; ++i)
 | 
| -    EXPECT_TRUE(xr.WithRrtr(&rrtr));
 | 
| -  EXPECT_FALSE(xr.WithRrtr(&rrtr));
 | 
| -
 | 
| -  Dlrr dlrr;
 | 
| -  for (int i = 0; i < kMaxBlocks; ++i)
 | 
| -    EXPECT_TRUE(xr.WithDlrr(&dlrr));
 | 
| -  EXPECT_FALSE(xr.WithDlrr(&dlrr));
 | 
| -
 | 
| -  VoipMetric voip_metric;
 | 
| -  for (int i = 0; i < kMaxBlocks; ++i)
 | 
| -    EXPECT_TRUE(xr.WithVoipMetric(&voip_metric));
 | 
| -  EXPECT_FALSE(xr.WithVoipMetric(&voip_metric));
 | 
| -}
 | 
| -
 | 
|  }  // namespace webrtc
 | 
| 
 |