tor-browser

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

commit a5797ef59feb28341143b0e330417cc468cc0d2f
parent e7712fe018ec4fd2f2656a509f92bbaeece2905f
Author: Dan Baker <dbaker@mozilla.com>
Date:   Mon,  1 Dec 2025 18:57:25 -0700

Bug 2000941 - Vendor libwebrtc from f6b68923a5

Upstream commit: https://webrtc.googlesource.com/src/+/f6b68923a5fd9d9dd31fdbd46e24f8b8c50d6ed9
    Add FieldTrialsView::clone

    To mitigate life-cycle problems when passing
    these between object with different life cycle.

    Bug: webrtc:443588673
    Change-Id: I85fab04a27678fb8dd96b98415a74c4b1a543829
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408881
    Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45614}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/api/BUILD.gn | 1+
Mthird_party/libwebrtc/api/environment/deprecated_global_field_trials.h | 5+++++
Mthird_party/libwebrtc/api/environment/environment_unittest.cc | 4++++
Mthird_party/libwebrtc/api/field_trials.h | 5+++++
Mthird_party/libwebrtc/api/field_trials_unittest.cc | 10++++++++++
Mthird_party/libwebrtc/api/field_trials_view.h | 12++++++++++++
Mthird_party/libwebrtc/moz-patch-stack/s0027.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0102.patch | 2+-
Mthird_party/libwebrtc/video/corruption_detection/evaluation/BUILD.gn | 2+-
Mthird_party/libwebrtc/video/corruption_detection/evaluation/webrtc_picture_pair_provider_unittest.cc | 9++-------
11 files changed, 44 insertions(+), 12 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-12-02T01:54:05.851086+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T01:57:08.120016+00:00. # base of lastest vendoring -0632af9a28 +f6b68923a5 diff --git a/third_party/libwebrtc/api/BUILD.gn b/third_party/libwebrtc/api/BUILD.gn @@ -1756,6 +1756,7 @@ rtc_source_set("field_trials_view") { visibility = [ "*" ] sources = [ "field_trials_view.h" ] deps = [ + "../rtc_base:checks", "../rtc_base/system:rtc_export", "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:string_view", diff --git a/third_party/libwebrtc/api/environment/deprecated_global_field_trials.h b/third_party/libwebrtc/api/environment/deprecated_global_field_trials.h @@ -10,6 +10,7 @@ #ifndef API_ENVIRONMENT_DEPRECATED_GLOBAL_FIELD_TRIALS_H_ #define API_ENVIRONMENT_DEPRECATED_GLOBAL_FIELD_TRIALS_H_ +#include <memory> #include <string> #include "absl/strings/string_view.h" @@ -22,6 +23,10 @@ class DeprecatedGlobalFieldTrials : public FieldTrialsRegistry { public: static void Set(const char* field_trials); + std::unique_ptr<FieldTrialsView> CreateCopy() const override { + return std::make_unique<DeprecatedGlobalFieldTrials>(); + } + private: std::string GetValue(absl::string_view key) const override; }; diff --git a/third_party/libwebrtc/api/environment/environment_unittest.cc b/third_party/libwebrtc/api/environment/environment_unittest.cc @@ -58,6 +58,10 @@ class FakeFieldTrials : public FieldTrialsView { return "fake"; } + std::unique_ptr<FieldTrialsView> CreateCopy() const override { + return std::make_unique<FakeFieldTrials>([] {}); + } + private: absl::AnyInvocable<void() &&> on_destroyed_; }; diff --git a/third_party/libwebrtc/api/field_trials.h b/third_party/libwebrtc/api/field_trials.h @@ -70,6 +70,11 @@ class FieldTrials : public FieldTrialsRegistry { // Setting empty `group` is valid and removes the `trial`. void Set(absl::string_view trial, absl::string_view group); + // Create a copy of this view. + std::unique_ptr<FieldTrialsView> CreateCopy() const override { + return std::make_unique<FieldTrials>(*this); + } + private: explicit FieldTrials(flat_map<std::string, std::string> key_value_map) : key_value_map_(std::move(key_value_map)) {} diff --git a/third_party/libwebrtc/api/field_trials_unittest.cc b/third_party/libwebrtc/api/field_trials_unittest.cc @@ -155,5 +155,15 @@ TEST(FieldTrialsTest, SettingEmptyValueRemovesFieldTrial) { EXPECT_EQ(f2.Lookup("Audio"), "Disabled"); } +TEST(FieldTrialsTest, CreateCopy) { + auto f = std::make_unique<FieldTrials>("Audio/Enabled/"); + f->RegisterKeysForTesting({"Audio"}); + + FieldTrialsView* view = f.get(); + auto copy = view->CreateCopy(); + f.reset(); + EXPECT_EQ(copy->Lookup("Audio"), "Enabled"); +} + } // namespace } // namespace webrtc diff --git a/third_party/libwebrtc/api/field_trials_view.h b/third_party/libwebrtc/api/field_trials_view.h @@ -10,10 +10,12 @@ #ifndef API_FIELD_TRIALS_VIEW_H_ #define API_FIELD_TRIALS_VIEW_H_ +#include <memory> #include <string> #include "absl/strings/match.h" #include "absl/strings/string_view.h" +#include "rtc_base/checks.h" #include "rtc_base/system/rtc_export.h" namespace webrtc { @@ -39,6 +41,16 @@ class RTC_EXPORT FieldTrialsView { bool IsDisabled(absl::string_view key) const { return absl::StartsWith(Lookup(key), "Disabled"); } + + // Create a copy of this view. + // + // This method can't be pure virtual, due to downstream projects + // but that is fine since they won't use the method...if they + // implement their own FieldTrialsView. + virtual std::unique_ptr<FieldTrialsView> CreateCopy() const { + RTC_CHECK_NOTREACHED(); + return nullptr; + } }; } // namespace webrtc diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -203,7 +203,7 @@ index 3efce2dd19..cbfc05f243 100644 } diff --git a/api/BUILD.gn b/api/BUILD.gn -index 1d7d864b06..e7788090b0 100644 +index 47f3e23450..462739dea8 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -44,6 +44,9 @@ rtc_library("enable_media") { diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch @@ -126,7 +126,7 @@ index 771e0b196a..7e1e8353ab 100644 "Generated during 'gn gen' by //BUILD.gn.", "", diff --git a/api/BUILD.gn b/api/BUILD.gn -index e7788090b0..d85d2d38e8 100644 +index 462739dea8..c6bf3e1bce 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -8,8 +8,8 @@ diff --git a/third_party/libwebrtc/video/corruption_detection/evaluation/BUILD.gn b/third_party/libwebrtc/video/corruption_detection/evaluation/BUILD.gn @@ -143,7 +143,7 @@ if (rtc_include_tests) { ":picture_pair_provider", ":utils", ":webrtc_picture_pair_provider", - "../../../api:field_trials_view", + "../../../api:field_trials", "../../../api:mock_video_codec_factory", "../../../api:mock_video_decoder", "../../../api:mock_video_encoder", diff --git a/third_party/libwebrtc/video/corruption_detection/evaluation/webrtc_picture_pair_provider_unittest.cc b/third_party/libwebrtc/video/corruption_detection/evaluation/webrtc_picture_pair_provider_unittest.cc @@ -22,7 +22,7 @@ #include "absl/strings/string_view.h" #include "api/environment/environment_factory.h" -#include "api/field_trials_view.h" +#include "api/field_trials.h" #include "api/scoped_refptr.h" #include "api/test/mock_video_decoder.h" #include "api/test/mock_video_decoder_factory.h" @@ -130,11 +130,6 @@ TestClip GetTestClip() { kCodecMode); } -class EmptyFieldTrials : public FieldTrialsView { - public: - std::string Lookup(absl::string_view key) const override { return ""; } -}; - class WebRtcPicturePairProviderTest : public TestWithParam<VideoCodecType> { protected: WebRtcPicturePairProviderTest() @@ -385,7 +380,7 @@ TEST_P(WebRtcPicturePairProviderTest, SetRatesWithSvcRateAllocator) { codec_config.spatialLayers[0].maxBitrate = bitrate_kbps; codec_config.spatialLayers[0].active = true; - SvcRateAllocator svc_rate_allocator(codec_config, EmptyFieldTrials()); + SvcRateAllocator svc_rate_allocator(codec_config, FieldTrials("")); VideoEncoder::RateControlParameters rate_params = VideoEncoder::RateControlParameters( svc_rate_allocator.GetAllocation(kDefaultBitrate.bps(), kFramerate),