commit 4f9b6f97cee87014c9ae0ac82cea2ba96febf1d3 parent 3a2aaf84c390d79ef98cd8dae18f014261a1d68d Author: Dan Baker <dbaker@mozilla.com> Date: Mon, 27 Oct 2025 12:11:12 -0600 Bug 1995393 - Vendor libwebrtc from 63f79fe23a Upstream commit: https://webrtc.googlesource.com/src/+/63f79fe23aa345860f62fa4b1be65be2d9e9123a Propagate Environment to P2PTransportChannel Bug: webrtc:42223992 Change-Id: I14a00d21688523eecffdfb2198db36f4b5cc74ef Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405741 Reviewed-by: Per Kjellander <perkj@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#45424} Diffstat:
15 files changed, 118 insertions(+), 119 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-27T18:08:12.895385+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T18:10:56.072629+00:00. # base of lastest vendoring -90ed63787a +63f79fe23a diff --git a/third_party/libwebrtc/api/BUILD.gn b/third_party/libwebrtc/api/BUILD.gn @@ -236,6 +236,7 @@ rtc_source_set("ice_transport_interface") { ":ref_count", ":rtc_error", ":scoped_refptr", + "environment", "rtc_event_log", ] } diff --git a/third_party/libwebrtc/api/ice_transport_factory.cc b/third_party/libwebrtc/api/ice_transport_factory.cc @@ -20,7 +20,6 @@ #include "p2p/base/ice_transport_internal.h" #include "p2p/base/p2p_constants.h" #include "p2p/base/p2p_transport_channel.h" -#include "p2p/base/port_allocator.h" #include "rtc_base/thread_annotations.h" namespace webrtc { @@ -53,13 +52,6 @@ class IceTransportWithTransportChannel : public IceTransportInterface { } // namespace -scoped_refptr<IceTransportInterface> CreateIceTransport( - PortAllocator* port_allocator) { - IceTransportInit init; - init.set_port_allocator(port_allocator); - return CreateIceTransport(std::move(init)); -} - scoped_refptr<IceTransportInterface> CreateIceTransport(IceTransportInit init) { return make_ref_counted<IceTransportWithTransportChannel>( P2PTransportChannel::Create("standalone", ICE_CANDIDATE_COMPONENT_RTP, diff --git a/third_party/libwebrtc/api/ice_transport_factory.h b/third_party/libwebrtc/api/ice_transport_factory.h @@ -13,7 +13,6 @@ #include "api/ice_transport_interface.h" #include "api/scoped_refptr.h" -#include "p2p/base/port_allocator.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -22,16 +21,6 @@ namespace webrtc { // without using a PeerConnection. // The returned object must be accessed and destroyed on the thread that // created it. -// The PortAllocator must outlive the created IceTransportInterface object. -// TODO(steveanton): Remove in favor of the overload that takes -// IceTransportInit. -RTC_EXPORT scoped_refptr<IceTransportInterface> CreateIceTransport( - PortAllocator* port_allocator); - -// Static factory for an IceTransport object that can be created -// without using a PeerConnection. -// The returned object must be accessed and destroyed on the thread that -// created it. // `init.port_allocator()` is required and must outlive the created // IceTransportInterface object. // `init.async_resolver_factory()` and `init.event_log()` are optional, but if diff --git a/third_party/libwebrtc/api/ice_transport_interface.h b/third_party/libwebrtc/api/ice_transport_interface.h @@ -14,6 +14,7 @@ #include <string> #include "api/async_dns_resolver.h" +#include "api/environment/environment.h" #include "api/local_network_access_permission.h" #include "api/ref_count.h" #include "api/rtc_event_log/rtc_event_log.h" @@ -40,9 +41,9 @@ class IceTransportInterface : public RefCountInterface { virtual IceTransportInternal* internal() = 0; }; -struct IceTransportInit final { +class IceTransportInit final { public: - IceTransportInit() = default; + explicit IceTransportInit(const Environment& env) : env_(env) {} IceTransportInit(const IceTransportInit&) = delete; IceTransportInit(IceTransportInit&&) = default; IceTransportInit& operator=(const IceTransportInit&) = delete; @@ -70,8 +71,7 @@ struct IceTransportInit final { lna_permission_factory_ = lna_permission_factory; } - RtcEventLog* event_log() { return event_log_; } - void set_event_log(RtcEventLog* event_log) { event_log_ = event_log; } + RtcEventLog* event_log() { return &env_.event_log(); } void set_ice_controller_factory( IceControllerFactoryInterface* ice_controller_factory) { @@ -100,20 +100,18 @@ struct IceTransportInit final { return active_ice_controller_factory_; } - const FieldTrialsView* field_trials() { return field_trials_; } - void set_field_trials(const FieldTrialsView* field_trials) { - field_trials_ = field_trials; - } + const FieldTrialsView* field_trials() { return &env_.field_trials(); } + + const Environment& env() { return env_; } private: + Environment env_; PortAllocator* port_allocator_ = nullptr; AsyncDnsResolverFactoryInterface* async_dns_resolver_factory_ = nullptr; LocalNetworkAccessPermissionFactoryInterface* lna_permission_factory_ = nullptr; - RtcEventLog* event_log_ = nullptr; IceControllerFactoryInterface* ice_controller_factory_ = nullptr; ActiveIceControllerFactoryInterface* active_ice_controller_factory_ = nullptr; - const FieldTrialsView* field_trials_ = nullptr; // TODO(https://crbug.com/webrtc/12657): Redesign to have const members. }; diff --git a/third_party/libwebrtc/moz-patch-stack/p0001.patch b/third_party/libwebrtc/moz-patch-stack/p0001.patch @@ -35,7 +35,7 @@ Cr-Branched-From: 9bd64751d9b3b35a820cb72c9029993e218146a1-refs/heads/main@{#452 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/p2p/dtls/dtls_ice_integrationtest.cc b/p2p/dtls/dtls_ice_integrationtest.cc -index 339238d664..1610f0002a 100644 +index c0011ca677..b6b8d40b5d 100644 --- a/p2p/dtls/dtls_ice_integrationtest.cc +++ b/p2p/dtls/dtls_ice_integrationtest.cc @@ -127,11 +127,7 @@ class DtlsIceIntegrationTest : public ::testing::TestWithParam<std::tuple< diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -203,7 +203,7 @@ index ef07265bf3..348be89bb9 100644 } diff --git a/api/BUILD.gn b/api/BUILD.gn -index 5b25a93d90..a9adaab17d 100644 +index 2bbbbfa250..0c872b913e 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -44,6 +44,9 @@ rtc_library("enable_media") { @@ -225,7 +225,7 @@ index 5b25a93d90..a9adaab17d 100644 rtc_library("create_peerconnection_factory") { visibility = [ "*" ] allow_poison = [ "environment_construction" ] -@@ -238,6 +241,10 @@ rtc_source_set("ice_transport_interface") { +@@ -239,6 +242,10 @@ rtc_source_set("ice_transport_interface") { } rtc_library("dtls_transport_interface") { @@ -236,7 +236,7 @@ index 5b25a93d90..a9adaab17d 100644 visibility = [ "*" ] sources = [ -@@ -254,6 +261,7 @@ rtc_library("dtls_transport_interface") { +@@ -255,6 +262,7 @@ rtc_library("dtls_transport_interface") { "//third_party/abseil-cpp/absl/base:core_headers", ] } @@ -244,7 +244,7 @@ index 5b25a93d90..a9adaab17d 100644 rtc_library("dtmf_sender_interface") { visibility = [ "*" ] -@@ -266,6 +274,10 @@ rtc_library("dtmf_sender_interface") { +@@ -267,6 +275,10 @@ rtc_library("dtmf_sender_interface") { } rtc_library("rtp_sender_interface") { @@ -255,7 +255,7 @@ index 5b25a93d90..a9adaab17d 100644 visibility = [ "*" ] sources = [ -@@ -280,6 +292,7 @@ rtc_library("rtp_sender_interface") { +@@ -281,6 +293,7 @@ rtc_library("rtp_sender_interface") { ":ref_count", ":rtc_error", ":rtp_parameters", @@ -263,7 +263,7 @@ index 5b25a93d90..a9adaab17d 100644 ":scoped_refptr", "../rtc_base:checks", "../rtc_base/system:rtc_export", -@@ -288,6 +301,20 @@ rtc_library("rtp_sender_interface") { +@@ -289,6 +302,20 @@ rtc_library("rtp_sender_interface") { "//third_party/abseil-cpp/absl/functional:any_invocable", ] } @@ -284,7 +284,7 @@ index 5b25a93d90..a9adaab17d 100644 # TODO: bugs.webrtc.org/42220069 - Remove when downstream has been updated # to depend on `create_modular_peer_connection_factory` instead. -@@ -301,6 +328,7 @@ rtc_source_set("create_modular_peer_connection_factory_internal") { +@@ -302,6 +329,7 @@ rtc_source_set("create_modular_peer_connection_factory_internal") { } rtc_library("libjingle_peerconnection_api") { @@ -292,7 +292,7 @@ index 5b25a93d90..a9adaab17d 100644 visibility = [ "*" ] cflags = [] sources = [ -@@ -428,6 +456,7 @@ rtc_library("libjingle_peerconnection_api") { +@@ -429,6 +457,7 @@ rtc_library("libjingle_peerconnection_api") { "../rtc_base/system:rtc_export", ] } @@ -300,7 +300,7 @@ index 5b25a93d90..a9adaab17d 100644 rtc_library("frame_transformer_interface") { visibility = [ "*" ] -@@ -647,6 +676,7 @@ rtc_source_set("peer_network_dependencies") { +@@ -648,6 +677,7 @@ rtc_source_set("peer_network_dependencies") { } rtc_source_set("peer_connection_quality_test_fixture_api") { @@ -308,7 +308,7 @@ index 5b25a93d90..a9adaab17d 100644 visibility = [ "*" ] testonly = true sources = [ "test/peerconnection_quality_test_fixture.h" ] -@@ -691,6 +721,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") { +@@ -692,6 +722,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") { "//third_party/abseil-cpp/absl/strings:string_view", ] } @@ -316,7 +316,7 @@ index 5b25a93d90..a9adaab17d 100644 rtc_library("frame_generator_api") { visibility = [ "*" ] -@@ -796,6 +827,7 @@ rtc_library("create_frame_generator") { +@@ -797,6 +828,7 @@ rtc_library("create_frame_generator") { ] } @@ -324,7 +324,7 @@ index 5b25a93d90..a9adaab17d 100644 rtc_library("create_peer_connection_quality_test_frame_generator") { visibility = [ "*" ] testonly = true -@@ -813,6 +845,7 @@ rtc_library("create_peer_connection_quality_test_frame_generator") { +@@ -814,6 +846,7 @@ rtc_library("create_peer_connection_quality_test_frame_generator") { "units:time_delta", ] } @@ -332,7 +332,7 @@ index 5b25a93d90..a9adaab17d 100644 rtc_source_set("data_channel_event_observer_interface") { visibility = [ "*" ] -@@ -1005,6 +1038,7 @@ rtc_source_set("refcountedbase") { +@@ -1006,6 +1039,7 @@ rtc_source_set("refcountedbase") { } rtc_library("ice_transport_factory") { @@ -340,7 +340,7 @@ index 5b25a93d90..a9adaab17d 100644 visibility = [ "*" ] sources = [ "ice_transport_factory.cc", -@@ -1028,6 +1062,7 @@ rtc_library("ice_transport_factory") { +@@ -1029,6 +1063,7 @@ rtc_library("ice_transport_factory") { "rtc_event_log", ] } diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch @@ -126,7 +126,7 @@ index b602b8d2ce..4603ed3cfd 100644 "Generated during 'gn gen' by //BUILD.gn.", "", diff --git a/api/BUILD.gn b/api/BUILD.gn -index a9adaab17d..9544232d23 100644 +index 0c872b913e..81e97605ce 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -8,8 +8,8 @@ diff --git a/third_party/libwebrtc/p2p/BUILD.gn b/third_party/libwebrtc/p2p/BUILD.gn @@ -486,6 +486,7 @@ rtc_library("p2p_transport_channel") { "../api:local_network_access_permission", "../api:rtc_error", "../api:sequence_checker", + "../api/environment", "../api/task_queue:pending_task_safety_flag", "../api/transport:enums", "../api/transport:stun_types", diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel.cc b/third_party/libwebrtc/p2p/base/p2p_transport_channel.cc @@ -32,6 +32,7 @@ #include "api/array_view.h" #include "api/async_dns_resolver.h" #include "api/candidate.h" +#include "api/environment/environment.h" #include "api/field_trials_view.h" #include "api/ice_transport_interface.h" #include "api/local_network_access_permission.h" @@ -138,18 +139,35 @@ std::unique_ptr<P2PTransportChannel> P2PTransportChannel::Create( int component, IceTransportInit init) { return absl::WrapUnique(new P2PTransportChannel( - transport_name, component, init.port_allocator(), + 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())); } +P2PTransportChannel::P2PTransportChannel(const Environment& env, + absl::string_view transport_name, + int component, + PortAllocator* allocator) + : P2PTransportChannel(env, + transport_name, + component, + allocator, + /* 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(transport_name, + : P2PTransportChannel(/*env=*/std::nullopt, + transport_name, component, allocator, /* async_dns_resolver_factory= */ nullptr, @@ -162,6 +180,7 @@ P2PTransportChannel::P2PTransportChannel(absl::string_view transport_name, // Private constructor, called from Create() P2PTransportChannel::P2PTransportChannel( + std::optional<Environment> env, absl::string_view transport_name, int component, PortAllocator* allocator, @@ -173,7 +192,8 @@ P2PTransportChannel::P2PTransportChannel( IceControllerFactoryInterface* ice_controller_factory, ActiveIceControllerFactoryInterface* active_ice_controller_factory, const FieldTrialsView* field_trials) - : transport_name_(transport_name), + : env_(env), + transport_name_(transport_name), component_(component), allocator_(allocator), // If owned_dns_resolver_factory is given, async_dns_resolver_factory is diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel.h b/third_party/libwebrtc/p2p/base/p2p_transport_channel.h @@ -33,6 +33,7 @@ #include "api/array_view.h" #include "api/async_dns_resolver.h" #include "api/candidate.h" +#include "api/environment/environment.h" #include "api/ice_transport_interface.h" #include "api/local_network_access_permission.h" #include "api/rtc_error.h" @@ -106,6 +107,13 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, // For testing only. // TODO(zstein): Remove once AsyncDnsResolverFactory is required. + P2PTransportChannel(const Environment& env, + absl::string_view transport_name, + 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, @@ -285,6 +293,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, }; P2PTransportChannel( + std::optional<Environment> env, absl::string_view transport_name, int component, PortAllocator* allocator, @@ -443,6 +452,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal, const StunByteStringAttribute*); void GoogDeltaAckReceived(RTCErrorOr<const StunUInt64Attribute*>); + const std::optional<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_); diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel_unittest.cc b/third_party/libwebrtc/p2p/base/p2p_transport_channel_unittest.cc @@ -482,11 +482,10 @@ class P2PTransportChannelTestBase : public ::testing::Test, int component, const IceParameters& local_ice, const IceParameters& remote_ice) { - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(GetAllocator(endpoint)); init.set_async_dns_resolver_factory( GetEndpoint(endpoint)->async_dns_resolver_factory_); - init.set_field_trials(&env.field_trials()); auto channel = P2PTransportChannel::Create("test content name", component, std::move(init)); channel->SignalReadyToSend.connect( @@ -3801,7 +3800,7 @@ class P2PTransportChannelPingTest : public ::testing::Test, TEST_F(P2PTransportChannelPingTest, TestTriggeredChecks) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("trigger checks", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "trigger checks", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); ch.AddRemoteCandidate( @@ -3828,7 +3827,7 @@ TEST_F(P2PTransportChannelPingTest, TestTriggeredChecks) { TEST_F(P2PTransportChannelPingTest, TestAllConnectionsPingedSufficiently) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("ping sufficiently", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "ping sufficiently", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); ch.AddRemoteCandidate( @@ -3861,7 +3860,7 @@ TEST_F(P2PTransportChannelPingTest, TestStunPingIntervals) { int RTT_RANGE = 10; FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("TestChannel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "TestChannel", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); ch.AddRemoteCandidate( @@ -3952,7 +3951,7 @@ TEST_F(P2PTransportChannelPingTest, PingingStartedAsSoonAsPossible) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("TestChannel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "TestChannel", 1, &pa); ch.SetIceRole(ICEROLE_CONTROLLING); ch.SetIceParameters(kIceParams[0]); ch.MaybeStartGathering(); @@ -3993,7 +3992,7 @@ TEST_F(P2PTransportChannelPingTest, PingingStartedAsSoonAsPossible) { TEST_F(P2PTransportChannelPingTest, TestNoTriggeredChecksWhenWritable) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("trigger checks", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "trigger checks", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); ch.AddRemoteCandidate( @@ -4021,8 +4020,7 @@ TEST_F(P2PTransportChannelPingTest, TestNoTriggeredChecksWhenWritable) { TEST_F(P2PTransportChannelPingTest, TestFailedConnectionNotPingable) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("Do not ping failed connections", 1, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "Do not ping failed connections", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); ch.AddRemoteCandidate( @@ -4041,7 +4039,7 @@ TEST_F(P2PTransportChannelPingTest, TestFailedConnectionNotPingable) { TEST_F(P2PTransportChannelPingTest, TestSignalStateChanged) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "state change", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); ch.AddRemoteCandidate( @@ -4066,7 +4064,7 @@ TEST_F(P2PTransportChannelPingTest, TestSignalStateChanged) { TEST_F(P2PTransportChannelPingTest, TestAddRemoteCandidateWithVariousUfrags) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("add candidate", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "add candidate", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); // Add a candidate with a future ufrag. @@ -4121,8 +4119,7 @@ TEST_F(P2PTransportChannelPingTest, TestAddRemoteCandidateWithVariousUfrags) { TEST_F(P2PTransportChannelPingTest, ConnectionResurrection) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("connection resurrection", 1, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "connection resurrection", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); @@ -4181,7 +4178,7 @@ TEST_F(P2PTransportChannelPingTest, TestReceivingStateChange) { ScopedFakeClock clock; const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); // Default receiving timeout and checking receiving interval should not be too // small. @@ -4216,7 +4213,7 @@ TEST_F(P2PTransportChannelPingTest, TestReceivingStateChange) { TEST_F(P2PTransportChannelPingTest, TestSelectConnectionBeforeNomination) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4315,7 +4312,7 @@ TEST_F(P2PTransportChannelPingTest, TestPingOnNomination) { const Environment env = CreateEnvironment(CreateTestFieldTrialsPtr( "WebRTC-IceFieldTrials/send_ping_on_nomination_ice_controlled:true/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.SetIceRole(ICEROLE_CONTROLLED); @@ -4361,7 +4358,7 @@ TEST_F(P2PTransportChannelPingTest, TestPingOnSwitch) { const Environment env = CreateEnvironment(CreateTestFieldTrialsPtr( "WebRTC-IceFieldTrials/send_ping_on_switch_ice_controlling:true/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.SetIceRole(ICEROLE_CONTROLLING); @@ -4404,7 +4401,7 @@ TEST_F(P2PTransportChannelPingTest, TestPingOnSelected) { const Environment env = CreateEnvironment(CreateTestFieldTrialsPtr( "WebRTC-IceFieldTrials/send_ping_on_selected_ice_controlling:true/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.SetIceRole(ICEROLE_CONTROLLING); @@ -4436,7 +4433,7 @@ TEST_F(P2PTransportChannelPingTest, TestPingOnSelected) { TEST_F(P2PTransportChannelPingTest, TestSelectConnectionFromUnknownAddress) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4519,7 +4516,7 @@ TEST_F(P2PTransportChannelPingTest, TestSelectConnectionFromUnknownAddress) { TEST_F(P2PTransportChannelPingTest, TestSelectConnectionBasedOnMediaReceived) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("receiving state change", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "receiving state change", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4583,8 +4580,7 @@ TEST_F(P2PTransportChannelPingTest, const Environment env = CreateEnvironment(); clock.AdvanceTime(TimeDelta::Seconds(1)); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("SwitchSelectedConnection", 1, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "SwitchSelectedConnection", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4638,8 +4634,7 @@ TEST_F(P2PTransportChannelPingTest, const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("SwitchSelectedConnection", 1, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "SwitchSelectedConnection", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4682,7 +4677,7 @@ TEST_F(P2PTransportChannelPingTest, const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4730,7 +4725,7 @@ TEST_F(P2PTransportChannelPingTest, TestEstimatedDisconnectedTime) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4792,7 +4787,7 @@ TEST_F(P2PTransportChannelPingTest, const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4811,8 +4806,7 @@ TEST_F(P2PTransportChannelPingTest, const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("SwitchSelectedConnection", 1, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "SwitchSelectedConnection", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4860,7 +4854,7 @@ TEST_F(P2PTransportChannelPingTest, TEST_F(P2PTransportChannelPingTest, TestAddRemoteCandidateWithAddressReuse) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("candidate reuse", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "candidate reuse", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); const std::string host_address = "1.1.1.1"; @@ -4901,7 +4895,7 @@ TEST_F(P2PTransportChannelPingTest, TestDontPruneWhenWeak) { clock.AdvanceTime(TimeDelta::Seconds(1)); const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4943,7 +4937,7 @@ TEST_F(P2PTransportChannelPingTest, TestDontPruneHighPriorityConnections) { ScopedFakeClock clock; const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -4969,7 +4963,7 @@ TEST_F(P2PTransportChannelPingTest, TestGetState) { clock.AdvanceTime(TimeDelta::Seconds(1)); const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); EXPECT_EQ(IceTransportState::kNew, ch.GetIceTransportState()); PrepareChannel(&ch); ch.MaybeStartGathering(); @@ -5016,7 +5010,7 @@ TEST_F(P2PTransportChannelPingTest, TestConnectionPrunedAgain) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); IceConfig config = CreateIceConfig(1000, GATHER_ONCE); config.receiving_switching_delay = 800; @@ -5077,7 +5071,7 @@ TEST_F(P2PTransportChannelPingTest, TestDeleteConnectionsIfAllWriteTimedout) { ScopedFakeClock clock; const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.MaybeStartGathering(); // Have one connection only but later becomes write-time-out. @@ -5115,7 +5109,7 @@ TEST_F(P2PTransportChannelPingTest, TestDeleteConnectionsIfAllWriteTimedout) { TEST_F(P2PTransportChannelPingTest, TestStopPortAllocatorSessions) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(CreateIceConfig(2000, GATHER_ONCE)); ch.MaybeStartGathering(); @@ -5151,8 +5145,8 @@ TEST_F(P2PTransportChannelPingTest, TestStopPortAllocatorSessions) { TEST_F(P2PTransportChannelPingTest, TestIceRoleUpdatedOnRemovedPort) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", ICE_CANDIDATE_COMPONENT_DEFAULT, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "test channel", ICE_CANDIDATE_COMPONENT_DEFAULT, + &pa); // Starts with ICEROLE_CONTROLLING. PrepareChannel(&ch); IceConfig config = CreateIceConfig(1000, GATHER_CONTINUALLY); @@ -5179,8 +5173,8 @@ TEST_F(P2PTransportChannelPingTest, TestIceRoleUpdatedOnRemovedPort) { TEST_F(P2PTransportChannelPingTest, TestIceRoleUpdatedOnPortAfterIceRestart) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", ICE_CANDIDATE_COMPONENT_DEFAULT, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "test channel", ICE_CANDIDATE_COMPONENT_DEFAULT, + &pa); // Starts with ICEROLE_CONTROLLING. PrepareChannel(&ch); ch.MaybeStartGathering(); @@ -5206,8 +5200,8 @@ TEST_F(P2PTransportChannelPingTest, TestPortDestroyedAfterTimeoutAndPruned) { const Environment env = CreateEnvironment(); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", ICE_CANDIDATE_COMPONENT_DEFAULT, &pa, - &env.field_trials()); + P2PTransportChannel ch(env, "test channel", ICE_CANDIDATE_COMPONENT_DEFAULT, + &pa); PrepareChannel(&ch); ch.SetIceRole(ICEROLE_CONTROLLED); ch.MaybeStartGathering(); @@ -5241,7 +5235,7 @@ TEST_F(P2PTransportChannelPingTest, TestMaxOutstandingPingsFieldTrial) { const Environment env = CreateEnvironment(CreateTestFieldTrialsPtr( "WebRTC-IceFieldTrials/max_outstanding_pings:3/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("max", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "max", 1, &pa); ch.SetIceConfig(ch.config()); PrepareChannel(&ch); ch.MaybeStartGathering(); @@ -5291,8 +5285,8 @@ class P2PTransportChannelMostLikelyToWorkFirstTest const Environment& env, bool prioritize_most_likely_to_work, int stable_writable_connection_ping_interval) { - channel_ = std::make_unique<P2PTransportChannel>( - "checks", 1, port_allocator_.get(), &env.field_trials()); + channel_ = std::make_unique<P2PTransportChannel>(env, "checks", 1, + port_allocator_.get()); IceConfig config = channel_->config(); config.prioritize_most_likely_candidate_pairs = prioritize_most_likely_to_work; @@ -5570,10 +5564,9 @@ TEST(P2PTransportChannelResolverTest, HostnameCandidateIsResolved) { std::unique_ptr<SocketServer> socket_server = CreateDefaultSocketServer(); AutoSocketServerThread main_thread(socket_server.get()); FakePortAllocator allocator(env, socket_server.get()); - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(&allocator); init.set_async_dns_resolver_factory(&resolver_fixture); - init.set_field_trials(&env.field_trials()); auto channel = P2PTransportChannel::Create("tn", 0, std::move(init)); Candidate hostname_candidate; SocketAddress hostname_address("fake.test", 1000); @@ -6495,7 +6488,7 @@ TEST_F(P2PTransportChannelPingTest, TestInitialSelectDampening0) { "WebRTC-IceFieldTrials/initial_select_dampening:0/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.MaybeStartGathering(); @@ -6522,7 +6515,7 @@ TEST_F(P2PTransportChannelPingTest, TestInitialSelectDampening) { "WebRTC-IceFieldTrials/initial_select_dampening:100/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.MaybeStartGathering(); @@ -6549,7 +6542,7 @@ TEST_F(P2PTransportChannelPingTest, TestInitialSelectDampeningPingReceived) { "WebRTC-IceFieldTrials/initial_select_dampening_ping_received:100/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.MaybeStartGathering(); @@ -6579,7 +6572,7 @@ TEST_F(P2PTransportChannelPingTest, TestInitialSelectDampeningBoth) { "50/")); FakePortAllocator pa(env, ss()); - P2PTransportChannel ch("test channel", 1, &pa, &env.field_trials()); + P2PTransportChannel ch(env, "test channel", 1, &pa); PrepareChannel(&ch); ch.SetIceConfig(ch.config()); ch.MaybeStartGathering(); @@ -6607,10 +6600,9 @@ TEST(P2PTransportChannelIceControllerTest, InjectIceController) { MockIceControllerFactory factory; FakePortAllocator pa(env, socket_server.get()); EXPECT_CALL(factory, RecordIceControllerCreated()).Times(1); - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(&pa); init.set_ice_controller_factory(&factory); - init.set_field_trials(&env.field_trials()); auto dummy = P2PTransportChannel::Create("transport_name", /* component= */ 77, std::move(init)); @@ -6623,10 +6615,9 @@ TEST(P2PTransportChannel, InjectActiveIceController) { MockActiveIceControllerFactory factory; FakePortAllocator pa(env, socket_server.get()); EXPECT_CALL(factory, RecordActiveIceControllerCreated()).Times(1); - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(&pa); init.set_active_ice_controller_factory(&factory); - init.set_field_trials(&env.field_trials()); auto dummy = P2PTransportChannel::Create("transport_name", /* component= */ 77, std::move(init)); @@ -6676,10 +6667,9 @@ TEST_F(P2PTransportChannelPingTest, TestForgetLearnedState) { const Environment env = CreateEnvironment(); ForgetLearnedStateControllerFactory factory; FakePortAllocator pa(env, ss()); - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(&pa); init.set_ice_controller_factory(&factory); - init.set_field_trials(&env.field_trials()); auto ch = P2PTransportChannel::Create("ping sufficiently", 1, std::move(init)); @@ -6821,9 +6811,8 @@ TEST_P(LocalNetworkAccessPermissionTest, LiteralAddresses) { FakeLocalNetworkAccessPermissionFactory lna_permission_factory( lna_fake_result); - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(&pa); - init.set_field_trials(&env.field_trials()); init.set_lna_permission_factory(&lna_permission_factory); auto ch = P2PTransportChannel::Create("foo", 1, std::move(init)); @@ -6856,9 +6845,8 @@ TEST_P(LocalNetworkAccessPermissionTest, UnresolvedAddresses) { ResolverFactoryFixture resolver_fixture; resolver_fixture.SetAddressToReturn({address, 5000}); - IceTransportInit init; + IceTransportInit init(env); init.set_port_allocator(&pa); - init.set_field_trials(&env.field_trials()); init.set_lna_permission_factory(&lna_permission_factory); init.set_async_dns_resolver_factory(&resolver_fixture); diff --git a/third_party/libwebrtc/p2p/dtls/dtls_ice_integrationtest.cc b/third_party/libwebrtc/p2p/dtls/dtls_ice_integrationtest.cc @@ -161,8 +161,8 @@ class DtlsIceIntegrationTest : public ::testing::TestWithParam<std::tuple< ep.allocator->set_flags(ep.allocator->flags() | PORTALLOCATOR_DISABLE_TCP); ep.ice = std::make_unique<P2PTransportChannel>( - client ? "client_transport" : "server_transport", 0, - ep.allocator.get(), &ep.env.field_trials()); + ep.env, client ? "client_transport" : "server_transport", 0, + ep.allocator.get()); CryptoOptions crypto_options; if (ep.pqc) { FieldTrials field_trials("WebRTC-EnableDtlsPqc/Enabled/"); diff --git a/third_party/libwebrtc/pc/ice_transport_unittest.cc b/third_party/libwebrtc/pc/ice_transport_unittest.cc @@ -13,7 +13,7 @@ #include <memory> #include <utility> -#include "api/environment/environment_factory.h" +#include "api/environment/environment.h" #include "api/ice_transport_factory.h" #include "api/ice_transport_interface.h" #include "api/make_ref_counted.h" @@ -23,6 +23,7 @@ #include "rtc_base/internal/default_socket_server.h" #include "rtc_base/socket_server.h" #include "rtc_base/thread.h" +#include "test/create_test_environment.h" #include "test/gtest.h" namespace webrtc { @@ -51,8 +52,9 @@ TEST_F(IceTransportTest, CreateNonSelfDeletingTransport) { } TEST_F(IceTransportTest, CreateSelfDeletingTransport) { - FakePortAllocator port_allocator(CreateEnvironment(), socket_server()); - IceTransportInit init; + Environment env = CreateTestEnvironment(); + FakePortAllocator port_allocator(env, socket_server()); + IceTransportInit init(env); init.set_port_allocator(&port_allocator); auto ice_transport = CreateIceTransport(std::move(init)); EXPECT_NE(nullptr, ice_transport->internal()); diff --git a/third_party/libwebrtc/pc/jsep_transport_controller.cc b/third_party/libwebrtc/pc/jsep_transport_controller.cc @@ -478,12 +478,10 @@ JsepTransportController::CreateIceTransport(const std::string& transport_name, int component = rtcp ? ICE_CANDIDATE_COMPONENT_RTCP : ICE_CANDIDATE_COMPONENT_RTP; - IceTransportInit init; + IceTransportInit init(env_); init.set_port_allocator(port_allocator_); init.set_async_dns_resolver_factory(async_dns_resolver_factory_); init.set_lna_permission_factory(lna_permission_factory_); - init.set_event_log(&env_.event_log()); - init.set_field_trials(&env_.field_trials()); auto transport = config_.ice_transport_factory->CreateIceTransport( transport_name, component, std::move(init)); RTC_DCHECK(transport);