Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc | 
| diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc | 
| index 16300895027e22e86792834df7816876d8737bd0..9470c4280c067806701d1808b4f77ec48926f646 100644 | 
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc | 
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc | 
| @@ -1297,4 +1297,37 @@ TEST_F(RtcpReceiverTest, ReceivesTargetBitrate) { | 
| InjectRtcpPacket(xr); | 
| } | 
| +TEST_F(RtcpReceiverTest, HandlesIncorrectTargetBitrate) { | 
| + BitrateAllocation expected_allocation; | 
| + expected_allocation.SetBitrate(0, 0, 10000); | 
| + | 
| + rtcp::TargetBitrate bitrate; | 
| + bitrate.AddTargetBitrate(0, 0, expected_allocation.GetBitrate(0, 0) / 1000); | 
| + bitrate.AddTargetBitrate(0, kMaxTemporalStreams - 1, 20000); | 
| 
 
danilchap
2016/12/06 13:12:56
rtcp::TargetBitrate has different limits for tempo
 
sprang_webrtc
2016/12/06 13:22:41
You're right. Done.
 
 | 
| + bitrate.AddTargetBitrate(kMaxSpatialLayers - 1, 0, 40000); | 
| + | 
| + rtcp::ExtendedReports xr; | 
| + xr.SetTargetBitrate(bitrate); | 
| + | 
| + // Build the actual RTCP bytestream, so that we can set illegal layer ids. | 
| + rtc::Buffer buffer = xr.Build(); | 
| + const size_t kHeaderLength = 12; // RTCP + XR + TargetBitrate. | 
| + const size_t kBirateItemSize = 4; | 
| + EXPECT_EQ(kHeaderLength + (3 * kBirateItemSize), buffer.size()); | 
| + | 
| + EXPECT_EQ(0U, buffer[kHeaderLength + (kBirateItemSize * 0)]); | 
| + | 
| + EXPECT_EQ(kMaxTemporalStreams - 1, | 
| + buffer[kHeaderLength + (kBirateItemSize * 1)]); | 
| + buffer[kHeaderLength + (kBirateItemSize * 1)] = kMaxTemporalStreams; | 
| + | 
| + EXPECT_EQ((kMaxSpatialLayers - 1) << 4, | 
| + buffer[kHeaderLength + (kBirateItemSize * 2)]); | 
| + buffer[kHeaderLength + (kBirateItemSize * 2)] = kMaxSpatialLayers << 4; | 
| + | 
| + EXPECT_CALL(bitrate_allocation_observer_, | 
| + OnBitrateAllocationUpdated(expected_allocation)); | 
| + InjectRtcpPacket(buffer); | 
| +} | 
| + | 
| } // namespace webrtc |