sdp munging: remove WebRTC-NoSdpMangleNumberOfContents killswitch
since
https://chromiumdash.appspot.com/commit/5edfd244fed9a339f6279cdccb4d57d0c6749b21
shipped in M138
Bug: webrtc:416088632,webrtc:40567530
Change-Id: I5d234e5e1d5a48e5372ce1ec439e48f08dd2fe05
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/402911
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#45293}
diff --git a/experiments/field_trials.py b/experiments/field_trials.py
index dc1e127..c0b5a7b 100755
--- a/experiments/field_trials.py
+++ b/experiments/field_trials.py
@@ -122,9 +122,6 @@
FieldTrial('WebRTC-NoSdpMangleUfragRestrictedAddresses',
409713509,
date(2025, 10, 11)),
- FieldTrial('WebRTC-NoSdpMangleNumberOfContents',
- 40567530,
- date(2025, 10, 11)),
FieldTrial('WebRTC-NoSdpMangleReject',
40567530,
date(2026, 6, 1)),
diff --git a/pc/sdp_munging_detector.cc b/pc/sdp_munging_detector.cc
index addfa25..4456972 100644
--- a/pc/sdp_munging_detector.cc
+++ b/pc/sdp_munging_detector.cc
@@ -598,8 +598,14 @@
bool IsSdpMungingAllowed(SdpMungingType sdp_munging_type,
const FieldTrialsView& trials) {
- if (sdp_munging_type == SdpMungingType::kNoModification) {
- return true;
+ switch (sdp_munging_type) {
+ case SdpMungingType::kNoModification:
+ return true;
+ case SdpMungingType::kNumberOfContents:
+ return false;
+ default:
+ // Handled below.
+ break;
}
std::string type_as_string =
std::to_string(static_cast<int>(sdp_munging_type));
diff --git a/pc/sdp_munging_detector_unittest.cc b/pc/sdp_munging_detector_unittest.cc
index cd655e8..2785100 100644
--- a/pc/sdp_munging_detector_unittest.cc
+++ b/pc/sdp_munging_detector_unittest.cc
@@ -679,7 +679,7 @@
ElementsAre(Pair(SdpMungingType::kDtlsSetup, 1)));
}
-TEST_F(SdpMungingTest, RemoveContentDefault) {
+TEST_F(SdpMungingTest, RemoveContentRejected) {
auto pc = CreatePeerConnection();
pc->AddAudioTrack("audio_track", {});
@@ -707,35 +707,6 @@
ElementsAre(Pair(static_cast<int>(SdpMungingOutcome::kRejected), 1)));
}
-TEST_F(SdpMungingTest, RemoveContentKillswitch) {
- auto pc =
- CreatePeerConnection("WebRTC-NoSdpMangleNumberOfContents/Disabled/");
- pc->AddAudioTrack("audio_track", {});
-
- std::unique_ptr<SessionDescriptionInterface> offer = pc->CreateOffer();
- auto& contents = offer->description()->contents();
- ASSERT_EQ(contents.size(), 1u);
- auto name = contents[0].mid();
- EXPECT_TRUE(offer->description()->RemoveContentByName(contents[0].mid()));
- std::string sdp;
- offer->ToString(&sdp);
- auto modified_offer = CreateSessionDescription(
- SdpType::kOffer,
- absl::StrReplaceAll(sdp, {{"a=group:BUNDLE " + name, "a=group:BUNDLE"}}));
-
- RTCError error;
- EXPECT_TRUE(pc->SetLocalDescription(std::move(modified_offer), &error));
- EXPECT_THAT(
- metrics::Samples("WebRTC.PeerConnection.SdpMunging.Offer.Initial"),
- ElementsAre(Pair(SdpMungingType::kNumberOfContents, 1)));
- EXPECT_THAT(
- metrics::Samples("WebRTC.PeerConnection.SdpMunging.SdpOutcome.Accepted"),
- ElementsAre(Pair(SdpMungingType::kNumberOfContents, 1)));
- EXPECT_THAT(
- metrics::Samples("WebRTC.PeerConnection.SdpMunging.Outcome"),
- ElementsAre(Pair(static_cast<int>(SdpMungingOutcome::kAccepted), 1)));
-}
-
TEST_F(SdpMungingTest, TransceiverDirection) {
auto pc = CreatePeerConnection();
pc->AddAudioTrack("audio_track", {});
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index 4785050..7339c0f 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -2483,10 +2483,6 @@
RTC_LOG(LS_ERROR) << "Rejecting SDP because of ufrag modification";
reject_error = true;
}
- } else if (sdp_munging_type == kNumberOfContents &&
- !pc_->trials().IsDisabled(
- "WebRTC-NoSdpMangleNumberOfContents")) {
- reject_error = true;
} else {
reject_error = !IsSdpMungingAllowed(sdp_munging_type, pc_->trials());
}