Change default SDP syntax for SCTP to spec-compliant.
This also introduces an option in CreateOfferOptions for
getting the non-spec behavior (2013 vintage) back.
Bug: chromium:962860
Change-Id: I72267408a61d6eb03e9895fe38b4cc803d8cbbaf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136809
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27941}
diff --git a/pc/peer_connection_data_channel_unittest.cc b/pc/peer_connection_data_channel_unittest.cc
index 4080dd9..435d1eb 100644
--- a/pc/peer_connection_data_channel_unittest.cc
+++ b/pc/peer_connection_data_channel_unittest.cc
@@ -41,6 +41,7 @@
#include "rtc_base/ref_counted_object.h"
#include "rtc_base/rtc_certificate_generator.h"
#include "rtc_base/thread.h"
+#include "test/gmock.h"
#include "test/gtest.h"
#ifdef WEBRTC_ANDROID
#include "pc/test/android_test_initializer.h"
@@ -53,6 +54,8 @@
using RTCConfiguration = PeerConnectionInterface::RTCConfiguration;
using RTCOfferAnswerOptions = PeerConnectionInterface::RTCOfferAnswerOptions;
+using ::testing::HasSubstr;
+using ::testing::Not;
using ::testing::Values;
namespace {
@@ -411,6 +414,32 @@
EXPECT_EQ(nullptr, caller);
}
+TEST_P(PeerConnectionDataChannelTest, ModernSdpSyntaxByDefault) {
+ PeerConnectionInterface::RTCOfferAnswerOptions options;
+ auto caller = CreatePeerConnectionWithDataChannel();
+ auto offer = caller->CreateOffer(options);
+ EXPECT_FALSE(cricket::GetFirstSctpDataContentDescription(offer->description())
+ ->use_sctpmap());
+ std::string sdp;
+ offer->ToString(&sdp);
+ RTC_LOG(LS_ERROR) << sdp;
+ EXPECT_THAT(sdp, HasSubstr(" UDP/DTLS/SCTP webrtc-datachannel"));
+ EXPECT_THAT(sdp, Not(HasSubstr("a=sctpmap:")));
+}
+
+TEST_P(PeerConnectionDataChannelTest, ObsoleteSdpSyntaxIfSet) {
+ PeerConnectionInterface::RTCOfferAnswerOptions options;
+ options.use_obsolete_sctp_sdp = true;
+ auto caller = CreatePeerConnectionWithDataChannel();
+ auto offer = caller->CreateOffer(options);
+ EXPECT_TRUE(cricket::GetFirstSctpDataContentDescription(offer->description())
+ ->use_sctpmap());
+ std::string sdp;
+ offer->ToString(&sdp);
+ EXPECT_THAT(sdp, Not(HasSubstr(" UDP/DTLS/SCTP webrtc-datachannel")));
+ EXPECT_THAT(sdp, HasSubstr("a=sctpmap:"));
+}
+
INSTANTIATE_TEST_SUITE_P(PeerConnectionDataChannelTest,
PeerConnectionDataChannelTest,
Values(SdpSemantics::kPlanB,