tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/pc/congestion_control_integrationtest.cc | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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) {