From: Dan Baker Date: Thu, 14 Mar 2024 10:51:00 -0600 Subject: Bug 1883116 - (fix-e79e722834) add enviroment_factory to libwebrtc build and enforce providing clock and task_queue when creating Environment Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/2185cab977988fd4ab03b38dc67f9b06162444da --- BUILD.gn | 1 + api/environment/environment_factory.cc | 10 ++++++++++ api/task_queue/BUILD.gn | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/BUILD.gn b/BUILD.gn index 7feca08e60..85ead4162f 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -580,6 +580,7 @@ if (!build_with_chromium) { if (build_with_mozilla) { deps += [ + "api/environment:environment_factory", "api/video:video_frame", "api/video:video_rtp_headers", "test:rtp_test_utils", diff --git a/api/environment/environment_factory.cc b/api/environment/environment_factory.cc index c0b681aa08..6f0ec40dbe 100644 --- a/api/environment/environment_factory.cc +++ b/api/environment/environment_factory.cc @@ -97,12 +97,22 @@ Environment EnvironmentFactory::CreateWithDefaults() && { if (field_trials_ == nullptr) { Set(std::make_unique()); } +#if defined(WEBRTC_MOZILLA_BUILD) + // We want to use our clock, not GetRealTimeClockRaw, and we avoid + // building the code under third_party/libwebrtc/task_queue. To + // ensure we're setting up things correctly, namely providing an + // Environment object with a preset task_queue_factory and clock, + // we'll do a release assert here. + RTC_CHECK(clock_); + RTC_CHECK(task_queue_factory_); +#else if (clock_ == nullptr) { Set(Clock::GetRealTimeClock()); } if (task_queue_factory_ == nullptr) { Set(CreateDefaultTaskQueueFactory(field_trials_)); } +#endif if (event_log_ == nullptr) { Set(std::make_unique()); } diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn index b9bc81171f..c24c22a1f6 100644 --- a/api/task_queue/BUILD.gn +++ b/api/task_queue/BUILD.gn @@ -88,6 +88,10 @@ rtc_library("task_queue_test") { } rtc_library("default_task_queue_factory") { +# Mozilla - disable this entire target to avoid inclusion of code we want +# to avoid. Better here than trying to wack-a-mole for places that list +# it as a dependency. +if (!build_with_mozilla) { visibility = [ "*" ] if (!is_ios && !is_android) { # Internally webrtc shouldn't rely on any specific TaskQueue implementation @@ -126,6 +130,7 @@ rtc_library("default_task_queue_factory") { sources += [ "default_task_queue_factory_stdlib.cc" ] deps += [ "../../rtc_base:rtc_task_queue_stdlib" ] } +} # of if (!build_with_mozilla) { } rtc_library("pending_task_safety_flag") {