commit ff984e485a6836801c32c23b44c6d9e466c58355 parent 109cf7a41f04689dacac035747a64925e0bc734b Author: Dan Baker <dbaker@mozilla.com> Date: Mon, 27 Oct 2025 12:05:13 -0600 Bug 1995393 - Vendor libwebrtc from 040f0e1e58 Upstream commit: https://webrtc.googlesource.com/src/+/040f0e1e58aa7e88e42757f5653630b3465d3bd5 Propagate clock into AudioNetworkAdapter Bug: webrtc:42223992 Change-Id: I32c048fcc2e7d4695b742f9ff61afbfc098143ec Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405703 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#45422} Diffstat:
16 files changed, 130 insertions(+), 131 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-27T18:01:15.023358+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T18:04:56.830326+00:00. # base of lastest vendoring -ba50cd239f +040f0e1e58 diff --git a/third_party/libwebrtc/modules/audio_coding/BUILD.gn b/third_party/libwebrtc/modules/audio_coding/BUILD.gn @@ -423,6 +423,7 @@ rtc_library("audio_network_adaptor") { deps = [ "../../api:array_view", "../../api/audio_codecs:audio_codecs_api", + "../../api/environment", "../../api/rtc_event_log", "../../common_audio", "../../logging:rtc_event_audio", @@ -430,7 +431,6 @@ rtc_library("audio_network_adaptor") { "../../rtc_base:logging", "../../rtc_base:protobuf_utils", "../../rtc_base:safe_conversions", - "../../rtc_base:timeutils", "../../rtc_base/system:file_wrapper", "../../system_wrappers", "//third_party/abseil-cpp/absl/algorithm:container", @@ -1549,6 +1549,7 @@ if (rtc_include_tests) { "../../system_wrappers", "../../test:audio_codec_mocks", "../../test:audio_test_common", + "../../test:create_test_environment", "../../test:create_test_field_trials", "../../test:fileutils", "../../test:rtc_expect_death", diff --git a/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc b/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc @@ -18,13 +18,13 @@ #include <utility> #include "api/audio_codecs/audio_encoder.h" +#include "api/environment/environment.h" #include "modules/audio_coding/audio_network_adaptor/controller.h" #include "modules/audio_coding/audio_network_adaptor/controller_manager.h" #include "modules/audio_coding/audio_network_adaptor/debug_dump_writer.h" #include "modules/audio_coding/audio_network_adaptor/event_log_writer.h" #include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h" #include "rtc_base/checks.h" -#include "rtc_base/time_utils.h" namespace webrtc { @@ -34,24 +34,18 @@ constexpr float kEventLogMinBitrateChangeFraction = 0.25; constexpr float kEventLogMinPacketLossChangeFraction = 0.5; } // namespace -AudioNetworkAdaptorImpl::Config::Config() : event_log(nullptr) {} - -AudioNetworkAdaptorImpl::Config::~Config() = default; - AudioNetworkAdaptorImpl::AudioNetworkAdaptorImpl( - const Config& config, + const Environment& env, std::unique_ptr<ControllerManager> controller_manager, std::unique_ptr<DebugDumpWriter> debug_dump_writer) - : config_(config), + : env_(env), controller_manager_(std::move(controller_manager)), debug_dump_writer_(std::move(debug_dump_writer)), - event_log_writer_( - config.event_log - ? new EventLogWriter(config.event_log, - kEventLogMinBitrateChangeBps, - kEventLogMinBitrateChangeFraction, - kEventLogMinPacketLossChangeFraction) - : nullptr) { + event_log_writer_(std::make_unique<EventLogWriter>( + &env_.event_log(), + kEventLogMinBitrateChangeBps, + kEventLogMinBitrateChangeFraction, + kEventLogMinPacketLossChangeFraction)) { RTC_DCHECK(controller_manager_); } @@ -140,11 +134,12 @@ AudioEncoderRuntimeConfig AudioNetworkAdaptorImpl::GetEncoderRuntimeConfig() { } prev_config_ = config; - if (debug_dump_writer_) - debug_dump_writer_->DumpEncoderRuntimeConfig(config, TimeMillis()); + if (debug_dump_writer_) { + debug_dump_writer_->DumpEncoderRuntimeConfig( + config, env_.clock().TimeInMilliseconds()); + } - if (event_log_writer_) - event_log_writer_->MaybeLogEncoderConfig(config); + event_log_writer_->MaybeLogEncoderConfig(config); return config; } @@ -162,8 +157,10 @@ ANAStats AudioNetworkAdaptorImpl::GetStats() const { } void AudioNetworkAdaptorImpl::DumpNetworkMetrics() { - if (debug_dump_writer_) - debug_dump_writer_->DumpNetworkMetrics(last_metrics_, TimeMillis()); + if (debug_dump_writer_) { + debug_dump_writer_->DumpNetworkMetrics(last_metrics_, + env_.clock().TimeInMilliseconds()); + } } void AudioNetworkAdaptorImpl::UpdateNetworkMetrics( diff --git a/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h b/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h @@ -17,6 +17,7 @@ #include <optional> #include "api/audio_codecs/audio_encoder.h" +#include "api/environment/environment.h" #include "modules/audio_coding/audio_network_adaptor/controller.h" #include "modules/audio_coding/audio_network_adaptor/debug_dump_writer.h" #include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h" @@ -26,18 +27,11 @@ namespace webrtc { class ControllerManager; class EventLogWriter; -class RtcEventLog; class AudioNetworkAdaptorImpl final : public AudioNetworkAdaptor { public: - struct Config { - Config(); - ~Config(); - RtcEventLog* event_log; - }; - AudioNetworkAdaptorImpl( - const Config& config, + const Environment& env, std::unique_ptr<ControllerManager> controller_manager, std::unique_ptr<DebugDumpWriter> debug_dump_writer = nullptr); @@ -69,7 +63,7 @@ class AudioNetworkAdaptorImpl final : public AudioNetworkAdaptor { void UpdateNetworkMetrics(const Controller::NetworkMetrics& network_metrics); - const Config config_; + const Environment env_; std::unique_ptr<ControllerManager> controller_manager_; diff --git a/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc b/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc @@ -25,6 +25,7 @@ #include "modules/audio_coding/audio_network_adaptor/mock/mock_controller_manager.h" #include "modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h" #include "rtc_base/fake_clock.h" +#include "test/create_test_environment.h" #include "test/gmock.h" #include "test/gtest.h" @@ -94,18 +95,17 @@ AudioNetworkAdaptorStates CreateAudioNetworkAdaptor() { EXPECT_CALL(*controller_manager, GetSortedControllers(_)) .WillRepeatedly(Return(controllers)); - states.event_log.reset(new NiceMock<MockRtcEventLog>()); + states.event_log = std::make_unique<NiceMock<MockRtcEventLog>>(); auto debug_dump_writer = std::unique_ptr<MockDebugDumpWriter>(new NiceMock<MockDebugDumpWriter>()); EXPECT_CALL(*debug_dump_writer, Die()); states.mock_debug_dump_writer = debug_dump_writer.get(); - AudioNetworkAdaptorImpl::Config config; - config.event_log = states.event_log.get(); // AudioNetworkAdaptorImpl governs the lifetime of controller manager. - states.audio_network_adaptor.reset(new AudioNetworkAdaptorImpl( - config, std::move(controller_manager), std::move(debug_dump_writer))); + states.audio_network_adaptor = std::make_unique<AudioNetworkAdaptorImpl>( + CreateTestEnvironment({.event_log = states.event_log.get()}), + std::move(controller_manager), std::move(debug_dump_writer)); return states; } diff --git a/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/controller_manager.cc b/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/controller_manager.cc @@ -24,6 +24,7 @@ #include "absl/strings/string_view.h" #include "api/array_view.h" +#include "api/environment/environment.h" #include "modules/audio_coding/audio_network_adaptor/bitrate_controller.h" #include "modules/audio_coding/audio_network_adaptor/channel_controller.h" #include "modules/audio_coding/audio_network_adaptor/controller.h" @@ -34,7 +35,6 @@ #include "modules/audio_coding/audio_network_adaptor/frame_length_controller_v2.h" #include "modules/audio_coding/audio_network_adaptor/util/threshold_curve.h" #include "rtc_base/checks.h" -#include "rtc_base/time_utils.h" #if WEBRTC_ENABLE_PROTOBUF #ifdef WEBRTC_ANDROID_PLATFORM_BUILD @@ -227,22 +227,7 @@ ControllerManagerImpl::Config::Config(int min_reordering_time_ms, ControllerManagerImpl::Config::~Config() = default; std::unique_ptr<ControllerManager> ControllerManagerImpl::Create( - absl::string_view config_string, - size_t num_encoder_channels, - ArrayView<const int> encoder_frame_lengths_ms, - int min_encoder_bitrate_bps, - size_t intial_channels_to_encode, - int initial_frame_length_ms, - int initial_bitrate_bps, - bool initial_fec_enabled, - bool initial_dtx_enabled) { - return Create(config_string, num_encoder_channels, encoder_frame_lengths_ms, - min_encoder_bitrate_bps, intial_channels_to_encode, - initial_frame_length_ms, initial_bitrate_bps, - initial_fec_enabled, initial_dtx_enabled, nullptr); -} - -std::unique_ptr<ControllerManager> ControllerManagerImpl::Create( + const Environment& env, absl::string_view config_string, size_t num_encoder_channels, ArrayView<const int> encoder_frame_lengths_ms, @@ -258,8 +243,8 @@ std::unique_ptr<ControllerManager> ControllerManagerImpl::Create( RTC_CHECK( controller_manager_config.ParseFromString(std::string(config_string))); if (debug_dump_writer) - debug_dump_writer->DumpControllerManagerConfig(controller_manager_config, - TimeMillis()); + debug_dump_writer->DumpControllerManagerConfig( + controller_manager_config, env.clock().TimeInMilliseconds()); std::vector<std::unique_ptr<Controller>> controllers; std::map<const Controller*, std::pair<int, float>> scoring_points; @@ -316,17 +301,18 @@ std::unique_ptr<ControllerManager> ControllerManagerImpl::Create( } if (scoring_points.empty()) { - return std::unique_ptr<ControllerManagerImpl>( - new ControllerManagerImpl(ControllerManagerImpl::Config(0, 0), - std::move(controllers), scoring_points)); + return std::make_unique<ControllerManagerImpl>( + env, ControllerManagerImpl::Config(0, 0), std::move(controllers), + scoring_points); } else { RTC_CHECK(controller_manager_config.has_min_reordering_time_ms()); RTC_CHECK(controller_manager_config.has_min_reordering_squared_distance()); - return std::unique_ptr<ControllerManagerImpl>(new ControllerManagerImpl( + return std::make_unique<ControllerManagerImpl>( + env, ControllerManagerImpl::Config( controller_manager_config.min_reordering_time_ms(), controller_manager_config.min_reordering_squared_distance()), - std::move(controllers), scoring_points)); + std::move(controllers), scoring_points); } #else @@ -335,17 +321,17 @@ std::unique_ptr<ControllerManager> ControllerManagerImpl::Create( #endif // WEBRTC_ENABLE_PROTOBUF } -ControllerManagerImpl::ControllerManagerImpl(const Config& config) - : ControllerManagerImpl( - config, - std::vector<std::unique_ptr<Controller>>(), - std::map<const Controller*, std::pair<int, float>>()) {} +ControllerManagerImpl::ControllerManagerImpl(const Environment& env, + const Config& config) + : ControllerManagerImpl(env, config, {}, {}) {} ControllerManagerImpl::ControllerManagerImpl( + const Environment& env, const Config& config, std::vector<std::unique_ptr<Controller>> controllers, const std::map<const Controller*, std::pair<int, float>>& scoring_points) - : config_(config), + : env_(env), + config_(config), controllers_(std::move(controllers)), last_reordering_time_ms_(std::nullopt), last_scoring_point_(0, 0.0) { @@ -369,7 +355,7 @@ std::vector<Controller*> ControllerManagerImpl::GetSortedControllers( if (!metrics.uplink_bandwidth_bps || !metrics.uplink_packet_loss_fraction) return sorted_controllers_; - const int64_t now_ms = TimeMillis(); + const int64_t now_ms = env_.clock().TimeInMilliseconds(); if (last_reordering_time_ms_ && now_ms - *last_reordering_time_ms_ < config_.min_reordering_time_ms) return sorted_controllers_; diff --git a/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/controller_manager.h b/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/controller_manager.h @@ -21,6 +21,7 @@ #include "absl/strings/string_view.h" #include "api/array_view.h" +#include "api/environment/environment.h" #include "modules/audio_coding/audio_network_adaptor/controller.h" namespace webrtc { @@ -51,17 +52,7 @@ class ControllerManagerImpl final : public ControllerManager { }; static std::unique_ptr<ControllerManager> Create( - absl::string_view config_string, - size_t num_encoder_channels, - ArrayView<const int> encoder_frame_lengths_ms, - int min_encoder_bitrate_bps, - size_t intial_channels_to_encode, - int initial_frame_length_ms, - int initial_bitrate_bps, - bool initial_fec_enabled, - bool initial_dtx_enabled); - - static std::unique_ptr<ControllerManager> Create( + const Environment& env, absl::string_view config_string, size_t num_encoder_channels, ArrayView<const int> encoder_frame_lengths_ms, @@ -71,12 +62,13 @@ class ControllerManagerImpl final : public ControllerManager { int initial_bitrate_bps, bool initial_fec_enabled, bool initial_dtx_enabled, - DebugDumpWriter* debug_dump_writer); + DebugDumpWriter* debug_dump_writer = nullptr); - explicit ControllerManagerImpl(const Config& config); + explicit ControllerManagerImpl(const Environment& env, const Config& config); // Dependency injection for testing. ControllerManagerImpl( + const Environment& env, const Config& config, std::vector<std::unique_ptr<Controller>> controllers, const std::map<const Controller*, std::pair<int, float>>& @@ -107,6 +99,7 @@ class ControllerManagerImpl final : public ControllerManager { float uplink_packet_loss_fraction; }; + const Environment env_; const Config config_; std::vector<std::unique_ptr<Controller>> controllers_; diff --git a/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc b/third_party/libwebrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc @@ -21,13 +21,16 @@ #include <vector> #include "absl/strings/string_view.h" +#include "api/environment/environment.h" #include "api/units/time_delta.h" +#include "api/units/timestamp.h" #include "modules/audio_coding/audio_network_adaptor/controller.h" #include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h" #include "modules/audio_coding/audio_network_adaptor/mock/mock_controller.h" #include "modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h" #include "rtc_base/checks.h" -#include "rtc_base/fake_clock.h" +#include "system_wrappers/include/clock.h" +#include "test/create_test_environment.h" #include "test/gmock.h" #include "test/gtest.h" @@ -65,7 +68,8 @@ struct ControllerManagerStates { std::vector<MockController*> mock_controllers; }; -ControllerManagerStates CreateControllerManager() { +ControllerManagerStates CreateControllerManager( + const Environment& env = CreateTestEnvironment()) { ControllerManagerStates states; std::vector<std::unique_ptr<Controller>> controllers; std::map<const Controller*, std::pair<int, float>> chracteristic_points; @@ -85,10 +89,11 @@ ControllerManagerStates CreateControllerManager() { std::make_pair(kChracteristicBandwithBps[1], kChracteristicPacketLossFraction[1]); - states.controller_manager.reset(new ControllerManagerImpl( + states.controller_manager = std::make_unique<ControllerManagerImpl>( + env, ControllerManagerImpl::Config(kMinReorderingTimeMs, kMinReorderingSquareDistance), - std::move(controllers), chracteristic_points)); + std::move(controllers), chracteristic_points); return states; } @@ -152,8 +157,9 @@ TEST(ControllerManagerTest, ControllersWithCharPointDependOnNetworkMetrics) { } TEST(ControllerManagerTest, DoNotReorderBeforeMinReordingTime) { - ScopedFakeClock fake_clock; - auto states = CreateControllerManager(); + SimulatedClock fake_clock(Timestamp::Seconds(123'456)); + auto states = + CreateControllerManager(CreateTestEnvironment({.time = &fake_clock})); CheckControllersOrder(&states, kChracteristicBandwithBps[0], kChracteristicPacketLossFraction[0], {kNumControllers - 2, kNumControllers - 1, 0, 1}); @@ -167,8 +173,9 @@ TEST(ControllerManagerTest, DoNotReorderBeforeMinReordingTime) { } TEST(ControllerManagerTest, ReorderBeyondMinReordingTimeAndMinDistance) { - ScopedFakeClock fake_clock; - auto states = CreateControllerManager(); + SimulatedClock fake_clock(Timestamp::Seconds(123'456)); + auto states = + CreateControllerManager(CreateTestEnvironment({.time = &fake_clock})); constexpr int kBandwidthBps = (kChracteristicBandwithBps[0] + kChracteristicBandwithBps[1]) / 2; constexpr float kPacketLossFraction = (kChracteristicPacketLossFraction[0] + @@ -186,8 +193,9 @@ TEST(ControllerManagerTest, ReorderBeyondMinReordingTimeAndMinDistance) { } TEST(ControllerManagerTest, DoNotReorderIfNetworkMetricsChangeTooSmall) { - ScopedFakeClock fake_clock; - auto states = CreateControllerManager(); + SimulatedClock fake_clock(Timestamp::Seconds(123'456)); + auto states = + CreateControllerManager(CreateTestEnvironment({.time = &fake_clock})); constexpr int kBandwidthBps = (kChracteristicBandwithBps[0] + kChracteristicBandwithBps[1]) / 2; constexpr float kPacketLossFraction = (kChracteristicPacketLossFraction[0] + @@ -286,17 +294,23 @@ constexpr int kInitialFrameLengthMs = 60; constexpr int kMinBitrateBps = 6000; ControllerManagerStates CreateControllerManager( + const Environment& env, absl::string_view config_string) { ControllerManagerStates states; constexpr size_t kNumEncoderChannels = 2; const std::vector<int> encoder_frame_lengths_ms = {20, 60}; states.controller_manager = ControllerManagerImpl::Create( - config_string, kNumEncoderChannels, encoder_frame_lengths_ms, + env, config_string, kNumEncoderChannels, encoder_frame_lengths_ms, kMinBitrateBps, kIntialChannelsToEncode, kInitialFrameLengthMs, kInitialBitrateBps, kInitialFecEnabled, kInitialDtxEnabled); return states; } +ControllerManagerStates CreateControllerManager( + absl::string_view config_string) { + return CreateControllerManager(CreateTestEnvironment(), config_string); +} + enum class ControllerType : int8_t { FEC, CHANNEL, @@ -363,21 +377,19 @@ TEST(ControllerManagerTest, DebugDumpLoggedWhenCreateFromConfigString) { constexpr size_t kNumEncoderChannels = 2; const std::vector<int> encoder_frame_lengths_ms = {20, 60}; - constexpr int64_t kClockInitialTimeMs = 12345678; - ScopedFakeClock fake_clock; - fake_clock.AdvanceTime(TimeDelta::Millis(kClockInitialTimeMs)); + SimulatedClock fake_clock(Timestamp::Millis(12'345'678)); auto debug_dump_writer = std::unique_ptr<MockDebugDumpWriter>(new NiceMock<MockDebugDumpWriter>()); EXPECT_CALL(*debug_dump_writer, Die()); EXPECT_CALL(*debug_dump_writer, DumpControllerManagerConfig(ControllerManagerEqual(config), - kClockInitialTimeMs)); + fake_clock.TimeInMilliseconds())); - ControllerManagerImpl::Create(config_string, kNumEncoderChannels, - encoder_frame_lengths_ms, kMinBitrateBps, - kIntialChannelsToEncode, kInitialFrameLengthMs, - kInitialBitrateBps, kInitialFecEnabled, - kInitialDtxEnabled, debug_dump_writer.get()); + ControllerManagerImpl::Create( + CreateTestEnvironment({.time = &fake_clock}), config_string, + kNumEncoderChannels, encoder_frame_lengths_ms, kMinBitrateBps, + kIntialChannelsToEncode, kInitialFrameLengthMs, kInitialBitrateBps, + kInitialFecEnabled, kInitialDtxEnabled, debug_dump_writer.get()); } TEST(ControllerManagerTest, CreateFromConfigStringAndCheckDefaultOrder) { @@ -427,7 +439,7 @@ TEST(ControllerManagerTest, CreateCharPointFreeConfigAndCheckDefaultOrder) { } TEST(ControllerManagerTest, CreateFromConfigStringAndCheckReordering) { - ScopedFakeClock fake_clock; + SimulatedClock fake_clock(Timestamp::Seconds(123'456)); audio_network_adaptor::config::ControllerManager config; config.set_min_reordering_time_ms(kMinReorderingTimeMs); config.set_min_reordering_squared_distance(kMinReorderingSquareDistance); @@ -447,7 +459,8 @@ TEST(ControllerManagerTest, CreateFromConfigStringAndCheckReordering) { std::string config_string; config.SerializeToString(&config_string); - auto states = CreateControllerManager(config_string); + auto states = CreateControllerManager( + CreateTestEnvironment({.time = &fake_clock}), config_string); Controller::NetworkMetrics metrics; metrics.uplink_bandwidth_bps = kChracteristicBandwithBps[0]; diff --git a/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/third_party/libwebrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -771,14 +771,13 @@ void AudioEncoderOpusImpl::ApplyAudioNetworkAdaptor() { std::unique_ptr<AudioNetworkAdaptor> AudioEncoderOpusImpl::DefaultAudioNetworkAdaptorCreator( absl::string_view config_string) const { - AudioNetworkAdaptorImpl::Config config; - config.event_log = &env_.event_log(); return std::make_unique<AudioNetworkAdaptorImpl>( - config, ControllerManagerImpl::Create( - config_string, NumChannels(), supported_frame_lengths_ms(), - AudioEncoderOpusConfig::kMinBitrateBps, - num_channels_to_encode_, next_frame_length_ms_, - GetTargetBitrate(), config_.fec_enabled, GetDtx())); + env_, + ControllerManagerImpl::Create( + env_, config_string, NumChannels(), supported_frame_lengths_ms(), + AudioEncoderOpusConfig::kMinBitrateBps, num_channels_to_encode_, + next_frame_length_ms_, GetTargetBitrate(), config_.fec_enabled, + GetDtx())); } void AudioEncoderOpusImpl::MaybeUpdateUplinkBandwidth() { diff --git a/third_party/libwebrtc/moz-patch-stack/s0007.patch b/third_party/libwebrtc/moz-patch-stack/s0007.patch @@ -9,7 +9,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/92a7c3eee9f0c80ff 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc -index 549b14fb12..8e50531e5a 100644 +index afe80d54b0..3dc679bc28 100644 --- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc +++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -245,7 +245,7 @@ AudioCodecInfo AudioEncoderOpusImpl::QueryAudioEncoder( diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -723,7 +723,7 @@ index 6d4d4a2363..316408a9b3 100644 : content_hint(VideoTrackInterface::ContentHint::kNone) {} VideoOptions::~VideoOptions() = default; diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn -index 9649f0c940..51570e8c95 100644 +index 0c56427b29..13c9533524 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -362,7 +362,7 @@ rtc_library("webrtc_opus_wrapper") { @@ -1199,10 +1199,10 @@ index c1181618e9..4a772795ed 100644 deps += [ "..:logging", diff --git a/test/BUILD.gn b/test/BUILD.gn -index 2e8752ab0c..f9bcdf7a0d 100644 +index d0a12dc0f7..9ce787a429 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn -@@ -277,6 +277,7 @@ rtc_library("audio_test_common") { +@@ -279,6 +279,7 @@ rtc_library("audio_test_common") { ] } @@ -1210,7 +1210,7 @@ index 2e8752ab0c..f9bcdf7a0d 100644 if (!build_with_chromium) { if (is_mac || is_ios) { rtc_library("video_test_mac") { -@@ -332,8 +333,12 @@ if (!build_with_chromium) { +@@ -334,8 +335,12 @@ if (!build_with_chromium) { } } } @@ -1223,7 +1223,7 @@ index 2e8752ab0c..f9bcdf7a0d 100644 testonly = true sources = [ "rtcp_packet_parser.cc", -@@ -343,6 +348,7 @@ rtc_library("rtp_test_utils") { +@@ -345,6 +350,7 @@ rtc_library("rtp_test_utils") { "rtp_file_writer.cc", "rtp_file_writer.h", ] @@ -1231,7 +1231,7 @@ index 2e8752ab0c..f9bcdf7a0d 100644 deps = [ "../api:array_view", -@@ -522,7 +528,9 @@ rtc_library("video_frame_writer") { +@@ -524,7 +530,9 @@ rtc_library("video_frame_writer") { ] if (!is_ios) { @@ -1241,7 +1241,7 @@ index 2e8752ab0c..f9bcdf7a0d 100644 sources += [ "testsupport/jpeg_frame_writer.cc" ] } else { sources += [ "testsupport/jpeg_frame_writer_ios.cc" ] -@@ -1357,6 +1365,7 @@ if (!build_with_chromium) { +@@ -1359,6 +1367,7 @@ if (!build_with_chromium) { } } @@ -1249,7 +1249,7 @@ index 2e8752ab0c..f9bcdf7a0d 100644 if (!build_with_chromium && is_android) { rtc_android_library("native_test_java") { testonly = true -@@ -1399,6 +1408,7 @@ if (!build_with_chromium && is_android) { +@@ -1401,6 +1410,7 @@ if (!build_with_chromium && is_android) { sources = [ "android/org/webrtc/native_test/NativeTestWebrtc.java" ] } } diff --git a/third_party/libwebrtc/moz-patch-stack/s0099.patch b/third_party/libwebrtc/moz-patch-stack/s0099.patch @@ -16,7 +16,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/bbec1b95ddb5e0096 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn -index 51570e8c95..d900e550b7 100644 +index 13c9533524..59e121b7b6 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -362,7 +362,7 @@ rtc_library("webrtc_opus_wrapper") { @@ -86,10 +86,10 @@ index ef363d15a6..90389a59fc 100644 if (!build_with_mozilla) { diff --git a/test/BUILD.gn b/test/BUILD.gn -index f9bcdf7a0d..f3d2496773 100644 +index 9ce787a429..90a398fff3 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn -@@ -489,6 +489,12 @@ rtc_source_set("test_support") { +@@ -491,6 +491,12 @@ rtc_source_set("test_support") { "//testing/gmock", "//testing/gtest", ] diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch @@ -756,7 +756,7 @@ index 822b565610..f2ea548824 100644 import("../webrtc.gni") diff --git a/test/BUILD.gn b/test/BUILD.gn -index f3d2496773..28ac646821 100644 +index 90a398fff3..685e1ac082 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -6,10 +6,10 @@ @@ -772,7 +772,7 @@ index f3d2496773..28ac646821 100644 import("//third_party/jni_zero/jni_zero.gni") } -@@ -434,7 +434,7 @@ if (is_ios && !build_with_chromium) { +@@ -436,7 +436,7 @@ if (is_ios && !build_with_chromium) { testonly = true visibility = [ "*" ] sources = [ "ios/google_test_runner.mm" ] diff --git a/third_party/libwebrtc/test/BUILD.gn b/third_party/libwebrtc/test/BUILD.gn @@ -162,7 +162,9 @@ rtc_library("create_test_environment") { "../api:time_controller", "../api/environment", "../api/environment:environment_factory", + "../api/rtc_event_log", "../rtc_base:checks", + "../system_wrappers", "//third_party/abseil-cpp/absl/base:nullability", "//third_party/abseil-cpp/absl/strings:string_view", ] diff --git a/third_party/libwebrtc/test/create_test_environment.cc b/third_party/libwebrtc/test/create_test_environment.cc @@ -20,7 +20,9 @@ #include "api/environment/environment_factory.h" #include "api/field_trials.h" #include "api/field_trials_view.h" +#include "api/test/time_controller.h" #include "rtc_base/checks.h" +#include "system_wrappers/include/clock.h" #include "test/create_test_field_trials.h" namespace webrtc { @@ -48,17 +50,24 @@ struct SetFieldTrials { EnvironmentFactory& factory; }; +struct SetTime { + void operator()(Clock* clock) { factory.Set(clock); } + void operator()(TimeController* absl_nonnull time) { + factory.Set(time->GetClock()); + factory.Set(time->GetTaskQueueFactory()); + } + + EnvironmentFactory& factory; +}; + } // namespace Environment CreateTestEnvironment(CreateTestEnvironmentOptions o) { EnvironmentFactory factory; - std::visit(SetFieldTrials{factory}, std::move(o.field_trials)); - - if (o.time != nullptr) { - factory.Set(o.time->GetClock()); - factory.Set(o.time->GetTaskQueueFactory()); - } + std::visit(SetFieldTrials{.factory = factory}, std::move(o.field_trials)); + std::visit(SetTime{.factory = factory}, o.time); + factory.Set(o.event_log); return factory.Create(); } diff --git a/third_party/libwebrtc/test/create_test_environment.h b/third_party/libwebrtc/test/create_test_environment.h @@ -18,7 +18,9 @@ #include "api/environment/environment.h" #include "api/field_trials.h" #include "api/field_trials_view.h" +#include "api/rtc_event_log/rtc_event_log.h" #include "api/test/time_controller.h" +#include "system_wrappers/include/clock.h" namespace webrtc { @@ -33,7 +35,10 @@ struct CreateTestEnvironmentOptions { absl_nonnull std::unique_ptr<FieldTrialsView>, FieldTrials> field_trials; - TimeController* time = nullptr; + std::variant<Clock * absl_nullable, // + TimeController * absl_nonnull> + time; + RtcEventLog* event_log = nullptr; }; Environment CreateTestEnvironment(CreateTestEnvironmentOptions o = {});