commit d97db77f059f00296bd1020b9293c3feee68c160
parent fc763bf069cc972e418da1ded0adfd19ef758e83
Author: Dan Baker <dbaker@mozilla.com>
Date: Wed, 22 Oct 2025 14:16:09 -0600
Bug 1995393 - Vendor libwebrtc from 5e8d17b3c4
Upstream commit: https://webrtc.googlesource.com/src/+/5e8d17b3c43a5d007c3169cd34c03bcd25508308
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}
Diffstat:
6 files changed, 12 insertions(+), 42 deletions(-)
diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor
@@ -1,4 +1,4 @@
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
-libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-22T20:13:39.982338+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-22T20:15:56.169426+00:00.
# base of lastest vendoring
-ae82143fd8
+5e8d17b3c4
diff --git a/third_party/libwebrtc/experiments/field_trials.py b/third_party/libwebrtc/experiments/field_trials.py
@@ -122,9 +122,6 @@ ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
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/third_party/libwebrtc/moz-patch-stack/p0001.patch b/third_party/libwebrtc/moz-patch-stack/p0001.patch
@@ -26,7 +26,7 @@ Cr-Branched-From: 9bd64751d9b3b35a820cb72c9029993e218146a1-refs/heads/main@{#452
1 file changed, 6 insertions(+)
diff --git a/pc/sdp_munging_detector.cc b/pc/sdp_munging_detector.cc
-index addfa25c02..f54aeaa86a 100644
+index 445697251a..88a69b39c8 100644
--- a/pc/sdp_munging_detector.cc
+++ b/pc/sdp_munging_detector.cc
@@ -424,6 +424,12 @@ SdpMungingType DetermineSdpMungingType(
diff --git a/third_party/libwebrtc/pc/sdp_munging_detector.cc b/third_party/libwebrtc/pc/sdp_munging_detector.cc
@@ -604,8 +604,14 @@ bool HasUfragSdpMunging(const SessionDescriptionInterface* sdesc,
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/third_party/libwebrtc/pc/sdp_munging_detector_unittest.cc b/third_party/libwebrtc/pc/sdp_munging_detector_unittest.cc
@@ -679,7 +679,7 @@ TEST_F(SdpMungingTest, DtlsRole) {
ElementsAre(Pair(SdpMungingType::kDtlsSetup, 1)));
}
-TEST_F(SdpMungingTest, RemoveContentDefault) {
+TEST_F(SdpMungingTest, RemoveContentRejected) {
auto pc = CreatePeerConnection();
pc->AddAudioTrack("audio_track", {});
@@ -707,35 +707,6 @@ TEST_F(SdpMungingTest, RemoveContentDefault) {
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/third_party/libwebrtc/pc/sdp_offer_answer.cc b/third_party/libwebrtc/pc/sdp_offer_answer.cc
@@ -2483,10 +2483,6 @@ void SdpOfferAnswerHandler::DoSetLocalDescription(
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());
}