Index: talk/app/webrtc/webrtcsdp_unittest.cc |
diff --git a/talk/app/webrtc/webrtcsdp_unittest.cc b/talk/app/webrtc/webrtcsdp_unittest.cc |
index 2bd6f6d668951d8d16f782142ef55e921ce47ed6..b6577682041c8d305ecd69fb4754706370cf7698 100644 |
--- a/talk/app/webrtc/webrtcsdp_unittest.cc |
+++ b/talk/app/webrtc/webrtcsdp_unittest.cc |
@@ -1698,12 +1698,7 @@ TEST_F(WebRtcSdpTest, SerializeSessionDescriptionWithDataChannelAndBandwidth) { |
std::string expected_sdp = kSdpString; |
expected_sdp.append(kSdpRtpDataChannelString); |
- // We want to test that serializing data content ignores bandwidth |
- // settings (it should always be the default). Thus, we don't do |
- // the following: |
- // TODO(pthatcher): We need to temporarily allow the SDP to control |
- // this for backwards-compatibility. Once we don't need that any |
- // more, remove this. |
+ // Serializing data content shouldn't ignore bandwidth settings. |
InjectAfter("m=application 9 RTP/SAVPF 101\r\nc=IN IP4 0.0.0.0\r\n", |
"b=AS:100\r\n", |
&expected_sdp); |
@@ -2259,28 +2254,39 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelAndNewPort) { |
} |
TEST_F(WebRtcSdpTest, DeserializeSdpWithRtpDataChannelsAndBandwidth) { |
- AddRtpDataChannel(); |
+ // We want to test that deserializing data content limits bandwidth |
+ // settings (it should never be greater than the default). |
+ // This should prevent someone from using unlimited data bandwidth through |
+ // JS and "breaking the Internet". |
+ // See: https://code.google.com/p/chromium/issues/detail?id=280726 |
+ std::string sdp_with_bandwidth = kSdpString; |
+ sdp_with_bandwidth.append(kSdpRtpDataChannelString); |
+ InjectAfter("a=mid:data_content_name\r\n", |
+ "b=AS:100\r\n", |
+ &sdp_with_bandwidth); |
+ JsepSessionDescription jdesc_with_bandwidth(kDummyString); |
+ |
+ EXPECT_FALSE(SdpDeserialize(sdp_with_bandwidth, &jdesc_with_bandwidth)); |
+} |
+ |
+TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelsAndBandwidth) { |
+ AddSctpDataChannel(); |
JsepSessionDescription jdesc(kDummyString); |
- // We want to test that deserializing data content ignores bandwidth |
- // settings (it should always be the default). Thus, we don't do |
- // the following: |
- // TODO(pthatcher): We need to temporarily allow the SDP to control |
- // this for backwards-compatibility. Once we don't need that any |
- // more, remove this. |
DataContentDescription* dcd = static_cast<DataContentDescription*>( |
GetFirstDataContent(&desc_)->description); |
dcd->set_bandwidth(100 * 1000); |
ASSERT_TRUE(jdesc.Initialize(desc_.Copy(), kSessionId, kSessionVersion)); |
std::string sdp_with_bandwidth = kSdpString; |
- sdp_with_bandwidth.append(kSdpRtpDataChannelString); |
+ sdp_with_bandwidth.append(kSdpSctpDataChannelString); |
InjectAfter("a=mid:data_content_name\r\n", |
"b=AS:100\r\n", |
&sdp_with_bandwidth); |
JsepSessionDescription jdesc_with_bandwidth(kDummyString); |
- EXPECT_TRUE( |
- SdpDeserialize(sdp_with_bandwidth, &jdesc_with_bandwidth)); |
+ // SCTP has congestion control, so we shouldn't limit the bandwidth |
+ // as we do for RTP. |
+ EXPECT_TRUE(SdpDeserialize(sdp_with_bandwidth, &jdesc_with_bandwidth)); |
EXPECT_TRUE(CompareSessionDescription(jdesc, jdesc_with_bandwidth)); |
} |