tor-browser

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

commit 82e5ddb84f7a6a8e5043f33512ab6a0e939a1ce2
parent ec54d5c8c50769dec5cebbd3ddba71c6b803c6b2
Author: Michael Froman <mfroman@mozilla.com>
Date:   Thu,  9 Oct 2025 13:38:14 -0500

Bug 1993083 - Vendor libwebrtc from 01df61ec4f

Upstream commit: https://webrtc.googlesource.com/src/+/01df61ec4f304de2cd7409b01c5cec40a7f71c0a
    Save Environment instead of pointer to TaskQueueFactory in TestAudioDevice

    Saving raw pointer is brittle and may cause a crash if Environment
    passed to TestAudioDevice happen to be temporary. Saving Environment
    guarantees TaskQueueFactory would still be alived when later used in
    Init function.

    Bug: webrtc:413413572
    Change-Id: I274e295f3ffa659cff9c6249d6b562391a9d5a77
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/400140
    Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45146}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/modules/audio_device/include/test_audio_device.cc | 3+--
Mthird_party/libwebrtc/modules/audio_device/test_audio_device_impl.cc | 7++++---
Mthird_party/libwebrtc/modules/audio_device/test_audio_device_impl.h | 6+++---
Mthird_party/libwebrtc/modules/audio_device/test_audio_device_impl_test.cc | 45+++++++++++++++++++++++++++++----------------
5 files changed, 39 insertions(+), 26 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:37:00.485625+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-09T18:38:04.960332+00:00. # base of lastest vendoring -135a2c58bf +01df61ec4f 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 @@ -430,8 +430,7 @@ scoped_refptr<AudioDeviceModule> TestAudioDeviceModule::Create( float speed) { auto audio_device = make_ref_counted<AudioDeviceModuleImpl>( AudioDeviceModule::AudioLayer::kDummyAudio, - std::make_unique<TestAudioDevice>(&env.task_queue_factory(), - std::move(capturer), + std::make_unique<TestAudioDevice>(env, std::move(capturer), std::move(renderer), speed), &env.task_queue_factory(), /*create_detached=*/true); diff --git a/third_party/libwebrtc/modules/audio_device/test_audio_device_impl.cc b/third_party/libwebrtc/modules/audio_device/test_audio_device_impl.cc @@ -16,6 +16,7 @@ #include <utility> #include "api/array_view.h" +#include "api/environment/environment.h" #include "api/task_queue/task_queue_factory.h" #include "api/units/time_delta.h" #include "modules/audio_device/audio_device_buffer.h" @@ -34,11 +35,11 @@ constexpr int kFrameLengthUs = 10000; } // namespace TestAudioDevice::TestAudioDevice( - TaskQueueFactory* task_queue_factory, + const Environment& env, std::unique_ptr<TestAudioDeviceModule::Capturer> capturer, std::unique_ptr<TestAudioDeviceModule::Renderer> renderer, float speed) - : task_queue_factory_(task_queue_factory), + : env_(env), capturer_(std::move(capturer)), renderer_(std::move(renderer)), process_interval_us_(kFrameLengthUs / speed), @@ -63,7 +64,7 @@ TestAudioDevice::TestAudioDevice( } AudioDeviceGeneric::InitStatus TestAudioDevice::Init() { - task_queue_ = task_queue_factory_->CreateTaskQueue( + task_queue_ = env_.task_queue_factory().CreateTaskQueue( "TestAudioDeviceModuleImpl", TaskQueueFactory::Priority::NORMAL); RepeatingTaskHandle::Start(task_queue_.get(), [this]() { diff --git a/third_party/libwebrtc/modules/audio_device/test_audio_device_impl.h b/third_party/libwebrtc/modules/audio_device/test_audio_device_impl.h @@ -17,8 +17,8 @@ #include "api/audio/audio_device.h" #include "api/audio/audio_device_defines.h" +#include "api/environment/environment.h" #include "api/task_queue/task_queue_base.h" -#include "api/task_queue/task_queue_factory.h" #include "modules/audio_device/audio_device_buffer.h" #include "modules/audio_device/audio_device_generic.h" #include "modules/audio_device/include/test_audio_device.h" @@ -36,7 +36,7 @@ class TestAudioDevice : public AudioDeviceGeneric { // device is never used for recording. // `renderer` is an object that receives audio data that would have been // played out. Can be nullptr if this device is never used for playing. - TestAudioDevice(TaskQueueFactory* task_queue_factory, + TestAudioDevice(const Environment& env, std::unique_ptr<TestAudioDeviceModule::Capturer> capturer, std::unique_ptr<TestAudioDeviceModule::Renderer> renderer, float speed = 1); @@ -188,7 +188,7 @@ class TestAudioDevice : public AudioDeviceGeneric { private: void ProcessAudio(); - TaskQueueFactory* const task_queue_factory_; + const Environment env_; const std::unique_ptr<TestAudioDeviceModule::Capturer> capturer_ RTC_GUARDED_BY(lock_); const std::unique_ptr<TestAudioDeviceModule::Renderer> renderer_ 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,6 +18,7 @@ #include <vector> #include "api/audio/audio_device_defines.h" +#include "api/environment/environment_factory.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "modules/audio_device/audio_device_buffer.h" @@ -160,9 +161,11 @@ TEST(TestAudioDeviceTest, EnablingRecordingProducesAudio) { /*max_amplitude=*/1000, /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); - TestAudioDevice audio_device(time_controller.GetTaskQueueFactory(), - std::move(capturer), - /*renderer=*/nullptr); + TestAudioDevice audio_device( + CreateEnvironment(time_controller.GetClock(), + time_controller.GetTaskQueueFactory()), + std::move(capturer), + /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); audio_device.AttachAudioBuffer(&audio_buffer); @@ -192,9 +195,11 @@ TEST(TestAudioDeviceTest, RecordingIsAvailableWhenCapturerIsSet) { /*max_amplitude=*/1000, /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); - TestAudioDevice audio_device(time_controller.GetTaskQueueFactory(), - std::move(capturer), - /*renderer=*/nullptr); + TestAudioDevice audio_device( + CreateEnvironment(time_controller.GetClock(), + time_controller.GetTaskQueueFactory()), + std::move(capturer), + /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); bool available; @@ -204,9 +209,11 @@ TEST(TestAudioDeviceTest, RecordingIsAvailableWhenCapturerIsSet) { TEST(TestAudioDeviceTest, RecordingIsNotAvailableWhenCapturerIsNotSet) { GlobalSimulatedTimeController time_controller(kStartTime); - TestAudioDevice audio_device(time_controller.GetTaskQueueFactory(), - /*capturer=*/nullptr, - /*renderer=*/nullptr); + TestAudioDevice audio_device( + CreateEnvironment(time_controller.GetClock(), + time_controller.GetTaskQueueFactory()), + /*capturer=*/nullptr, + /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); bool available; @@ -223,8 +230,10 @@ TEST(TestAudioDeviceTest, EnablingPlayoutProducesAudio) { TestAudioDeviceModule::CreateDiscardRenderer( /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); - TestAudioDevice audio_device(time_controller.GetTaskQueueFactory(), - /*capturer=*/nullptr, std::move(renderer)); + TestAudioDevice audio_device( + CreateEnvironment(time_controller.GetClock(), + time_controller.GetTaskQueueFactory()), + /*capturer=*/nullptr, std::move(renderer)); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); audio_device.AttachAudioBuffer(&audio_buffer); @@ -253,8 +262,10 @@ TEST(TestAudioDeviceTest, PlayoutIsAvailableWhenRendererIsSet) { TestAudioDeviceModule::CreateDiscardRenderer( /*sampling_frequency_in_hz=*/48000, /*num_channels=*/2); - TestAudioDevice audio_device(time_controller.GetTaskQueueFactory(), - /*capturer=*/nullptr, std::move(renderer)); + TestAudioDevice audio_device( + CreateEnvironment(time_controller.GetClock(), + time_controller.GetTaskQueueFactory()), + /*capturer=*/nullptr, std::move(renderer)); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); bool available; @@ -264,9 +275,11 @@ TEST(TestAudioDeviceTest, PlayoutIsAvailableWhenRendererIsSet) { TEST(TestAudioDeviceTest, PlayoutIsNotAvailableWhenRendererIsNotSet) { GlobalSimulatedTimeController time_controller(kStartTime); - TestAudioDevice audio_device(time_controller.GetTaskQueueFactory(), - /*capturer=*/nullptr, - /*renderer=*/nullptr); + TestAudioDevice audio_device( + CreateEnvironment(time_controller.GetClock(), + time_controller.GetTaskQueueFactory()), + /*capturer=*/nullptr, + /*renderer=*/nullptr); ASSERT_EQ(audio_device.Init(), AudioDeviceGeneric::InitStatus::OK); bool available;