tor-browser

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

commit a5972acde92fc46b7e72bddd13202d68ba5eeb3b
parent f2ef102ef44b071e01fca36b22b70d414a7f06f0
Author: Dan Baker <dbaker@mozilla.com>
Date:   Mon, 27 Oct 2025 14:44:25 -0600

Bug 1995393 - Vendor libwebrtc from b2ec6c2eb5

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

    Bug: webrtc:438403372
    Change-Id: I7fdc74b5c53b1713d68f1f3c59052f131478154c
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405420
    Commit-Queue: Björn Terelius <terelius@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45469}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/pc/codec_vendor.cc | 8++------
Mthird_party/libwebrtc/pc/legacy_stats_collector.cc | 13+++++--------
Mthird_party/libwebrtc/pc/media_session.cc | 24+++++++++---------------
Mthird_party/libwebrtc/pc/peer_connection_media_unittest.cc | 63++++++++++++++++++++++-----------------------------------------
Mthird_party/libwebrtc/pc/rtp_sender.cc | 9+++------
Mthird_party/libwebrtc/pc/sdp_offer_answer.cc | 12+++++-------
Mthird_party/libwebrtc/pc/transceiver_list.h | 5+----
8 files changed, 49 insertions(+), 89 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-27T20:41:49.543935+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T20:44:12.724304+00:00. # base of lastest vendoring -0deb9d6d33 +b2ec6c2eb5 diff --git a/third_party/libwebrtc/pc/codec_vendor.cc b/third_party/libwebrtc/pc/codec_vendor.cc @@ -9,7 +9,6 @@ */ #include "pc/codec_vendor.h" -#include <algorithm> #include <cstddef> #include <map> #include <optional> @@ -79,11 +78,8 @@ std::optional<Codec> FindMatchingCodec(const CodecList& codecs1, } void StripCNCodecs(CodecList& audio_codecs) { - audio_codecs.writable_codecs().erase( - std::remove_if( - audio_codecs.begin(), audio_codecs.end(), - [](const Codec& codec) { return IsComfortNoiseCodec(codec); }), - audio_codecs.end()); + std::erase_if(audio_codecs.writable_codecs(), + [](const Codec& codec) { return IsComfortNoiseCodec(codec); }); } bool IsMediaContentOfType(const ContentInfo* content, MediaType media_type) { diff --git a/third_party/libwebrtc/pc/legacy_stats_collector.cc b/third_party/libwebrtc/pc/legacy_stats_collector.cc @@ -10,7 +10,6 @@ #include "pc/legacy_stats_collector.h" -#include <algorithm> #include <cmath> #include <cstddef> #include <cstdint> @@ -624,13 +623,11 @@ void LegacyStatsCollector::RemoveLocalAudioTrack( AudioTrackInterface* audio_track, uint32_t ssrc) { RTC_DCHECK(audio_track != nullptr); - local_audio_tracks_.erase( - std::remove_if( - local_audio_tracks_.begin(), local_audio_tracks_.end(), - [audio_track, ssrc](const LocalAudioTrackVector::value_type& track) { - return track.first == audio_track && track.second == ssrc; - }), - local_audio_tracks_.end()); + std::erase_if( + local_audio_tracks_, + [audio_track, ssrc](const LocalAudioTrackVector::value_type& track) { + return track.first == audio_track && track.second == ssrc; + }); } void LegacyStatsCollector::GetStats(MediaStreamTrackInterface* track, diff --git a/third_party/libwebrtc/pc/media_session.cc b/third_party/libwebrtc/pc/media_session.cc @@ -77,13 +77,10 @@ webrtc::RtpHeaderExtensions RtpHeaderExtensionsFromCapabilities( std::vector<webrtc::RtpHeaderExtensionCapability> UnstoppedRtpHeaderExtensionCapabilities( std::vector<webrtc::RtpHeaderExtensionCapability> capabilities) { - capabilities.erase( - std::remove_if( - capabilities.begin(), capabilities.end(), - [](const webrtc::RtpHeaderExtensionCapability& capability) { - return capability.direction == RtpTransceiverDirection::kStopped; - }), - capabilities.end()); + std::erase_if( + capabilities, [](const webrtc::RtpHeaderExtensionCapability& capability) { + return capability.direction == RtpTransceiverDirection::kStopped; + }); return capabilities; } @@ -688,14 +685,11 @@ MediaSessionDescriptionFactory::filtered_rtp_header_extensions( RtpHeaderExtensions extensions) const { if (!is_unified_plan_) { // Remove extensions only supported with unified-plan. - extensions.erase( - std::remove_if(extensions.begin(), extensions.end(), - [](const webrtc::RtpExtension& extension) { - return extension.uri == RtpExtension::kMidUri || - extension.uri == RtpExtension::kRidUri || - extension.uri == RtpExtension::kRepairedRidUri; - }), - extensions.end()); + std::erase_if(extensions, [](const webrtc::RtpExtension& extension) { + return extension.uri == RtpExtension::kMidUri || + extension.uri == RtpExtension::kRidUri || + extension.uri == RtpExtension::kRepairedRidUri; + }); } return extensions; } diff --git a/third_party/libwebrtc/pc/peer_connection_media_unittest.cc b/third_party/libwebrtc/pc/peer_connection_media_unittest.cc @@ -12,7 +12,6 @@ // PeerConnection and the underlying media engine, as well as tests that check // the media-related aspects of SDP. -#include <algorithm> #include <functional> #include <iterator> #include <memory> @@ -1578,13 +1577,11 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, auto codecs = caller->pc_factory()->GetRtpSenderCapabilities(MediaType::AUDIO).codecs; auto codecs_only_rtx_red_fec = codecs; - auto it = std::remove_if( - codecs_only_rtx_red_fec.begin(), codecs_only_rtx_red_fec.end(), - [](const RtpCodecCapability& codec) { + std::erase_if( + codecs_only_rtx_red_fec, [](const RtpCodecCapability& codec) { return !(codec.name == kRtxCodecName || codec.name == kRedCodecName || codec.name == kUlpfecCodecName); }); - codecs_only_rtx_red_fec.erase(it, codecs_only_rtx_red_fec.end()); ASSERT_THAT(codecs_only_rtx_red_fec.size(), Gt(0)); auto result = transceiver->SetCodecPreferences(codecs_only_rtx_red_fec); EXPECT_EQ(RTCErrorType::INVALID_MODIFICATION, result.type()); @@ -1656,13 +1653,11 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, auto codecs = caller->pc_factory()->GetRtpSenderCapabilities(MediaType::VIDEO).codecs; auto codecs_only_rtx_red_fec = codecs; - auto it = std::remove_if( - codecs_only_rtx_red_fec.begin(), codecs_only_rtx_red_fec.end(), - [](const RtpCodecCapability& codec) { + std::erase_if( + codecs_only_rtx_red_fec, [](const RtpCodecCapability& codec) { return !(codec.name == kRtxCodecName || codec.name == kRedCodecName || codec.name == kUlpfecCodecName); }); - codecs_only_rtx_red_fec.erase(it, codecs_only_rtx_red_fec.end()); auto result = transceiver->SetCodecPreferences(codecs_only_rtx_red_fec); EXPECT_EQ(RTCErrorType::INVALID_MODIFICATION, result.type()); @@ -1749,13 +1744,10 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, SetCodecPreferencesVideoWithRtx) { // Check that RTX codec is properly added auto video_codecs_vpx_rtx = sender_video_codecs; - auto it = std::remove_if( - video_codecs_vpx_rtx.begin(), video_codecs_vpx_rtx.end(), - [](const RtpCodecCapability& codec) { - return codec.name != kRtxCodecName && codec.name != kVp8CodecName && - codec.name != kVp9CodecName; - }); - video_codecs_vpx_rtx.erase(it, video_codecs_vpx_rtx.end()); + std::erase_if(video_codecs_vpx_rtx, [](const RtpCodecCapability& codec) { + return codec.name != kRtxCodecName && codec.name != kVp8CodecName && + codec.name != kVp9CodecName; + }); absl::c_reverse(video_codecs_vpx_rtx); EXPECT_EQ(video_codecs_vpx_rtx.size(), 3u); // VP8, VP9, RTX EXPECT_TRUE( @@ -1794,12 +1786,9 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, auto send_transceiver = caller->pc()->GetTransceivers().front(); auto video_codecs_vpx = video_codecs; - auto it = std::remove_if(video_codecs_vpx.begin(), video_codecs_vpx.end(), - [](const RtpCodecCapability& codec) { - return codec.name != kVp8CodecName && - codec.name != kVp9CodecName; - }); - video_codecs_vpx.erase(it, video_codecs_vpx.end()); + std::erase_if(video_codecs_vpx, [](const RtpCodecCapability& codec) { + return codec.name != kVp8CodecName && codec.name != kVp9CodecName; + }); EXPECT_EQ(video_codecs_vpx.size(), 2u); // VP8, VP9 EXPECT_TRUE(send_transceiver->SetCodecPreferences(video_codecs_vpx).ok()); @@ -1815,13 +1804,10 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, auto recv_transceiver = callee->pc()->GetTransceivers().front(); auto video_codecs_vp8_rtx = video_codecs; - it = std::remove_if(video_codecs_vp8_rtx.begin(), video_codecs_vp8_rtx.end(), - [](const RtpCodecCapability& codec) { - bool r = codec.name != kVp8CodecName && - codec.name != kRtxCodecName; - return r; - }); - video_codecs_vp8_rtx.erase(it, video_codecs_vp8_rtx.end()); + std::erase_if(video_codecs_vp8_rtx, [](const RtpCodecCapability& codec) { + bool r = codec.name != kVp8CodecName && codec.name != kRtxCodecName; + return r; + }); EXPECT_EQ(video_codecs_vp8_rtx.size(), 2u); // VP8, RTX recv_transceiver->SetCodecPreferences(video_codecs_vp8_rtx); @@ -1859,12 +1845,9 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, auto send_transceiver = caller->pc()->GetTransceivers().front(); auto video_codecs_vpx = video_codecs; - auto it = std::remove_if(video_codecs_vpx.begin(), video_codecs_vpx.end(), - [](const RtpCodecCapability& codec) { - return codec.name != kVp8CodecName && - codec.name != kVp9CodecName; - }); - video_codecs_vpx.erase(it, video_codecs_vpx.end()); + std::erase_if(video_codecs_vpx, [](const RtpCodecCapability& codec) { + return codec.name != kVp8CodecName && codec.name != kVp9CodecName; + }); EXPECT_EQ(video_codecs_vpx.size(), 2u); // VP8, VP9 EXPECT_TRUE(send_transceiver->SetCodecPreferences(video_codecs_vpx).ok()); @@ -2103,12 +2086,10 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, SetCodecPreferencesVideoNoRtx) { .ok()); auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(MediaType::VIDEO); - auto it = - std::remove_if(capabilities.codecs.begin(), capabilities.codecs.end(), - [](const RtpCodecCapability& codec) { - return codec.name == kRtxCodecName; - }); - capabilities.codecs.erase(it, capabilities.codecs.end()); + + std::erase_if(capabilities.codecs, [](const RtpCodecCapability& codec) { + return codec.name == kRtxCodecName; + }); EXPECT_EQ(capabilities.codecs.size(), 2u); EXPECT_TRUE(video_transceiver->SetCodecPreferences(capabilities.codecs).ok()); diff --git a/third_party/libwebrtc/pc/rtp_sender.cc b/third_party/libwebrtc/pc/rtp_sender.cc @@ -84,12 +84,9 @@ bool PerSenderRtpEncodingParameterHasValue( void RemoveEncodingLayers(const std::vector<std::string>& rids, std::vector<RtpEncodingParameters>* encodings) { RTC_DCHECK(encodings); - encodings->erase( - std::remove_if(encodings->begin(), encodings->end(), - [&rids](const RtpEncodingParameters& encoding) { - return absl::c_linear_search(rids, encoding.rid); - }), - encodings->end()); + std::erase_if(*encodings, [&rids](const RtpEncodingParameters& encoding) { + return absl::c_linear_search(rids, encoding.rid); + }); } RtpParameters RestoreEncodingLayers( diff --git a/third_party/libwebrtc/pc/sdp_offer_answer.cc b/third_party/libwebrtc/pc/sdp_offer_answer.cc @@ -3259,13 +3259,11 @@ void SdpOfferAnswerHandler::RemoveStream(MediaStreamInterface* local_stream) { } } local_streams_->RemoveStream(local_stream); - stream_observers_.erase( - std::remove_if( - stream_observers_.begin(), stream_observers_.end(), - [local_stream](const std::unique_ptr<MediaStreamObserver>& observer) { - return observer->stream()->id().compare(local_stream->id()) == 0; - }), - stream_observers_.end()); + std::erase_if( + stream_observers_, + [local_stream](const std::unique_ptr<MediaStreamObserver>& observer) { + return observer->stream()->id().compare(local_stream->id()) == 0; + }); if (pc_->IsClosed()) { return; diff --git a/third_party/libwebrtc/pc/transceiver_list.h b/third_party/libwebrtc/pc/transceiver_list.h @@ -11,7 +11,6 @@ #ifndef PC_TRANSCEIVER_LIST_H_ #define PC_TRANSCEIVER_LIST_H_ -#include <algorithm> #include <cstddef> #include <map> #include <optional> @@ -115,9 +114,7 @@ class TransceiverList { } void Remove(RtpTransceiverProxyRefPtr transceiver) { RTC_DCHECK_RUN_ON(&sequence_checker_); - transceivers_.erase( - std::remove(transceivers_.begin(), transceivers_.end(), transceiver), - transceivers_.end()); + std::erase(transceivers_, transceiver); } RtpTransceiverProxyRefPtr FindBySender( scoped_refptr<RtpSenderInterface> sender) const;