tor-browser

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

commit 54dea0ee5e9abc2e11b42d0e02c2183f5a610256
parent 8a1f877a3c5f4eda442d0b01ce08c5ae278104a4
Author: Dan Baker <dbaker@mozilla.com>
Date:   Thu, 23 Oct 2025 17:00:29 -0600

Bug 1995393 - Vendor libwebrtc from 496b7b5a10

Upstream commit: https://webrtc.googlesource.com/src/+/496b7b5a10d470c0feb4ad237753bf19bc02dd32
    Allow and prefer to propagate Environment into AudioDeviceBuffer

    When now deprecated constructor can be removed, AudioDeviceBuffer would
    be able to use propagated clock from the Environment instead of the
    global clock.

    Bug: webrtc:42223992
    Change-Id: I5f445118b5f04b616726b78dd0746c0e52863c87
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404622
    Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45369}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/modules/audio_device/BUILD.gn | 3+++
Mthird_party/libwebrtc/modules/audio_device/audio_device_buffer.cc | 9+++++++++
Mthird_party/libwebrtc/modules/audio_device/audio_device_buffer.h | 4++++
Mthird_party/libwebrtc/modules/audio_device/audio_device_impl.cc | 15++++++---------
Mthird_party/libwebrtc/modules/audio_device/audio_device_impl.h | 8+++-----
Mthird_party/libwebrtc/modules/audio_device/audio_device_unittest.cc | 6++----
Mthird_party/libwebrtc/modules/audio_device/fine_audio_buffer_unittest.cc | 5++---
Mthird_party/libwebrtc/modules/audio_device/include/audio_device_factory.cc | 21++++++++-------------
Mthird_party/libwebrtc/modules/audio_device/include/audio_device_factory.h | 17+++++++----------
Mthird_party/libwebrtc/modules/audio_device/include/test_audio_device.cc | 3+--
Mthird_party/libwebrtc/modules/audio_device/test_audio_device_impl_test.cc | 35++++++++++++++---------------------
Mthird_party/libwebrtc/modules/audio_device/win/audio_device_module_win.cc | 28++++++++++++++--------------
Mthird_party/libwebrtc/modules/audio_device/win/audio_device_module_win.h | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0027.patch | 14+++++++-------
Mthird_party/libwebrtc/moz-patch-stack/s0055.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0099.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0102.patch | 6+++---
Mthird_party/libwebrtc/sdk/BUILD.gn | 1+
Mthird_party/libwebrtc/sdk/objc/native/src/audio/audio_device_module_ios.mm | 3+--
Mthird_party/libwebrtc/sdk/objc/native/src/objc_audio_device.mm | 3+--
Mthird_party/libwebrtc/sdk/objc/unittests/RTCAudioDevice_xctest.mm | 17+++++++----------
Mthird_party/libwebrtc/video/video_quality_test.cc | 2+-
23 files changed, 102 insertions(+), 114 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-23T22:58:02.466647+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T23:00:17.260638+00:00. # base of lastest vendoring -8a0a775451 +496b7b5a10 diff --git a/third_party/libwebrtc/modules/audio_device/BUILD.gn b/third_party/libwebrtc/modules/audio_device/BUILD.gn @@ -64,6 +64,7 @@ if (!build_with_mozilla) { # See Bug 1820869. "../../api:array_view", "../../api:sequence_checker", "../../api/audio:audio_device", + "../../api/environment", "../../api/task_queue", "../../api/units:time_delta", "../../common_audio:common_audio_c", @@ -154,6 +155,7 @@ rtc_library("audio_device_module_from_input_and_output") { "../../api:scoped_refptr", "../../api:sequence_checker", "../../api/audio:audio_device", + "../../api/environment", "../../api/task_queue", "../../rtc_base:checks", "../../rtc_base:logging", @@ -484,6 +486,7 @@ if (rtc_include_tests && !build_with_chromium && !build_with_mozilla) { "../../rtc_base:timeutils", "../../rtc_base/synchronization:mutex", "../../system_wrappers", + "../../test:create_test_environment", "../../test:fileutils", "../../test:test_support", "../../test/time_controller", diff --git a/third_party/libwebrtc/modules/audio_device/audio_device_buffer.cc b/third_party/libwebrtc/modules/audio_device/audio_device_buffer.cc @@ -17,6 +17,7 @@ #include <optional> #include "api/audio/audio_device_defines.h" +#include "api/environment/environment.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_factory.h" #include "api/units/time_delta.h" @@ -47,6 +48,14 @@ static const size_t kMinValidCallTimeTimeInMilliseconds = static const double k2Pi = 6.28318530717959; #endif +AudioDeviceBuffer::AudioDeviceBuffer(const Environment& env, + bool create_detached) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + : AudioDeviceBuffer(&env.task_queue_factory(), create_detached) { +} +#pragma clang diagnostic pop + AudioDeviceBuffer::AudioDeviceBuffer(TaskQueueFactory* task_queue_factory, bool create_detached) : task_queue_(task_queue_factory->CreateTaskQueue( diff --git a/third_party/libwebrtc/modules/audio_device/audio_device_buffer.h b/third_party/libwebrtc/modules/audio_device/audio_device_buffer.h @@ -18,6 +18,7 @@ #include <optional> #include "api/audio/audio_device_defines.h" +#include "api/environment/environment.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_base.h" #include "api/task_queue/task_queue_factory.h" @@ -82,6 +83,9 @@ class AudioDeviceBuffer { // If `create_detached` is true, the created buffer can be used on another // thread compared to the one on which it was created. It's useful for // testing. + explicit AudioDeviceBuffer(const Environment& env, + bool create_detached = false); + [[deprecated("bugs.webrtc.org/42223992")]] explicit AudioDeviceBuffer(TaskQueueFactory* task_queue_factory, bool create_detached = false); virtual ~AudioDeviceBuffer(); diff --git a/third_party/libwebrtc/modules/audio_device/audio_device_impl.cc b/third_party/libwebrtc/modules/audio_device/audio_device_impl.cc @@ -20,7 +20,6 @@ #include "api/environment/environment.h" #include "api/make_ref_counted.h" #include "api/scoped_refptr.h" -#include "api/task_queue/task_queue_factory.h" #include "modules/audio_device/audio_device_generic.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" @@ -84,8 +83,7 @@ AudioDeviceModuleImpl::Create(const Environment& env, AudioLayer audio_layer) { } // Create the generic reference counted (platform independent) implementation. - auto audio_device = make_ref_counted<AudioDeviceModuleImpl>( - audio_layer, &env.task_queue_factory()); + auto audio_device = make_ref_counted<AudioDeviceModuleImpl>(env, audio_layer); // Ensure that the current platform is supported. if (audio_device->CheckPlatform() == -1) { @@ -106,20 +104,19 @@ AudioDeviceModuleImpl::Create(const Environment& env, AudioLayer audio_layer) { return audio_device; } -AudioDeviceModuleImpl::AudioDeviceModuleImpl( - AudioLayer audio_layer, - TaskQueueFactory* task_queue_factory) - : audio_layer_(audio_layer), audio_device_buffer_(task_queue_factory) { +AudioDeviceModuleImpl::AudioDeviceModuleImpl(const Environment& env, + AudioLayer audio_layer) + : audio_layer_(audio_layer), audio_device_buffer_(env) { RTC_DLOG(LS_INFO) << __FUNCTION__; } AudioDeviceModuleImpl::AudioDeviceModuleImpl( + const Environment& env, AudioLayer audio_layer, std::unique_ptr<AudioDeviceGeneric> audio_device, - TaskQueueFactory* task_queue_factory, bool create_detached) : audio_layer_(audio_layer), - audio_device_buffer_(task_queue_factory, create_detached), + audio_device_buffer_(env, create_detached), audio_device_(std::move(audio_device)) { RTC_DLOG(LS_INFO) << __FUNCTION__; } diff --git a/third_party/libwebrtc/modules/audio_device/audio_device_impl.h b/third_party/libwebrtc/modules/audio_device/audio_device_impl.h @@ -21,7 +21,6 @@ #include "api/audio/audio_device_defines.h" #include "api/environment/environment.h" #include "api/scoped_refptr.h" -#include "api/task_queue/task_queue_factory.h" #include "modules/audio_device/audio_device_buffer.h" namespace webrtc { @@ -49,13 +48,12 @@ class AudioDeviceModuleImpl : public AudioDeviceModuleForTest { const Environment& env, AudioLayer audio_layer); - AudioDeviceModuleImpl(AudioLayer audio_layer, - TaskQueueFactory* task_queue_factory); + AudioDeviceModuleImpl(const Environment& env, AudioLayer audio_layer); // If `create_detached` is true, created ADM can be used on another thread // compared to the one on which it was created. It's useful for testing. - AudioDeviceModuleImpl(AudioLayer audio_layer, + AudioDeviceModuleImpl(const Environment& env, + AudioLayer audio_layer, std::unique_ptr<AudioDeviceGeneric> audio_device, - TaskQueueFactory* task_queue_factory, bool create_detached); ~AudioDeviceModuleImpl() override; diff --git a/third_party/libwebrtc/modules/audio_device/audio_device_unittest.cc b/third_party/libwebrtc/modules/audio_device/audio_device_unittest.cc @@ -606,8 +606,7 @@ class MAYBE_AudioDeviceTest EXPECT_TRUE(com_initializer_->Succeeded()); EXPECT_TRUE(webrtc_win::core_audio_utility::IsSupported()); EXPECT_TRUE(webrtc_win::core_audio_utility::IsMMCSSSupported()); - return CreateWindowsCoreAudioAudioDeviceModuleForTest( - &env_.task_queue_factory(), true); + return CreateWindowsCoreAudioAudioDeviceModuleForTest(env_, true); #else return nullptr; #endif @@ -697,8 +696,7 @@ TEST(MAYBE_AudioDeviceTestWin, ConstructDestructWithFactory) { // new ADM for Windows must be created on a COM thread. ScopedCOMInitializer com_initializer(ScopedCOMInitializer::kMTA); EXPECT_TRUE(com_initializer.Succeeded()); - audio_device = - CreateWindowsCoreAudioAudioDeviceModule(&env.task_queue_factory()); + audio_device = CreateWindowsCoreAudioAudioDeviceModule(env); EXPECT_TRUE(audio_device); AudioDeviceModule::AudioLayer audio_layer; EXPECT_EQ(0, audio_device->ActiveAudioLayer(&audio_layer)); diff --git a/third_party/libwebrtc/modules/audio_device/fine_audio_buffer_unittest.cc b/third_party/libwebrtc/modules/audio_device/fine_audio_buffer_unittest.cc @@ -15,8 +15,8 @@ #include <memory> #include "api/array_view.h" -#include "api/task_queue/default_task_queue_factory.h" #include "modules/audio_device/mock_audio_device_buffer.h" +#include "test/create_test_environment.h" #include "test/gmock.h" #include "test/gtest.h" @@ -93,8 +93,7 @@ void RunFineBufferTest(int frame_size_in_samples) { const int kNumberOfUpdateBufferCalls = 1 + ((kNumberOfFrames * frame_size_in_samples - 1) / kSamplesPer10Ms); - auto task_queue_factory = CreateDefaultTaskQueueFactory(); - MockAudioDeviceBuffer audio_device_buffer(task_queue_factory.get()); + MockAudioDeviceBuffer audio_device_buffer(CreateTestEnvironment()); audio_device_buffer.SetPlayoutSampleRate(kSampleRate); audio_device_buffer.SetPlayoutChannels(kChannels); audio_device_buffer.SetRecordingSampleRate(kSampleRate); diff --git a/third_party/libwebrtc/modules/audio_device/include/audio_device_factory.cc b/third_party/libwebrtc/modules/audio_device/include/audio_device_factory.cc @@ -10,7 +10,8 @@ #include "modules/audio_device/include/audio_device_factory.h" -#include <memory> +#include "api/environment/environment.h" +#include "rtc_base/logging.h" #if defined(WEBRTC_WIN) #include "modules/audio_device/win/audio_device_module_win.h" @@ -19,23 +20,18 @@ #include "modules/audio_device/win/core_audio_utility_win.h" #endif -#include "api/task_queue/task_queue_factory.h" -#include "rtc_base/logging.h" - namespace webrtc { webrtc::scoped_refptr<AudioDeviceModule> -CreateWindowsCoreAudioAudioDeviceModule(TaskQueueFactory* task_queue_factory, +CreateWindowsCoreAudioAudioDeviceModule(const Environment& env, bool automatic_restart) { RTC_DLOG(LS_INFO) << __FUNCTION__; - return CreateWindowsCoreAudioAudioDeviceModuleForTest(task_queue_factory, - automatic_restart); + return CreateWindowsCoreAudioAudioDeviceModuleForTest(env, automatic_restart); } webrtc::scoped_refptr<AudioDeviceModuleForTest> -CreateWindowsCoreAudioAudioDeviceModuleForTest( - TaskQueueFactory* task_queue_factory, - bool automatic_restart) { +CreateWindowsCoreAudioAudioDeviceModuleForTest(const Environment& env, + bool automatic_restart) { RTC_DLOG(LS_INFO) << __FUNCTION__; // Returns NULL if Core Audio is not supported or if COM has not been // initialized correctly using ScopedCOMInitializer. @@ -45,9 +41,8 @@ CreateWindowsCoreAudioAudioDeviceModuleForTest( return nullptr; } return CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput( - std::make_unique<webrtc_win::CoreAudioInput>(automatic_restart), - std::make_unique<webrtc_win::CoreAudioOutput>(automatic_restart), - task_queue_factory); + env, std::make_unique<webrtc_win::CoreAudioInput>(automatic_restart), + std::make_unique<webrtc_win::CoreAudioOutput>(automatic_restart)); } } // namespace webrtc diff --git a/third_party/libwebrtc/modules/audio_device/include/audio_device_factory.h b/third_party/libwebrtc/modules/audio_device/include/audio_device_factory.h @@ -11,10 +11,9 @@ #ifndef MODULES_AUDIO_DEVICE_INCLUDE_AUDIO_DEVICE_FACTORY_H_ #define MODULES_AUDIO_DEVICE_INCLUDE_AUDIO_DEVICE_FACTORY_H_ -#include <memory> - #include "api/audio/audio_device.h" -#include "api/task_queue/task_queue_factory.h" +#include "api/environment/environment.h" +#include "api/scoped_refptr.h" namespace webrtc { @@ -28,7 +27,7 @@ namespace webrtc { // // public: // scoped_refptr<AudioDeviceModule> CreateAudioDevice() { -// task_queue_factory_ = CreateDefaultTaskQueueFactory(); +// Environment env = CreateEnvironment(); // // Tell COM that this thread shall live in the MTA. // com_initializer_ = std::make_unique<ScopedCOMInitializer>( // ScopedCOMInitializer::kMTA); @@ -37,8 +36,7 @@ namespace webrtc { // } // // Create the ADM with support for automatic restart if devices are // // unplugged. -// return CreateWindowsCoreAudioAudioDeviceModule( -// task_queue_factory_.get()); +// return CreateWindowsCoreAudioAudioDeviceModule(env); // } // // private: @@ -46,13 +44,12 @@ namespace webrtc { // std::unique_ptr<TaskQueueFactory> task_queue_factory_; // webrtc::scoped_refptr<AudioDeviceModule> -CreateWindowsCoreAudioAudioDeviceModule(TaskQueueFactory* task_queue_factory, +CreateWindowsCoreAudioAudioDeviceModule(const Environment& env, bool automatic_restart = true); webrtc::scoped_refptr<AudioDeviceModuleForTest> -CreateWindowsCoreAudioAudioDeviceModuleForTest( - TaskQueueFactory* task_queue_factory, - bool automatic_restart = true); +CreateWindowsCoreAudioAudioDeviceModuleForTest(const Environment& env, + bool automatic_restart = true); } // namespace webrtc diff --git a/third_party/libwebrtc/modules/audio_device/include/test_audio_device.cc b/third_party/libwebrtc/modules/audio_device/include/test_audio_device.cc @@ -429,10 +429,9 @@ scoped_refptr<AudioDeviceModule> TestAudioDeviceModule::Create( std::unique_ptr<TestAudioDeviceModule::Renderer> renderer, float speed) { auto audio_device = make_ref_counted<AudioDeviceModuleImpl>( - AudioDeviceModule::AudioLayer::kDummyAudio, + env, AudioDeviceModule::AudioLayer::kDummyAudio, std::make_unique<TestAudioDevice>(env, std::move(capturer), std::move(renderer), speed), - &env.task_queue_factory(), /*create_detached=*/true); // Ensure that the current platform is supported. diff --git a/third_party/libwebrtc/modules/audio_device/test_audio_device_impl_test.cc b/third_party/libwebrtc/modules/audio_device/test_audio_device_impl_test.cc @@ -18,7 +18,7 @@ #include <vector> #include "api/audio/audio_device_defines.h" -#include "api/environment/environment_factory.h" +#include "api/environment/environment.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "modules/audio_device/audio_device_buffer.h" @@ -27,6 +27,7 @@ #include "rtc_base/checks.h" #include "rtc_base/synchronization/mutex.h" #include "rtc_base/thread_annotations.h" +#include "test/create_test_environment.h" #include "test/gmock.h" #include "test/gtest.h" #include "test/time_controller/simulated_time_controller.h" @@ -153,19 +154,17 @@ class TestAudioTransport : public AudioTransport { TEST(TestAudioDeviceTest, EnablingRecordingProducesAudio) { GlobalSimulatedTimeController time_controller(kStartTime); + const Environment env = CreateTestEnvironment({.time = &time_controller}); TestAudioTransport audio_transport(TestAudioTransport::Mode::kRecording); - AudioDeviceBuffer audio_buffer(time_controller.GetTaskQueueFactory()); + AudioDeviceBuffer audio_buffer(env); ASSERT_EQ(audio_buffer.RegisterAudioCallback(&audio_transport), 0); std::unique_ptr<TestAudioDeviceModule::PulsedNoiseCapturer> capturer = TestAudioDeviceModule::CreatePulsedNoiseCapturer( /*max_amplitude=*/1000, /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); - TestAudioDevice audio_device( - CreateEnvironment(time_controller.GetClock(), - time_controller.GetTaskQueueFactory()), - std::move(capturer), - /*renderer=*/nullptr); + TestAudioDevice audio_device(env, std::move(capturer), + /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); audio_device.AttachAudioBuffer(&audio_buffer); @@ -196,9 +195,7 @@ TEST(TestAudioDeviceTest, RecordingIsAvailableWhenCapturerIsSet) { /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); TestAudioDevice audio_device( - CreateEnvironment(time_controller.GetClock(), - time_controller.GetTaskQueueFactory()), - std::move(capturer), + CreateTestEnvironment({.time = &time_controller}), std::move(capturer), /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); @@ -210,8 +207,7 @@ TEST(TestAudioDeviceTest, RecordingIsAvailableWhenCapturerIsSet) { TEST(TestAudioDeviceTest, RecordingIsNotAvailableWhenCapturerIsNotSet) { GlobalSimulatedTimeController time_controller(kStartTime); TestAudioDevice audio_device( - CreateEnvironment(time_controller.GetClock(), - time_controller.GetTaskQueueFactory()), + CreateTestEnvironment({.time = &time_controller}), /*capturer=*/nullptr, /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); @@ -223,17 +219,16 @@ TEST(TestAudioDeviceTest, RecordingIsNotAvailableWhenCapturerIsNotSet) { TEST(TestAudioDeviceTest, EnablingPlayoutProducesAudio) { GlobalSimulatedTimeController time_controller(kStartTime); + const Environment env = CreateTestEnvironment({.time = &time_controller}); TestAudioTransport audio_transport(TestAudioTransport::Mode::kPlaying); - AudioDeviceBuffer audio_buffer(time_controller.GetTaskQueueFactory()); + AudioDeviceBuffer audio_buffer(env); ASSERT_EQ(audio_buffer.RegisterAudioCallback(&audio_transport), 0); std::unique_ptr<TestAudioDeviceModule::Renderer> renderer = TestAudioDeviceModule::CreateDiscardRenderer( /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); - TestAudioDevice audio_device( - CreateEnvironment(time_controller.GetClock(), - time_controller.GetTaskQueueFactory()), - /*capturer=*/nullptr, std::move(renderer)); + TestAudioDevice audio_device(env, + /*capturer=*/nullptr, std::move(renderer)); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); audio_device.AttachAudioBuffer(&audio_buffer); @@ -263,8 +258,7 @@ TEST(TestAudioDeviceTest, PlayoutIsAvailableWhenRendererIsSet) { /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); TestAudioDevice audio_device( - CreateEnvironment(time_controller.GetClock(), - time_controller.GetTaskQueueFactory()), + CreateTestEnvironment({.time = &time_controller}), /*capturer=*/nullptr, std::move(renderer)); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); @@ -276,8 +270,7 @@ TEST(TestAudioDeviceTest, PlayoutIsAvailableWhenRendererIsSet) { TEST(TestAudioDeviceTest, PlayoutIsNotAvailableWhenRendererIsNotSet) { GlobalSimulatedTimeController time_controller(kStartTime); TestAudioDevice audio_device( - CreateEnvironment(time_controller.GetClock(), - time_controller.GetTaskQueueFactory()), + CreateTestEnvironment({.time = &time_controller}), /*capturer=*/nullptr, /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); diff --git a/third_party/libwebrtc/modules/audio_device/win/audio_device_module_win.cc b/third_party/libwebrtc/modules/audio_device/win/audio_device_module_win.cc @@ -14,6 +14,7 @@ #include <utility> #include "api/audio/audio_device.h" +#include "api/environment/environment.h" #include "api/make_ref_counted.h" #include "api/sequence_checker.h" #include "modules/audio_device/audio_device_buffer.h" @@ -87,12 +88,12 @@ class WindowsAudioDeviceModule : public AudioDeviceModuleForTest { NUM_STATUSES = 4 }; - WindowsAudioDeviceModule(std::unique_ptr<AudioInput> audio_input, - std::unique_ptr<AudioOutput> audio_output, - TaskQueueFactory* task_queue_factory) - : input_(std::move(audio_input)), - output_(std::move(audio_output)), - task_queue_factory_(task_queue_factory) { + WindowsAudioDeviceModule(const Environment& env, + std::unique_ptr<AudioInput> audio_input, + std::unique_ptr<AudioOutput> audio_output) + : env_(env), + input_(std::move(audio_input)), + output_(std::move(audio_output)) { RTC_CHECK(input_); RTC_CHECK(output_); RTC_DLOG(LS_INFO) << __FUNCTION__; @@ -132,8 +133,7 @@ class WindowsAudioDeviceModule : public AudioDeviceModuleForTest { if (initialized_) { return 0; } - audio_device_buffer_ = - std::make_unique<AudioDeviceBuffer>(task_queue_factory_); + audio_device_buffer_ = std::make_unique<AudioDeviceBuffer>(env_); AttachAudioBuffer(); InitStatus status; if (output_->Init() != 0) { @@ -485,6 +485,8 @@ class WindowsAudioDeviceModule : public AudioDeviceModuleForTest { } private: + const Environment env_; + // Ensures that the class is used on the same thread as it is constructed // and destroyed on. SequenceChecker thread_checker_; @@ -495,8 +497,6 @@ class WindowsAudioDeviceModule : public AudioDeviceModuleForTest { // Implements the AudioOutput interface and deals with audio rendering parts. const std::unique_ptr<AudioOutput> output_; - TaskQueueFactory* const task_queue_factory_; - // The AudioDeviceBuffer (ADB) instance is needed for sending/receiving audio // to/from the WebRTC layer. Created and owned by this object. Used by // both `input_` and `output_` but they use orthogonal parts of the ADB. @@ -510,12 +510,12 @@ class WindowsAudioDeviceModule : public AudioDeviceModuleForTest { webrtc::scoped_refptr<AudioDeviceModuleForTest> CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput( + const Environment& env, std::unique_ptr<AudioInput> audio_input, - std::unique_ptr<AudioOutput> audio_output, - TaskQueueFactory* task_queue_factory) { + std::unique_ptr<AudioOutput> audio_output) { RTC_DLOG(LS_INFO) << __FUNCTION__; - return webrtc::make_ref_counted<WindowsAudioDeviceModule>( - std::move(audio_input), std::move(audio_output), task_queue_factory); + return make_ref_counted<WindowsAudioDeviceModule>(env, std::move(audio_input), + std::move(audio_output)); } } // namespace webrtc_win diff --git a/third_party/libwebrtc/modules/audio_device/win/audio_device_module_win.h b/third_party/libwebrtc/modules/audio_device/win/audio_device_module_win.h @@ -15,8 +15,8 @@ #include <string> #include "api/audio/audio_device.h" +#include "api/environment/environment.h" #include "api/scoped_refptr.h" -#include "api/task_queue/task_queue_factory.h" namespace webrtc { @@ -76,9 +76,9 @@ class AudioOutput { // AudioDeviceModule. Hides most parts of the full ADM interface. webrtc::scoped_refptr<AudioDeviceModuleForTest> CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput( + const Environment& env, std::unique_ptr<AudioInput> audio_input, - std::unique_ptr<AudioOutput> audio_output, - TaskQueueFactory* task_queue_factory); + std::unique_ptr<AudioOutput> audio_output); } // namespace webrtc_win diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -736,7 +736,7 @@ index 9649f0c940..51570e8c95 100644 } diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn -index a26de6be15..a90fac2f4c 100644 +index 82e64086d1..29b1b11fae 100644 --- a/modules/audio_device/BUILD.gn +++ b/modules/audio_device/BUILD.gn @@ -30,6 +30,7 @@ rtc_source_set("audio_device_default") { @@ -763,7 +763,7 @@ index a26de6be15..a90fac2f4c 100644 sources = [ "audio_device_buffer.cc", "audio_device_buffer.h", -@@ -77,6 +80,7 @@ rtc_library("audio_device_buffer") { +@@ -78,6 +81,7 @@ rtc_library("audio_device_buffer") { "../../system_wrappers:metrics", ] } @@ -771,7 +771,7 @@ index a26de6be15..a90fac2f4c 100644 rtc_library("audio_device_generic") { sources = [ -@@ -250,6 +254,7 @@ if (!build_with_chromium) { +@@ -252,6 +256,7 @@ if (!build_with_chromium) { # Contains default implementations of webrtc::AudioDeviceModule for Windows, # Linux, Mac, iOS and Android. rtc_library("audio_device_impl") { @@ -779,7 +779,7 @@ index a26de6be15..a90fac2f4c 100644 visibility = [ "*" ] deps = [ ":audio_device_buffer", -@@ -296,9 +301,9 @@ rtc_library("audio_device_impl") { +@@ -298,9 +303,9 @@ rtc_library("audio_device_impl") { sources = [ "include/fake_audio_device.h" ] if (build_with_mozilla) { @@ -792,7 +792,7 @@ index a26de6be15..a90fac2f4c 100644 ] } -@@ -401,6 +406,7 @@ rtc_library("audio_device_impl") { +@@ -403,6 +408,7 @@ rtc_library("audio_device_impl") { sources += [ "dummy/file_audio_device_factory.h" ] } } @@ -800,7 +800,7 @@ index a26de6be15..a90fac2f4c 100644 if (is_mac) { rtc_source_set("audio_device_impl_frameworks") { -@@ -418,6 +424,7 @@ if (is_mac) { +@@ -420,6 +426,7 @@ if (is_mac) { } } @@ -808,7 +808,7 @@ index a26de6be15..a90fac2f4c 100644 rtc_source_set("mock_audio_device") { visibility = [ "*" ] testonly = true -@@ -436,8 +443,10 @@ rtc_source_set("mock_audio_device") { +@@ -438,8 +445,10 @@ rtc_source_set("mock_audio_device") { "../../test:test_support", ] } 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 ff01d30f95..2a5381ec09 100644 deps += [ "logging:rtc_event_log_proto" ] } diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn -index 17324f6913..27d9d0056d 100644 +index 75f5ee2541..ef363d15a6 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -571,6 +571,7 @@ if (is_ios || is_mac) { @@ -69,7 +69,7 @@ index 17324f6913..27d9d0056d 100644 rtc_library("videocodec_objc") { visibility = [ "*" ] configs += [ "..:no_global_constructors" ] -@@ -1819,5 +1824,6 @@ if (is_ios || is_mac) { +@@ -1820,5 +1825,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 27d9d0056d..c78cdec7cc 100644 +index ef363d15a6..90389a59fc 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -632,6 +632,20 @@ if (is_ios || is_mac) { diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch @@ -440,7 +440,7 @@ index 51d055bcf0..e50b924806 100644 import("../webrtc.gni") diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn -index a90fac2f4c..ae05c9d228 100644 +index 29b1b11fae..62dd9f56d1 100644 --- a/modules/audio_device/BUILD.gn +++ b/modules/audio_device/BUILD.gn @@ -9,8 +9,8 @@ @@ -702,7 +702,7 @@ index 082a11f47c..2e8f069f24 100644 output_extension = "so" } diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn -index c78cdec7cc..cc5d90b42f 100644 +index 90389a59fc..b430795605 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -9,12 +9,12 @@ @@ -731,7 +731,7 @@ index c78cdec7cc..cc5d90b42f 100644 } } -@@ -1280,7 +1280,7 @@ if (is_ios || is_mac) { +@@ -1281,7 +1281,7 @@ if (is_ios || is_mac) { } public_deps = [ diff --git a/third_party/libwebrtc/sdk/BUILD.gn b/third_party/libwebrtc/sdk/BUILD.gn @@ -1270,6 +1270,7 @@ if (is_ios || is_mac) { "../rtc_base:rtc_event", "../rtc_base/system:unused", "../system_wrappers", + "../test:create_test_environment", "../test:test_support", "../test:wait_until", "//third_party/libyuv", diff --git a/third_party/libwebrtc/sdk/objc/native/src/audio/audio_device_module_ios.mm b/third_party/libwebrtc/sdk/objc/native/src/audio/audio_device_module_ios.mm @@ -89,8 +89,7 @@ int32_t AudioDeviceModuleIOS::Init() { AudioDeviceIOSRenderErrorHandler error_handler = ^(OSStatus error) { ReportError(kRecordingDeviceFailed); }; - audio_device_buffer_ = - std::make_unique<AudioDeviceBuffer>(&env_.task_queue_factory()); + audio_device_buffer_ = std::make_unique<AudioDeviceBuffer>(env_); audio_device_ = std::make_unique<ios_adm::AudioDeviceIOS>(env_, bypass_voice_processing_, diff --git a/third_party/libwebrtc/sdk/objc/native/src/objc_audio_device.mm b/third_party/libwebrtc/sdk/objc/native/src/objc_audio_device.mm @@ -82,8 +82,7 @@ int32_t ObjCAudioDeviceModule::Init() { io_record_thread_checker_.Detach(); thread_ = Thread::Current(); - audio_device_buffer_ = - std::make_unique<webrtc::AudioDeviceBuffer>(&env_.task_queue_factory()); + audio_device_buffer_ = std::make_unique<webrtc::AudioDeviceBuffer>(env_); if (![audio_device_ isInitialized]) { if (audio_device_delegate_ == nil) { diff --git a/third_party/libwebrtc/sdk/objc/unittests/RTCAudioDevice_xctest.mm b/third_party/libwebrtc/sdk/objc/unittests/RTCAudioDevice_xctest.mm @@ -13,8 +13,8 @@ #include <stdlib.h> #include "api/environment/environment.h" -#include "api/environment/environment_factory.h" -#include "api/task_queue/default_task_queue_factory.h" +#include "api/scoped_refptr.h" +#include "test/create_test_environment.h" #import "sdk/objc/components/audio/RTCAudioSession+Private.h" #import "sdk/objc/native/api/audio_device_module.h" @@ -47,7 +47,7 @@ _testEnabled = true; #endif - webrtc::Environment env = webrtc::CreateEnvironment(); + webrtc::Environment env = webrtc::CreateTestEnvironment(); _audioDeviceModule = webrtc::CreateAudioDeviceModule(env); _audio_device.reset(new webrtc::ios_adm::AudioDeviceIOS( env, @@ -112,11 +112,8 @@ [self.audioSession.category isEqual:AVAudioSessionCategoryPlayback]); XCTAssertEqual(AVAudioSessionModeVoiceChat, self.audioSession.mode); - std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory = - webrtc::CreateDefaultTaskQueueFactory(); - std::unique_ptr<webrtc::AudioDeviceBuffer> audio_buffer; - audio_buffer.reset(new webrtc::AudioDeviceBuffer(task_queue_factory.get())); - _audio_device->AttachAudioBuffer(audio_buffer.get()); + webrtc::AudioDeviceBuffer audio_buffer(webrtc::CreateTestEnvironment()); + _audio_device->AttachAudioBuffer(&audio_buffer); XCTAssertEqual(webrtc::AudioDeviceGeneric::InitStatus::OK, _audio_device->Init()); XCTAssertEqual(0, _audio_device->InitPlayout()); @@ -153,7 +150,7 @@ }; _audio_device.reset(new webrtc::ios_adm::AudioDeviceIOS( - webrtc::CreateEnvironment(), + webrtc::CreateTestEnvironment(), /*bypass_voice_processing=*/false, /*muted_speech_event_handler=*/muted_speech_event_handler, /*render_error_handler=*/nullptr)); @@ -174,7 +171,7 @@ }; _audio_device.reset(new webrtc::ios_adm::AudioDeviceIOS( - webrtc::CreateEnvironment(), + webrtc::CreateTestEnvironment(), /*bypass_voice_processing=*/false, /*muted_speech_event_handler=*/muted_speech_event_handler, /*render_error_handler=*/nullptr)); diff --git a/third_party/libwebrtc/video/video_quality_test.cc b/third_party/libwebrtc/video/video_quality_test.cc @@ -1376,7 +1376,7 @@ scoped_refptr<AudioDeviceModule> VideoQualityTest::CreateAudioDevice() { RTC_CHECK(com_initializer_->Succeeded()); RTC_CHECK(webrtc_win::core_audio_utility::IsSupported()); RTC_CHECK(webrtc_win::core_audio_utility::IsMMCSSSupported()); - return CreateWindowsCoreAudioAudioDeviceModule(&env_.task_queue_factory()); + return CreateWindowsCoreAudioAudioDeviceModule(env_); #else // Use legacy factory method on all platforms except Windows. return CreateAudioDeviceModule(env_,