tor-browser

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

commit 704c55b7ed72c7507f04df194500f6631f5fd496
parent 36cef7033ee3582fe756214410a9a951ffb6b8c1
Author: Michael Froman <mfroman@mozilla.com>
Date:   Thu,  9 Oct 2025 13:34:47 -0500

Bug 1993083 - Vendor libwebrtc from e578d783be

Upstream commit: https://webrtc.googlesource.com/src/+/e578d783beef3947698594a3f150ce841690b67a
    Add setAudioDeviceModuleBuilder in objc PeerConnectionFactoryBuilder

    This allow to create AudioDeviceModule that would share Environment and thus field trials with other components in the produced PeerConnectionFactory

    In particular AudioDeviceModule created by defaultBuilder would now reuse the same Environment as the rest of the PeerConnectionFactory

    Bug: webrtc:413413572
    Change-Id: Ia453ff36f1524a3f76769d35bd50905a02c38666
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/400040
    Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45143}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0055.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0099.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0103.patch | 4++--
Mthird_party/libwebrtc/sdk/BUILD.gn | 1+
Mthird_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.mm | 7++++---
Mthird_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.h | 5+++++
Mthird_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm | 18+++++++++++++++++-
Mthird_party/libwebrtc/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm | 21+++++++++++++++++++++
9 files changed, 55 insertions(+), 11 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-09T18:33:28.869732+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-09T18:34:37.895216+00:00. # base of lastest vendoring -094a2c3b1c +e578d783be diff --git a/third_party/libwebrtc/moz-patch-stack/s0055.patch b/third_party/libwebrtc/moz-patch-stack/s0055.patch @@ -26,7 +26,7 @@ index e90dd95b23..40063088f2 100644 deps += [ "logging:rtc_event_log_proto" ] } diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn -index 3db2086d9e..06da79a112 100644 +index 4c51abe540..c139173a83 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -576,6 +576,7 @@ if (is_ios || is_mac) { @@ -69,7 +69,7 @@ index 3db2086d9e..06da79a112 100644 rtc_library("videocodec_objc") { visibility = [ "*" ] configs += [ "..:no_global_constructors" ] -@@ -1823,5 +1828,6 @@ if (is_ios || is_mac) { +@@ -1824,5 +1829,6 @@ if (is_ios || is_mac) { "VideoToolbox.framework", ] } diff --git a/third_party/libwebrtc/moz-patch-stack/s0099.patch b/third_party/libwebrtc/moz-patch-stack/s0099.patch @@ -61,7 +61,7 @@ index 0aec2d94c7..83c1b21260 100644 } } diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn -index 06da79a112..a18d353a0e 100644 +index c139173a83..64be5f821c 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -637,6 +637,20 @@ if (is_ios || is_mac) { diff --git a/third_party/libwebrtc/moz-patch-stack/s0103.patch b/third_party/libwebrtc/moz-patch-stack/s0103.patch @@ -702,7 +702,7 @@ index 4fa98d73a2..72c01d50ab 100644 output_extension = "so" } diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn -index a18d353a0e..bf3f51badd 100644 +index 64be5f821c..b429d162f6 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -9,12 +9,12 @@ @@ -731,7 +731,7 @@ index a18d353a0e..bf3f51badd 100644 } } -@@ -1284,7 +1284,7 @@ if (is_ios || is_mac) { +@@ -1285,7 +1285,7 @@ if (is_ios || is_mac) { } public_deps = [ diff --git a/third_party/libwebrtc/sdk/BUILD.gn b/third_party/libwebrtc/sdk/BUILD.gn @@ -1150,6 +1150,7 @@ if (is_ios || is_mac) { "../api/audio_codecs:builtin_audio_encoder_factory", "../api/crypto:frame_decryptor_interface", "../api/crypto:frame_encryptor_interface", + "../api/environment", "../api/environment:environment_factory", "../api/rtc_event_log:rtc_event_log_factory", "../api/task_queue:default_task_queue_factory", diff --git a/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.mm b/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.mm @@ -19,7 +19,7 @@ #include "sdk/objc/native/api/video_encoder_factory.h" #if defined(WEBRTC_IOS) -#include "api/environment/environment_factory.h" +#include "api/environment/environment.h" #import "sdk/objc/native/api/audio_device_module.h" #endif @@ -43,8 +43,9 @@ [builder setVideoDecoderFactory:std::move(videoDecoderFactory)]; #if defined(WEBRTC_IOS) - [builder setAudioDeviceModule:webrtc::CreateAudioDeviceModule( - webrtc::CreateEnvironment())]; + [builder setAudioDeviceModuleBuilder:^(const webrtc::Environment &env) { + return webrtc::CreateAudioDeviceModule(env); + }]; #endif return builder; } diff --git a/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.h b/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.h @@ -14,6 +14,7 @@ #include "api/audio/audio_processing.h" #include "api/audio_codecs/audio_decoder_factory.h" #include "api/audio_codecs/audio_encoder_factory.h" +#include "api/environment/environment.h" #include "api/field_trials_view.h" #include "api/scoped_refptr.h" #include "api/video_codecs/video_decoder_factory.h" @@ -44,6 +45,10 @@ NS_ASSUME_NONNULL_BEGIN - (void)setAudioDeviceModule: (webrtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule; +- (void)setAudioDeviceModuleBuilder: + (webrtc::scoped_refptr<webrtc::AudioDeviceModule> (^)( + const webrtc::Environment &))audioDeviceModuleBuilder; + - (void)setAudioProcessingModule: (webrtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule; diff --git a/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm b/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm @@ -20,6 +20,8 @@ #include "api/video_codecs/video_encoder_factory.h" @implementation RTCPeerConnectionFactoryBuilder { + webrtc::scoped_refptr<webrtc::AudioDeviceModule> (^_audioDeviceModuleBuilder)( + const webrtc::Environment &); webrtc::PeerConnectionFactoryDependencies _dependencies; } @@ -28,6 +30,12 @@ } - (RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)createPeerConnectionFactory { + if (_audioDeviceModuleBuilder != nil) { + if (!_dependencies.env.has_value()) { + _dependencies.env = webrtc::CreateEnvironment(); + } + _dependencies.adm = _audioDeviceModuleBuilder(*_dependencies.env); + } return [[RTC_OBJC_TYPE(RTCPeerConnectionFactory) alloc] initWithMediaAndDependencies:_dependencies]; } @@ -58,7 +66,15 @@ - (void)setAudioDeviceModule: (webrtc::scoped_refptr<webrtc::AudioDeviceModule>)audioDeviceModule { - _dependencies.adm = std::move(audioDeviceModule); + _audioDeviceModuleBuilder = ^(const webrtc::Environment &) { + return audioDeviceModule; + }; +} + +- (void)setAudioDeviceModuleBuilder: + (webrtc::scoped_refptr<webrtc::AudioDeviceModule> (^)( + const webrtc::Environment &))audioDeviceModuleBuilder { + _audioDeviceModuleBuilder = audioDeviceModuleBuilder; } - (void)setAudioProcessingModule: diff --git a/third_party/libwebrtc/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm b/third_party/libwebrtc/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm @@ -51,6 +51,27 @@ extern "C" { OCMVerifyAll(factoryMock); } +- (void)testAudioDeviceModuleBuilder { + id factoryMock = + OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]); + OCMExpect([factoryMock alloc]).andReturn(factoryMock); + webrtc::PeerConnectionFactoryDependencies default_deps; + RTC_UNUSED([[[[factoryMock expect] andReturn:factoryMock] + ignoringNonObjectArgs] initWithMediaAndDependencies:default_deps]); + RTCPeerConnectionFactoryBuilder* builder = + [RTCPeerConnectionFactoryBuilder builder]; + __block int calledAdmBuilder = 0; + [builder setAudioDeviceModuleBuilder:^(const webrtc::Environment& env) { + calledAdmBuilder++; + return webrtc::scoped_refptr<webrtc::AudioDeviceModule>(nullptr); + }]; + RTC_OBJC_TYPE(RTCPeerConnectionFactory)* peerConnectionFactory = + [builder createPeerConnectionFactory]; + EXPECT_TRUE(peerConnectionFactory != nil); + EXPECT_EQ(calledAdmBuilder, 1); + OCMVerifyAll(factoryMock); +} + - (void)testDefaultComponentsBuilder { id factoryMock = OCMStrictClassMock([RTC_OBJC_TYPE(RTCPeerConnectionFactory) class]);