tor-browser

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

commit 3f41c68712904e822cc098ad76fada1601363ab9
parent 2d95a8c13582f2991b4af251f231bf1a09d6406c
Author: Dan Baker <dbaker@mozilla.com>
Date:   Mon, 27 Oct 2025 14:36:00 -0600

Bug 1995393 - Vendor libwebrtc from 4b4867dfee

Upstream commit: https://webrtc.googlesource.com/src/+/4b4867dfee3115506d8beeaea743209f56f697a6
    Remove P2PTransportChannel constructor that do not provide Environment

    Bug: webrtc:42223992
    Change-Id: Ice26cd1cc1454e2c88b305153422f17b8ed8b355
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/406361
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Per Kjellander <perkj@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45465}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/p2p/base/p2p_transport_channel.cc | 76+++++++++++++++++++++++-----------------------------------------------------
Mthird_party/libwebrtc/p2p/base/p2p_transport_channel.h | 27+++++++--------------------
3 files changed, 32 insertions(+), 75 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-27T20:33:02.592695+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T20:35:48.512243+00:00. # base of lastest vendoring -f14761075c +4b4867dfee diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel.cc b/third_party/libwebrtc/p2p/base/p2p_transport_channel.cc @@ -90,14 +90,11 @@ PortInterface::CandidateOrigin GetOrigin(PortInterface* port, return PortInterface::ORIGIN_OTHER_PORT; } -uint32_t GetWeakPingIntervalInFieldTrial(const FieldTrialsView* field_trials) { - if (field_trials != nullptr) { - uint32_t weak_ping_interval = - ::strtoul(field_trials->Lookup("WebRTC-StunInterPacketDelay").c_str(), - nullptr, 10); - if (weak_ping_interval) { - return static_cast<int>(weak_ping_interval); - } +uint32_t GetWeakPingIntervalInFieldTrial(const FieldTrialsView& field_trials) { + uint32_t weak_ping_interval = ::strtoul( + field_trials.Lookup("WebRTC-StunInterPacketDelay").c_str(), nullptr, 10); + if (weak_ping_interval) { + return static_cast<int>(weak_ping_interval); } return WEAK_PING_INTERVAL; } @@ -141,9 +138,8 @@ std::unique_ptr<P2PTransportChannel> P2PTransportChannel::Create( return absl::WrapUnique(new P2PTransportChannel( init.env(), transport_name, component, init.port_allocator(), init.async_dns_resolver_factory(), /*owned_dns_resolver_factory=*/nullptr, - init.lna_permission_factory(), init.event_log(), - init.ice_controller_factory(), init.active_ice_controller_factory(), - init.field_trials())); + init.lna_permission_factory(), init.ice_controller_factory(), + init.active_ice_controller_factory())); } P2PTransportChannel::P2PTransportChannel(const Environment& env, @@ -157,30 +153,12 @@ P2PTransportChannel::P2PTransportChannel(const Environment& env, /* async_dns_resolver_factory= */ nullptr, /* owned_dns_resolver_factory= */ nullptr, /* lna_permission_factory= */ nullptr, - &env.event_log(), /* ice_controller_factory= */ nullptr, - /* active_ice_controller_factory= */ nullptr, - &env.field_trials()) {} - -P2PTransportChannel::P2PTransportChannel(absl::string_view transport_name, - int component, - PortAllocator* allocator, - const FieldTrialsView* field_trials) - : P2PTransportChannel(/*env=*/std::nullopt, - transport_name, - component, - allocator, - /* async_dns_resolver_factory= */ nullptr, - /* owned_dns_resolver_factory= */ nullptr, - /* lna_permission_factory= */ nullptr, - /* event_log= */ nullptr, - /* ice_controller_factory= */ nullptr, - /* active_ice_controller_factory= */ nullptr, - field_trials) {} + /* active_ice_controller_factory= */ nullptr) {} // Private constructor, called from Create() P2PTransportChannel::P2PTransportChannel( - std::optional<Environment> env, + const Environment& env, absl::string_view transport_name, int component, PortAllocator* allocator, @@ -188,10 +166,8 @@ P2PTransportChannel::P2PTransportChannel( std::unique_ptr<AsyncDnsResolverFactoryInterface> owned_dns_resolver_factory, LocalNetworkAccessPermissionFactoryInterface* lna_permission_factory, - RtcEventLog* event_log, IceControllerFactoryInterface* ice_controller_factory, - ActiveIceControllerFactoryInterface* active_ice_controller_factory, - const FieldTrialsView* field_trials) + ActiveIceControllerFactoryInterface* active_ice_controller_factory) : env_(env), transport_name_(transport_name), component_(component), @@ -209,7 +185,7 @@ P2PTransportChannel::P2PTransportChannel( remote_ice_mode_(ICEMODE_FULL), ice_role_(ICEROLE_UNKNOWN), gathering_state_(kIceGatheringNew), - weak_ping_interval_(GetWeakPingIntervalInFieldTrial(field_trials)), + weak_ping_interval_(GetWeakPingIntervalInFieldTrial(env_.field_trials())), config_(RECEIVING_TIMEOUT, BACKUP_CONNECTION_PING_INTERVAL, GATHER_ONCE /* continual_gathering_policy */, @@ -217,8 +193,7 @@ P2PTransportChannel::P2PTransportChannel( STRONG_AND_STABLE_WRITABLE_CONNECTION_PING_INTERVAL, true /* presume_writable_when_fully_relayed */, REGATHER_ON_FAILED_NETWORKS_INTERVAL, - RECEIVING_SWITCHING_DELAY), - field_trials_(field_trials) { + RECEIVING_SWITCHING_DELAY) { TRACE_EVENT0("webrtc", "P2PTransportChannel::P2PTransportChannel"); RTC_DCHECK(allocator_ != nullptr); RTC_DCHECK(!transport_name_.empty()); @@ -234,9 +209,9 @@ P2PTransportChannel::P2PTransportChannel( // the transport. allocator_->SignalCandidateFilterChanged.connect( this, &P2PTransportChannel::OnCandidateFilterChanged); - ice_event_log_.set_event_log(event_log); + ice_event_log_.set_event_log(&env_.event_log()); - ParseFieldTrials(field_trials); + ParseFieldTrials(env_.field_trials()); IceControllerFactoryArgs args{ .ice_transport_state_func = [this] { return GetState(); }, @@ -248,8 +223,7 @@ P2PTransportChannel::P2PTransportChannel( }, .ice_field_trials = &ice_field_trials_, .ice_controller_field_trials = - field_trials ? field_trials->Lookup("WebRTC-IceControllerFieldTrials") - : ""}; + env_.field_trials().Lookup("WebRTC-IceControllerFieldTrials")}; if (active_ice_controller_factory) { ActiveIceControllerFactoryArgs active_args{.legacy_args = args, @@ -734,12 +708,8 @@ void P2PTransportChannel::SetIceConfig(const IceConfig& config) { } void P2PTransportChannel::ParseFieldTrials( - const FieldTrialsView* field_trials) { - if (field_trials == nullptr) { - return; - } - - if (field_trials->IsEnabled("WebRTC-ExtraICEPing")) { + const FieldTrialsView& field_trials) { + if (field_trials.IsEnabled("WebRTC-ExtraICEPing")) { RTC_LOG(LS_INFO) << "Set WebRTC-ExtraICEPing: Enabled"; } @@ -778,7 +748,7 @@ void P2PTransportChannel::ParseFieldTrials( // GOOG_DELTA "enable_goog_delta", &ice_field_trials_.enable_goog_delta, "answer_goog_delta", &ice_field_trials_.answer_goog_delta) - ->Parse(field_trials->Lookup("WebRTC-IceFieldTrials")); + ->Parse(field_trials.Lookup("WebRTC-IceFieldTrials")); if (ice_field_trials_.dead_connection_timeout_ms < 30000) { RTC_LOG(LS_WARNING) << "dead_connection_timeout_ms set to " @@ -811,14 +781,14 @@ void P2PTransportChannel::ParseFieldTrials( // that will be used for tagging all packets. StructParametersParser::Create("override_dscp", &ice_field_trials_.override_dscp) - ->Parse(field_trials->Lookup("WebRTC-DscpFieldTrial")); + ->Parse(field_trials.Lookup("WebRTC-DscpFieldTrial")); if (ice_field_trials_.override_dscp) { SetOption(Socket::OPT_DSCP, *ice_field_trials_.override_dscp); } std::string field_trial_string = - field_trials->Lookup("WebRTC-SetSocketReceiveBuffer"); + field_trials.Lookup("WebRTC-SetSocketReceiveBuffer"); int receive_buffer_size_kb = 0; sscanf(field_trial_string.c_str(), "Enabled-%d", &receive_buffer_size_kb); if (receive_buffer_size_kb > 0) { @@ -828,16 +798,16 @@ void P2PTransportChannel::ParseFieldTrials( } ice_field_trials_.piggyback_ice_check_acknowledgement = - field_trials->IsEnabled("WebRTC-PiggybackIceCheckAcknowledgement"); + field_trials.IsEnabled("WebRTC-PiggybackIceCheckAcknowledgement"); ice_field_trials_.extra_ice_ping = - field_trials->IsEnabled("WebRTC-ExtraICEPing"); + field_trials.IsEnabled("WebRTC-ExtraICEPing"); if (!ice_field_trials_.enable_goog_delta) { stun_dict_writer_.Disable(); } - if (field_trials->IsEnabled("WebRTC-RFC8888CongestionControlFeedback")) { + if (field_trials.IsEnabled("WebRTC-RFC8888CongestionControlFeedback")) { int desired_recv_esn = 1; RTC_LOG(LS_INFO) << "Set WebRTC-RFC8888CongestionControlFeedback: Enable " "and set ECN recving mode"; diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel.h b/third_party/libwebrtc/p2p/base/p2p_transport_channel.h @@ -73,10 +73,6 @@ #include "rtc_base/thread_annotations.h" namespace webrtc { -class RtcEventLog; -} // namespace webrtc - -namespace webrtc { bool IceCredentialsChanged(absl::string_view old_ufrag, absl::string_view old_pwd, @@ -112,13 +108,6 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, int component, PortAllocator* allocator); - // TODO: bugs.webrtc.org/42223992 - Remove this constructor when chromium is - // updated not to use it. - P2PTransportChannel(absl::string_view transport_name, - int component, - PortAllocator* allocator, - const FieldTrialsView* field_trials = nullptr); - ~P2PTransportChannel() override; P2PTransportChannel(const P2PTransportChannel&) = delete; @@ -252,7 +241,9 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, return stun_dict_writer_; } - const FieldTrialsView* field_trials() const override { return field_trials_; } + const FieldTrialsView* field_trials() const override { + return &env_.field_trials(); + } void ResetDtlsStunPiggybackCallbacks() override; void SetDtlsStunPiggybackCallbacks( @@ -293,7 +284,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, }; P2PTransportChannel( - std::optional<Environment> env, + const Environment& env, absl::string_view transport_name, int component, PortAllocator* allocator, @@ -304,10 +295,8 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, std::unique_ptr<AsyncDnsResolverFactoryInterface> owned_dns_resolver_factory, LocalNetworkAccessPermissionFactoryInterface* lna_permission_factory, - RtcEventLog* event_log, IceControllerFactoryInterface* ice_controller_factory, - ActiveIceControllerFactoryInterface* active_ice_controller_factory, - const FieldTrialsView* field_trials); + ActiveIceControllerFactoryInterface* active_ice_controller_factory); bool IsGettingPorts() { RTC_DCHECK_RUN_ON(network_thread_); @@ -437,7 +426,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, int64_t ComputeEstimatedDisconnectedTimeMs(int64_t now, Connection* old_connection); - void ParseFieldTrials(const FieldTrialsView* field_trials); + void ParseFieldTrials(const FieldTrialsView& field_trials); void FinishAddingRemoteCandidate(const Candidate& new_remote_candidate); void OnCandidateResolved(AsyncDnsResolverInterface* resolver); @@ -452,7 +441,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, const StunByteStringAttribute*); void GoogDeltaAckReceived(RTCErrorOr<const StunUInt64Attribute*>); - const std::optional<Environment> env_; + const Environment env_; std::string transport_name_ RTC_GUARDED_BY(network_thread_); int component_ RTC_GUARDED_BY(network_thread_); PortAllocator* allocator_ RTC_GUARDED_BY(network_thread_); @@ -538,8 +527,6 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, // Parsed field trials. IceFieldTrials ice_field_trials_; - // Unparsed field trials. - const FieldTrialsView* field_trials_; // A dictionary of attributes that will be reflected to peer. StunDictionaryWriter stun_dict_writer_;