tor-browser

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

commit 500a1c331ce8d9f116fe0f3729163df509f46359
parent 64566823ff07d1fc82618ad8915f62d502554cea
Author: Michael Froman <mfroman@mozilla.com>
Date:   Wed,  8 Oct 2025 23:27:35 -0500

Bug 1993083 - Vendor libwebrtc from c9c68ef81e

Upstream commit: https://webrtc.googlesource.com/src/+/c9c68ef81e6bd6d64fc40c2f19e44a0691f15aa2
    Cleanup delayed packet handing in RtpRtcpImpl2 unittests

    Module/ProcessThread architecture is long time gone, so delayed handling
    can be done using TaskQueue, which looks simpler and resolves few TODOs

    Bug: webrtc:42221687
    Change-Id: Ie1cfc91eaa982097be6a4ffed2108295ef8e1e62
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/399581
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45118}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc | 77++++++++++++++++++++++++++---------------------------------------------------
Mthird_party/libwebrtc/test/time_controller/simulated_time_controller.cc | 10----------
Mthird_party/libwebrtc/test/time_controller/simulated_time_controller.h | 11-----------
4 files changed, 28 insertions(+), 74 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-09T04:26:06.417042+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-09T04:27:25.996834+00:00. # base of lastest vendoring -d950a7fb2f +c9c68ef81e diff --git a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc @@ -12,7 +12,6 @@ #include <cstddef> #include <cstdint> -#include <deque> #include <map> #include <memory> #include <optional> @@ -27,6 +26,7 @@ #include "api/rtp_headers.h" #include "api/rtp_parameters.h" #include "api/task_queue/task_queue_base.h" +#include "api/task_queue/task_queue_factory.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "api/video/video_codec_type.h" @@ -106,22 +106,19 @@ class RtcpRttStatsTestImpl : public RtcpRttStats { int64_t rtt_ms_; }; -// TODO(bugs.webrtc.org/11581): remove inheritance once the ModuleRtpRtcpImpl2 -// Module/ProcessThread dependency is gone. -class SendTransport : public Transport, - public sim_time_impl::SimulatedSequenceRunner { +class SendTransport : public Transport { public: - SendTransport(TimeDelta delay, GlobalSimulatedTimeController* time_controller) + SendTransport(TimeDelta delay, TaskQueueFactory& task_queue_factory) : receiver_(nullptr), - time_controller_(time_controller), delay_(delay), rtp_packets_sent_(0), rtcp_packets_sent_(0), - last_packet_(&header_extensions_) { - time_controller_->Register(this); - } + last_packet_(&header_extensions_), + rtcp_packets_(task_queue_factory.CreateTaskQueue( + "transport", + TaskQueueFactory::Priority::NORMAL)) {} - ~SendTransport() override { time_controller_->Unregister(this); } + ~SendTransport() override = default; void SetRtpRtcpModule(ModuleRtpRtcpImpl2* receiver) { receiver_ = receiver; } void SimulateNetworkDelay(TimeDelta delay) { delay_ = delay; } @@ -136,49 +133,33 @@ class SendTransport : public Transport, test::RtcpPacketParser parser; parser.Parse(data); last_nack_list_ = parser.nack()->packet_ids(); - Timestamp current_time = time_controller_->GetClock()->CurrentTime(); - Timestamp delivery_time = current_time + delay_; - rtcp_packets_.push_back( - Packet{delivery_time, std::vector<uint8_t>(data.begin(), data.end())}); - ++rtcp_packets_sent_; - RunReady(current_time); - return true; - } - // sim_time_impl::SimulatedSequenceRunner - Timestamp GetNextRunTime() const override { - if (!rtcp_packets_.empty()) - return rtcp_packets_.front().send_time; - return Timestamp::PlusInfinity(); - } - void RunReady(Timestamp at_time) override { - while (!rtcp_packets_.empty() && - rtcp_packets_.front().send_time <= at_time) { - Packet packet = std::move(rtcp_packets_.front()); - rtcp_packets_.pop_front(); - EXPECT_TRUE(receiver_); - receiver_->IncomingRtcpPacket(packet.data); + if (delay_ == TimeDelta::Zero()) { + receiver_->IncomingRtcpPacket(data); + } else { + ModuleRtpRtcpImpl2* receiver = receiver_; + std::vector<uint8_t> packet(data.begin(), data.end()); + rtcp_packets_->PostDelayedTask( + [receiver, packet = std::move(packet)] { + receiver->IncomingRtcpPacket(packet); + }, + delay_); } - } - TaskQueueBase* GetAsTaskQueue() override { - return reinterpret_cast<TaskQueueBase*>(this); + + ++rtcp_packets_sent_; + return true; } size_t NumRtcpSent() { return rtcp_packets_sent_; } ModuleRtpRtcpImpl2* receiver_; - GlobalSimulatedTimeController* const time_controller_; TimeDelta delay_; int rtp_packets_sent_; size_t rtcp_packets_sent_; std::vector<uint16_t> last_nack_list_; RtpHeaderExtensionMap header_extensions_; RtpPacketReceived last_packet_; - struct Packet { - Timestamp send_time; - std::vector<uint8_t> data; - }; - std::deque<Packet> rtcp_packets_; + std::unique_ptr<TaskQueueBase, TaskQueueDeleter> rtcp_packets_; }; class RtpRtcpModule : public RtcpPacketTypeCounterObserver, @@ -193,13 +174,11 @@ class RtpRtcpModule : public RtcpPacketTypeCounterObserver, uint32_t ssrc; }; - RtpRtcpModule(const Environment& env, - GlobalSimulatedTimeController* time_controller, - bool is_sender) + RtpRtcpModule(const Environment& env, bool is_sender) : env_(env), is_sender_(is_sender), receive_statistics_(ReceiveStatistics::Create(&env.clock())), - transport_(kOneWayNetworkDelay, time_controller) { + transport_(kOneWayNetworkDelay, env_.task_queue_factory()) { CreateModuleImpl(); } @@ -304,12 +283,8 @@ class RtpRtcpImpl2Test : public ::testing::Test { : time_controller_(Timestamp::Micros(133590000000000)), env_(CreateEnvironment(time_controller_.GetClock(), time_controller_.CreateTaskQueueFactory())), - sender_(env_, - &time_controller_, - /*is_sender=*/true), - receiver_(env_, - &time_controller_, - /*is_sender=*/false) {} + sender_(env_, /*is_sender=*/true), + receiver_(env_, /*is_sender=*/false) {} void SetUp() override { // Send module. diff --git a/third_party/libwebrtc/test/time_controller/simulated_time_controller.cc b/third_party/libwebrtc/test/time_controller/simulated_time_controller.cc @@ -231,14 +231,4 @@ void GlobalSimulatedTimeController::SkipForwardBy(TimeDelta duration) { global_clock_.AdvanceTime(duration); } -void GlobalSimulatedTimeController::Register( - sim_time_impl::SimulatedSequenceRunner* runner) { - impl_.Register(runner); -} - -void GlobalSimulatedTimeController::Unregister( - sim_time_impl::SimulatedSequenceRunner* runner) { - impl_.Unregister(runner); -} - } // namespace webrtc diff --git a/third_party/libwebrtc/test/time_controller/simulated_time_controller.h b/third_party/libwebrtc/test/time_controller/simulated_time_controller.h @@ -151,17 +151,6 @@ class GlobalSimulatedTimeController : public TimeController { // Useful for simulating contention on destination queues. void SkipForwardBy(TimeDelta duration); - // Makes the simulated time controller aware of a custom - // SimulatedSequenceRunner. - // TODO(bugs.webrtc.org/11581): remove method once the ModuleRtpRtcpImpl2 unit - // test stops using it. - void Register(sim_time_impl::SimulatedSequenceRunner* runner); - // Removes a previously installed custom SimulatedSequenceRunner from the - // simulated time controller. - // TODO(bugs.webrtc.org/11581): remove method once the ModuleRtpRtcpImpl2 unit - // test stops using it. - void Unregister(sim_time_impl::SimulatedSequenceRunner* runner); - private: ScopedBaseFakeClock global_clock_; // Provides simulated CurrentNtpInMilliseconds()