tor-browser

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

commit 123ce25ba6075f1e618e85a5bd9f3628e96645df
parent 12b2a6c45f77a645515453cacdec0b703c1b2ce8
Author: Michael Froman <mfroman@mozilla.com>
Date:   Wed,  8 Oct 2025 17:09:04 -0500

Bug 1993083 - Vendor libwebrtc from fe999a8387

Upstream commit: https://webrtc.googlesource.com/src/+/fe999a83875e403bb28c51485e2986bc5501641c
    dtls-in-stun: Correct testcase and renable those correct variants

    yay, it turned out that this was a test case problem
    rather than a code problem. "callee_active" with dtls_in_stun
    is not supported...(which was somehow missed in the check...)

    BUG=webrtc:367395350

    Change-Id: I1f1f5ebf809008e1659bfccd1d46f67e0aa09d68
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/398200
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Commit-Queue: Harald Alvestrand <hta@webrtc.org>
    Auto-Submit: Jonas Oreland <jonaso@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45034}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/pc/data_channel_integrationtest.cc | 52+++++++++++++++++++++++++++++++++++++---------------
2 files changed, 39 insertions(+), 17 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 /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc -libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T22:07:52.011784+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T22:08:54.967528+00:00. # base of lastest vendoring -4a7490bd9e +fe999a8387 diff --git a/third_party/libwebrtc/pc/data_channel_integrationtest.cc b/third_party/libwebrtc/pc/data_channel_integrationtest.cc @@ -1721,28 +1721,17 @@ class DataChannelIntegrationTestUnifiedPlanFieldTrials const char* CheckSupported() { const bool callee_active = std::get<0>(GetParam()); + const bool caller_has_dtls_in_stun = absl::StrContains( + std::get<1>(GetParam()), "WebRTC-IceHandshakeDtls/Enabled/"); const bool callee_has_dtls_in_stun = absl::StrContains( std::get<2>(GetParam()), "WebRTC-IceHandshakeDtls/Enabled/"); const bool callee2_has_dtls_in_stun = absl::StrContains( std::get<3>(GetParam()), "WebRTC-IceHandshakeDtls/Enabled/"); - if (callee_active && - (callee_has_dtls_in_stun || callee2_has_dtls_in_stun)) { + if (callee_active && (caller_has_dtls_in_stun || callee_has_dtls_in_stun || + callee2_has_dtls_in_stun)) { return "dtls-in-stun when callee(s) are dtls clients"; } - /** - * This extra skip disables 108 combinations that are flaky. - * TODO (jonaso, b/427410792, webrtc:367395350): Should be fixed - * before launching dtls in stun - */ - const bool caller_has_dtls_in_stun = absl::StrContains( - std::get<1>(GetParam()), "WebRTC-IceHandshakeDtls/Enabled/"); - if (caller_has_dtls_in_stun && - (!callee_has_dtls_in_stun && !callee2_has_dtls_in_stun)) { - return "TODO: b/427410792, webrtc:367395350, dtls-in-stun on caller but " - "neither callees"; - } - return nullptr; } }; @@ -1783,6 +1772,14 @@ TEST_P(DataChannelIntegrationTestUnifiedPlanFieldTrials, // Capture offer so that it can be sent to Callee2 too. offer = sdp->Clone(); }); + callee2->SetReceivedSdpMunger( + [&](std::unique_ptr<SessionDescriptionInterface>& sdp) { + if (callee_active) { + MakeOfferHavePassiveDtlsRole(sdp); + } else { + MakeOfferHaveActiveDtlsRole(sdp); + } + }); callee()->SetGeneratedSdpMunger( [&](std::unique_ptr<SessionDescriptionInterface>& sdp) { // Modify offer to kPrAnswer @@ -1793,6 +1790,14 @@ TEST_P(DataChannelIntegrationTestUnifiedPlanFieldTrials, MakeOfferHavePassiveDtlsRole(sdp); } }); + callee2->SetGeneratedSdpMunger( + [&](std::unique_ptr<SessionDescriptionInterface>& sdp) { + if (callee_active) { + MakeOfferHaveActiveDtlsRole(sdp); + } else { + MakeOfferHavePassiveDtlsRole(sdp); + } + }); caller()->CreateAndSetAndSignalOffer(); ASSERT_FALSE(HasFailure()); WaitConnectedAndDcOpen(/* prAnswer= */ true, caller(), callee()); @@ -1850,6 +1855,14 @@ TEST_P(DataChannelIntegrationTestUnifiedPlanFieldTrials, // Capture offer so that it can be sent to Callee2 too. offer = sdp->Clone(); }); + callee2->SetReceivedSdpMunger( + [&](std::unique_ptr<SessionDescriptionInterface>& sdp) { + if (callee_active) { + MakeOfferHavePassiveDtlsRole(sdp); + } else { + MakeOfferHaveActiveDtlsRole(sdp); + } + }); callee()->SetGeneratedSdpMunger( [&](std::unique_ptr<SessionDescriptionInterface>& sdp) { // Modify offer to kPrAnswer @@ -1860,6 +1873,14 @@ TEST_P(DataChannelIntegrationTestUnifiedPlanFieldTrials, MakeOfferHavePassiveDtlsRole(sdp); } }); + callee2->SetGeneratedSdpMunger( + [&](std::unique_ptr<SessionDescriptionInterface>& sdp) { + if (callee_active) { + MakeOfferHaveActiveDtlsRole(sdp); + } else { + MakeOfferHavePassiveDtlsRole(sdp); + } + }); bool first_answer = true; std::unique_ptr<SessionDescriptionInterface> answer; caller()->SetReceivedSdpMunger( @@ -1918,6 +1939,7 @@ TEST_P(DataChannelIntegrationTestUnifiedPlanFieldTrials, ASSERT_THAT(answer, testing::Not(testing::IsNull())); std::string answer_sdp; EXPECT_TRUE(answer->ToString(&answer_sdp)); + caller()->ReceiveSdpMessage(SdpType::kAnswer, answer_sdp); EXPECT_EQ(caller()->pc()->signaling_state(),