tor-browser

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

commit 384d90feb8cc3fdcf49a274bab36210ad0ea015c
parent 416fd907ecfb59402834c57ddc831014c373859b
Author: Dan Baker <dbaker@mozilla.com>
Date:   Thu, 23 Oct 2025 16:19:27 -0600

Bug 1995393 - Vendor libwebrtc from 2e56c0a702

Upstream commit: https://webrtc.googlesource.com/src/+/2e56c0a702c7da1a6e42db32c45fde44d2edfa0f
    Replace erase-remove idiom with std::erase and std::erase_if (2)

    Bug: webrtc:438403372
    Change-Id: I4046ef37985c721d7738680c5c89efc42fda89d0
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404582
    Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
    Commit-Queue: Björn Terelius <terelius@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45353}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/modules/desktop_capture/cropping_window_capturer_win.cc | 5++---
Mthird_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc | 4+---
Mthird_party/libwebrtc/modules/desktop_capture/linux/x11/shared_x_display.cc | 4+---
Mthird_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc | 34++++++++++++++++++----------------
Mthird_party/libwebrtc/moz-patch-stack/s0074.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0075.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0076.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0098.patch | 60+++++++++++++++++++++++++++++++++++++++++-------------------
9 files changed, 70 insertions(+), 51 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-23T21:57:12.784990+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T22:19:14.410416+00:00. # base of lastest vendoring -ac2597e9ce +2e56c0a702 diff --git a/third_party/libwebrtc/modules/desktop_capture/cropping_window_capturer_win.cc b/third_party/libwebrtc/modules/desktop_capture/cropping_window_capturer_win.cc @@ -191,13 +191,12 @@ void CroppingWindowCapturerWin::CaptureFrame() { return false; // Filter out windows not visible on current desktop - auto it = std::remove_if( - result.begin(), result.end(), [this](const auto& source) { + std::erase_if( + result, [this](const auto& source) { HWND hwnd = reinterpret_cast<HWND>(source.id); return !window_capture_helper_ .IsWindowVisibleOnCurrentDesktop(hwnd); }); - result.erase(it, result.end()); sources->swap(result); return true; diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc @@ -1000,9 +1000,7 @@ bool SharedScreenCastStreamPrivate::ProcessDMABuffer( << " and trying to renegotiate stream parameters"; if (pw_server_version_ >= kDropSingleModifierMinVersion) { - modifiers_.erase( - std::remove(modifiers_.begin(), modifiers_.end(), modifier_), - modifiers_.end()); + std::erase(modifiers_, modifier_); } else { modifiers_.clear(); } diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/x11/shared_x_display.cc b/third_party/libwebrtc/modules/desktop_capture/linux/x11/shared_x_display.cc @@ -65,9 +65,7 @@ void SharedXDisplay::RemoveEventHandler(int type, XEventHandler* handler) { if (handlers == event_handlers_.end()) return; - std::vector<XEventHandler*>::iterator new_end = - std::remove(handlers->second.begin(), handlers->second.end(), handler); - handlers->second.erase(new_end, handlers->second.end()); + std::erase(handlers->second, handler); // Check if no handlers left for this event. if (handlers->second.empty()) diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc @@ -9,7 +9,6 @@ */ #include "modules/video_capture/linux/pipewire_session.h" -#include "modules/video_capture/linux/device_info_pipewire.h" #include <pipewire/pipewire.h> #include <spa/monitor/device.h> @@ -36,6 +35,7 @@ #include "modules/portal/pipewire_utils.h" #include "modules/portal/portal_request_response.h" #include "modules/video_capture/linux/camera_portal.h" +#include "modules/video_capture/linux/device_info_pipewire.h" #include "modules/video_capture/video_capture_defines.h" #include "modules/video_capture/video_capture_options.h" #include "rtc_base/logging.h" @@ -105,7 +105,8 @@ PipeWireNode::PipeWireNode(PipeWireSession* session, .param = OnNodeParam, }; - pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, &node_events, this); + pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, + &node_events, this); } // static @@ -137,7 +138,8 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) { uint32_t id = info->params[i].id; if (id == SPA_PARAM_EnumFormat && info->params[i].flags & SPA_PARAM_INFO_READ) { - pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, UINT32_MAX, nullptr); + pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, + UINT32_MAX, nullptr); break; } } @@ -179,8 +181,9 @@ void PipeWireNode::OnNodeParam(void* data, static_cast<int32_t>(1.0 * fract[i].num / fract[i].denom), cap.maxFPS); } - } else if (choice == SPA_CHOICE_Range && fract[1].num > 0) + } else if (choice == SPA_CHOICE_Range && fract[1].num > 0) { cap.maxFPS = 1.0 * fract[1].num / fract[1].denom; + } } } @@ -307,7 +310,8 @@ void PipeWireSession::InitPipeWire(int fd) { bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) { RTC_CHECK(device_info); MutexLock lock(&device_info_lock_); - auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info); + auto it = std::find(device_info_list_.begin(), device_info_list_.end(), + device_info); if (it == device_info_list_.end()) { device_info_list_.push_back(device_info); return true; @@ -318,7 +322,8 @@ bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) { bool PipeWireSession::DeRegisterDeviceInfo(DeviceInfoPipeWire* device_info) { RTC_CHECK(device_info); MutexLock lock(&device_info_lock_); - auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info); + auto it = std::find(device_info_list_.begin(), device_info_list_.end(), + device_info); if (it != device_info_list_.end()) { device_info_list_.erase(it); return true; @@ -431,11 +436,10 @@ void PipeWireSession::OnCoreDone(void* data, uint32_t id, int seq) { RTC_LOG(LS_VERBOSE) << "Enumerating PipeWire camera devices complete."; // Remove camera devices with no capabilities - auto it = std::remove_if(that->nodes_.begin(), that->nodes_.end(), - [](const PipeWireNode::PipeWireNodePtr& node) { - return node->capabilities().empty(); - }); - that->nodes_.erase(it, that->nodes_.end()); + std::erase_if(that->nodes_, + [](const PipeWireNode::PipeWireNodePtr& node) { + return node->capabilities().empty(); + }); that->Finish(VideoCaptureOptions::Status::SUCCESS); } @@ -479,11 +483,9 @@ void PipeWireSession::OnRegistryGlobal(void* data, void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) { PipeWireSession* that = static_cast<PipeWireSession*>(data); - auto it = std::remove_if(that->nodes_.begin(), that->nodes_.end(), - [id](const PipeWireNode::PipeWireNodePtr& node) { - return node->id() == id; - }); - that->nodes_.erase(it, that->nodes_.end()); + std::erase_if(that->nodes_, [id](const PipeWireNode::PipeWireNodePtr& node) { + return node->id() == id; + }); that->NotifyDeviceChange(); } diff --git a/third_party/libwebrtc/moz-patch-stack/s0074.patch b/third_party/libwebrtc/moz-patch-stack/s0074.patch @@ -10,7 +10,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/158a888cad8869a2f 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -index dfcb446fa0..bab528507a 100644 +index c28fd732df..5eb20ac152 100644 --- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc +++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc @@ -57,6 +57,13 @@ diff --git a/third_party/libwebrtc/moz-patch-stack/s0075.patch b/third_party/libwebrtc/moz-patch-stack/s0075.patch @@ -12,7 +12,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/237d19fe96dd7d25b 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -index bab528507a..77c0d8576b 100644 +index 5eb20ac152..bd21833091 100644 --- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc +++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc @@ -436,7 +436,9 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream( diff --git a/third_party/libwebrtc/moz-patch-stack/s0076.patch b/third_party/libwebrtc/moz-patch-stack/s0076.patch @@ -25,7 +25,7 @@ index 4c4366dad2..b4860feadb 100644 if (!is_win && !is_mac && !rtc_use_x11_extensions && !rtc_use_pipewire && diff --git a/modules/desktop_capture/linux/x11/shared_x_display.cc b/modules/desktop_capture/linux/x11/shared_x_display.cc -index a5781a5fb3..e4360bd1b3 100644 +index 3cb2636f09..f7eca06820 100644 --- a/modules/desktop_capture/linux/x11/shared_x_display.cc +++ b/modules/desktop_capture/linux/x11/shared_x_display.cc @@ -11,7 +11,9 @@ @@ -38,7 +38,7 @@ index a5781a5fb3..e4360bd1b3 100644 #include <algorithm> #include <cstddef> -@@ -100,6 +102,7 @@ void SharedXDisplay::ProcessPendingXEvents() { +@@ -98,6 +100,7 @@ void SharedXDisplay::ProcessPendingXEvents() { } void SharedXDisplay::IgnoreXServerGrabs() { @@ -46,7 +46,7 @@ index a5781a5fb3..e4360bd1b3 100644 int test_event_base = 0; int test_error_base = 0; int major = 0; -@@ -108,6 +111,7 @@ void SharedXDisplay::IgnoreXServerGrabs() { +@@ -106,6 +109,7 @@ void SharedXDisplay::IgnoreXServerGrabs() { &minor)) { XTestGrabControl(display(), true); } diff --git a/third_party/libwebrtc/moz-patch-stack/s0098.patch b/third_party/libwebrtc/moz-patch-stack/s0098.patch @@ -11,9 +11,9 @@ Differential Revision: https://phabricator.services.mozilla.com/D219218 Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/60eb5ef11c8df7eb6e0d616cb76885d9109f114d --- .../linux/device_info_pipewire.cc | 10 +++- - .../video_capture/linux/pipewire_session.cc | 47 ++++++++++++++++++- - .../video_capture/linux/pipewire_session.h | 26 +++++++++- - 3 files changed, 79 insertions(+), 4 deletions(-) + .../video_capture/linux/pipewire_session.cc | 55 ++++++++++++++++++- + .../video_capture/linux/pipewire_session.h | 26 ++++++++- + 3 files changed, 85 insertions(+), 6 deletions(-) diff --git a/modules/video_capture/linux/device_info_pipewire.cc b/modules/video_capture/linux/device_info_pipewire.cc index 009e1408b9..a737f9bdb3 100644 @@ -42,25 +42,46 @@ index 009e1408b9..a737f9bdb3 100644 uint32_t DeviceInfoPipeWire::NumberOfDevices() { RTC_CHECK(pipewire_session_); diff --git a/modules/video_capture/linux/pipewire_session.cc b/modules/video_capture/linux/pipewire_session.cc -index 2eb73a47e8..aa791b31c7 100644 +index 1582f85577..957590c92b 100644 --- a/modules/video_capture/linux/pipewire_session.cc +++ b/modules/video_capture/linux/pipewire_session.cc -@@ -9,6 +9,7 @@ - */ - - #include "modules/video_capture/linux/pipewire_session.h" +@@ -35,6 +35,7 @@ + #include "modules/portal/pipewire_utils.h" + #include "modules/portal/portal_request_response.h" + #include "modules/video_capture/linux/camera_portal.h" +#include "modules/video_capture/linux/device_info_pipewire.h" + #include "modules/video_capture/video_capture_defines.h" + #include "modules/video_capture/video_capture_options.h" + #include "rtc_base/logging.h" +@@ -104,7 +105,8 @@ PipeWireNode::PipeWireNode(PipeWireSession* session, + .param = OnNodeParam, + }; + +- pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, &node_events, this); ++ pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, ++ &node_events, this); + } - #include <pipewire/pipewire.h> - #include <spa/monitor/device.h> -@@ -303,6 +304,28 @@ void PipeWireSession::InitPipeWire(int fd) { + // static +@@ -136,7 +138,8 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) { + uint32_t id = info->params[i].id; + if (id == SPA_PARAM_EnumFormat && + info->params[i].flags & SPA_PARAM_INFO_READ) { +- pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, UINT32_MAX, nullptr); ++ pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, ++ UINT32_MAX, nullptr); + break; + } + } +@@ -304,6 +307,30 @@ void PipeWireSession::InitPipeWire(int fd) { Finish(VideoCaptureOptions::Status::ERROR); } +bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) { + RTC_CHECK(device_info); + MutexLock lock(&device_info_lock_); -+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info); ++ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), ++ device_info); + if (it == device_info_list_.end()) { + device_info_list_.push_back(device_info); + return true; @@ -71,7 +92,8 @@ index 2eb73a47e8..aa791b31c7 100644 +bool PipeWireSession::DeRegisterDeviceInfo(DeviceInfoPipeWire* device_info) { + RTC_CHECK(device_info); + MutexLock lock(&device_info_lock_); -+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info); ++ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), ++ device_info); + if (it != device_info_list_.end()) { + device_info_list_.erase(it); + return true; @@ -82,7 +104,7 @@ index 2eb73a47e8..aa791b31c7 100644 RTC_NO_SANITIZE("cfi-icall") bool PipeWireSession::StartPipeWire(int fd) { pw_init(/*argc=*/nullptr, /*argv=*/nullptr); -@@ -375,6 +398,21 @@ void PipeWireSession::PipeWireSync() { +@@ -376,6 +403,21 @@ void PipeWireSession::PipeWireSync() { sync_seq_ = pw_core_sync(pw_core_, PW_ID_CORE, sync_seq_); } @@ -104,7 +126,7 @@ index 2eb73a47e8..aa791b31c7 100644 // static void PipeWireSession::OnCoreError(void* data, uint32_t id, -@@ -433,6 +471,8 @@ void PipeWireSession::OnRegistryGlobal(void* data, +@@ -433,6 +475,8 @@ void PipeWireSession::OnRegistryGlobal(void* data, that->nodes_.push_back(PipeWireNode::Create(that, id, props)); that->PipeWireSync(); @@ -113,10 +135,10 @@ index 2eb73a47e8..aa791b31c7 100644 } // static -@@ -444,10 +484,15 @@ void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) { - return node->id() == id; - }); - that->nodes_.erase(it, that->nodes_.end()); +@@ -442,10 +486,15 @@ void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) { + std::erase_if(that->nodes_, [id](const PipeWireNode::PipeWireNodePtr& node) { + return node->id() == id; + }); + + that->NotifyDeviceChange(); }