commit 4e35f18c97fada13565b69d335b32437efdd0b78
parent 43dc6edd12441bfced44da357f1d491fda363d85
Author: Dan Baker <dbaker@mozilla.com>
Date: Mon, 27 Oct 2025 16:47:48 -0600
Bug 1995393 - Vendor libwebrtc from d110b78168
Upstream commit: https://webrtc.googlesource.com/src/+/d110b7816896592a6cf5a33096d763ae2d640306
Add test for renegotiation if CCFB has been negotiated
Bug: webrtc:438707558
Change-Id: Ie86285f72f80033e901e89a50af595453131ca9f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404500
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Auto-Submit: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45503}
Diffstat:
2 files changed, 68 insertions(+), 2 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-27T22:45:31.363062+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T22:47:37.434841+00:00.
# base of lastest vendoring
-166e65669b
+d110b78168
diff --git a/third_party/libwebrtc/pc/congestion_control_integrationtest.cc b/third_party/libwebrtc/pc/congestion_control_integrationtest.cc
@@ -122,6 +122,72 @@ TEST_F(PeerConnectionCongestionControlTest, SendOnlySupportDoesNotEnableCcFb) {
EXPECT_THAT(answer_str, HasSubstr("transport-cc"));
}
+TEST_F(PeerConnectionCongestionControlTest,
+ ReNegotiationCalleeDoesNotSupportCcfb) {
+ // Enable CCFB for sender, do not enable it for receiver
+ SetFieldTrials(kCallerName,
+ "WebRTC-RFC8888CongestionControlFeedback/Enabled/");
+ SetFieldTrials(kCalleeName,
+ "WebRTC-RFC8888CongestionControlFeedback/Disabled/");
+ ASSERT_TRUE(CreatePeerConnectionWrappers());
+ ConnectFakeSignalingForSdpOnly();
+ caller()->AddAudioVideoTracks();
+ caller()->CreateAndSetAndSignalOffer();
+ ASSERT_THAT(WaitUntil([&] { return SignalingStateStable(); }, IsTrue()),
+ IsRtcOk());
+
+ // Check that the callee answer does contain transport-cc
+ std::string answer_str = absl::StrCat(*caller()->pc()->remote_description());
+ ASSERT_THAT(answer_str, HasSubstr("transport-cc"));
+
+ // Callee re-negotiates
+ callee()->AddVideoTrack();
+ callee()->CreateAndSetAndSignalOffer();
+ ASSERT_THAT(WaitUntil([&] { return SignalingStateStable(); }, IsTrue()),
+ IsRtcOk());
+ // Check that the caller's answer does contain CCFB.
+ answer_str = absl::StrCat(*caller()->pc()->local_description());
+ EXPECT_THAT(answer_str, Not(HasSubstr("ccfb")));
+}
+
+TEST_F(PeerConnectionCongestionControlTest, ReNegotiationBothSupportCcfb) {
+ SetFieldTrials(kCallerName,
+ "WebRTC-RFC8888CongestionControlFeedback/Enabled/"
+ "WebRTC-HeaderExtensionNegotiateMemory/Enabled/");
+ SetFieldTrials(kCalleeName,
+ "WebRTC-RFC8888CongestionControlFeedback/Enabled/"
+ "WebRTC-HeaderExtensionNegotiateMemory/Enabled/");
+ ASSERT_TRUE(CreatePeerConnectionWrappers());
+ ConnectFakeSignalingForSdpOnly();
+ caller()->AddAudioVideoTracks();
+ caller()->CreateAndSetAndSignalOffer();
+ ASSERT_THAT(WaitUntil([&] { return SignalingStateStable(); }, IsTrue()),
+ IsRtcOk());
+
+ // Check that the callee's answer does not contain transport-cc
+ std::string answer_str = absl::StrCat(*caller()->pc()->remote_description());
+ ASSERT_THAT(answer_str, Not(HasSubstr("transport-cc")));
+
+ // Callee re-negotiates
+ callee()->AddVideoTrack();
+ callee()->CreateAndSetAndSignalOffer();
+ ASSERT_THAT(WaitUntil([&] { return SignalingStateStable(); }, IsTrue()),
+ IsRtcOk());
+ std::string offer_str = absl::StrCat(*callee()->pc()->local_description());
+ EXPECT_THAT(offer_str, Not(HasSubstr("transport-cc")));
+ EXPECT_THAT(
+ offer_str,
+ Not(HasSubstr("http://www.ietf.org/id/"
+ "draft-holmer-rmcat-transport-wide-cc-extensions-01")));
+
+ answer_str = absl::StrCat(*caller()->pc()->local_description());
+ EXPECT_THAT(answer_str, Not(HasSubstr("transport-cc")));
+ EXPECT_THAT(
+ answer_str,
+ Not(HasSubstr("http://www.ietf.org/id/"
+ "draft-holmer-rmcat-transport-wide-cc-extensions-01")));
+}
+
#ifdef WEBRTC_HAVE_SCTP
TEST_F(PeerConnectionCongestionControlTest,
ReceiveOfferWithDataChannelsSetsCcfbFlag) {