introduce an unsupported content description type

This carries around unsupported content descriptions
(i.e. things where webrtc does not understand the media type
or protocol) in a special data type so that a rejected content or
mediasection is added to the answer SDP.

BUG=webrtc:3513

Change-Id: Ifc4168eae11e899f2504649de5e1eecb6801a9fb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/179082
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <philipp.hancke@googlemail.com>
Cr-Commit-Position: refs/heads/master@{#32410}
This commit is contained in:
Philipp Hancke
2020-10-13 12:43:15 +02:00
committed by Commit Bot
parent a2b31c35ff
commit 239f92ecf7
14 changed files with 291 additions and 29 deletions

View File

@ -2991,7 +2991,8 @@ TEST_F(WebRtcSdpTest, DeserializeSdpWithSctpDataChannelsButWrongMediaType) {
JsepSessionDescription jdesc_output(kDummyType);
EXPECT_TRUE(SdpDeserialize(sdp, &jdesc_output));
EXPECT_EQ(0u, jdesc_output.description()->contents().size());
EXPECT_EQ(1u, jdesc_output.description()->contents().size());
EXPECT_TRUE(jdesc_output.description()->contents()[0].rejected);
}
// Helper function to set the max-message-size parameter in the
@ -4725,21 +4726,32 @@ TEST_F(WebRtcSdpTest, DeserializeSessionDescriptionWithoutCname) {
}
TEST_F(WebRtcSdpTest, DeserializeSdpWithUnsupportedMediaType) {
bool use_sctpmap = true;
AddSctpDataChannel(use_sctpmap);
JsepSessionDescription jdesc(kDummyType);
ASSERT_TRUE(jdesc.Initialize(desc_.Clone(), kSessionId, kSessionVersion));
std::string sdp = kSdpSessionString;
sdp +=
"m=bogus 9 RTP/SAVPF 0 8\r\n"
"c=IN IP4 0.0.0.0\r\n";
"c=IN IP4 0.0.0.0\r\n"
"a=mid:bogusmid\r\n";
sdp +=
"m=audio/something 9 RTP/SAVPF 0 8\r\n"
"c=IN IP4 0.0.0.0\r\n";
"c=IN IP4 0.0.0.0\r\n"
"a=mid:somethingmid\r\n";
JsepSessionDescription jdesc_output(kDummyType);
EXPECT_TRUE(SdpDeserialize(sdp, &jdesc_output));
EXPECT_EQ(0u, jdesc_output.description()->contents().size());
ASSERT_EQ(2u, jdesc_output.description()->contents().size());
ASSERT_NE(nullptr, jdesc_output.description()
->contents()[0]
.media_description()
->as_unsupported());
ASSERT_NE(nullptr, jdesc_output.description()
->contents()[1]
.media_description()
->as_unsupported());
EXPECT_TRUE(jdesc_output.description()->contents()[0].rejected);
EXPECT_TRUE(jdesc_output.description()->contents()[1].rejected);
EXPECT_EQ(jdesc_output.description()->contents()[0].name, "bogusmid");
EXPECT_EQ(jdesc_output.description()->contents()[1].name, "somethingmid");
}