Update MediaEngine unittests to create Call using Environment

Bug: webrtc:15656
Change-Id: I8016f03fd0640d218344f5a6ab53c4b0663690c0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/329081
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41260}
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 6b8eaf7..3f18a79 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -825,6 +825,8 @@
         "../api:simulcast_test_fixture_api",
         "../api/audio_codecs:builtin_audio_decoder_factory",
         "../api/audio_codecs:builtin_audio_encoder_factory",
+        "../api/environment",
+        "../api/environment:environment_factory",
         "../api/rtc_event_log",
         "../api/task_queue",
         "../api/task_queue:default_task_queue_factory",
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index 645413b..f573667 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -20,9 +20,9 @@
 
 #include "absl/algorithm/container.h"
 #include "absl/strings/match.h"
-#include "api/rtc_event_log/rtc_event_log.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
 #include "api/rtp_parameters.h"
-#include "api/task_queue/default_task_queue_factory.h"
 #include "api/test/mock_encoder_selector.h"
 #include "api/test/mock_video_bitrate_allocator.h"
 #include "api/test/mock_video_bitrate_allocator_factory.h"
@@ -101,6 +101,8 @@
 using ::webrtc::BitrateConstraints;
 using ::webrtc::Call;
 using ::webrtc::CallConfig;
+using ::webrtc::CreateEnvironment;
+using ::webrtc::Environment;
 using ::webrtc::kDefaultScalabilityModeStr;
 using ::webrtc::RtpExtension;
 using ::webrtc::RtpPacket;
@@ -355,13 +357,10 @@
   explicit WebRtcVideoEngineTest(const std::string& field_trials)
       : field_trials_(field_trials),
         time_controller_(webrtc::Timestamp::Millis(4711)),
-        task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
-        call_(Call::Create([&] {
-          CallConfig call_config(&event_log_);
-          call_config.task_queue_factory = task_queue_factory_.get();
-          call_config.trials = &field_trials_;
-          return call_config;
-        }())),
+        env_(CreateEnvironment(&field_trials_,
+                               time_controller_.CreateTaskQueueFactory(),
+                               time_controller_.GetClock())),
+        call_(Call::Create(CallConfig(env_))),
         encoder_factory_(new cricket::FakeWebRtcVideoEncoderFactory),
         decoder_factory_(new cricket::FakeWebRtcVideoDecoderFactory),
         video_bitrate_allocator_factory_(
@@ -398,8 +397,7 @@
 
   webrtc::test::ScopedKeyValueConfig field_trials_;
   webrtc::GlobalSimulatedTimeController time_controller_;
-  webrtc::RtcEventLogNull event_log_;
-  std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
+  Environment env_;
   // Used in WebRtcVideoEngineVoiceTest, but defined here so it's properly
   // initialized when the constructor is called.
   std::unique_ptr<Call> call_;
@@ -1479,14 +1477,10 @@
   EXPECT_CALL(*decoder_factory, CreateVideoDecoder(format)).Times(0);
 
   // Create a call.
-  webrtc::RtcEventLogNull event_log;
   webrtc::GlobalSimulatedTimeController time_controller(
       webrtc::Timestamp::Millis(4711));
-  auto task_queue_factory = time_controller.CreateTaskQueueFactory();
-  CallConfig call_config(&event_log);
-  webrtc::FieldTrialBasedConfig field_trials;
-  call_config.trials = &field_trials;
-  call_config.task_queue_factory = task_queue_factory.get();
+  CallConfig call_config(CreateEnvironment(
+      time_controller.CreateTaskQueueFactory(), time_controller.GetClock()));
   const std::unique_ptr<Call> call = Call::Create(call_config);
 
   // Create send channel.
@@ -1615,18 +1609,11 @@
 
 class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test {
  protected:
-  CallConfig GetCallConfig(webrtc::RtcEventLogNull* event_log,
-                           webrtc::TaskQueueFactory* task_queue_factory) {
-    CallConfig call_config(event_log);
-    call_config.task_queue_factory = task_queue_factory;
-    call_config.trials = &field_trials_;
-    return call_config;
-  }
-
   WebRtcVideoChannelEncodedFrameCallbackTest()
-      : task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
-        call_(Call::Create(
-            GetCallConfig(&event_log_, task_queue_factory_.get()))),
+      : env_(CreateEnvironment(&field_trials_,
+                               time_controller_.CreateTaskQueueFactory(),
+                               time_controller_.GetClock())),
+        call_(Call::Create(CallConfig(env_))),
         video_bitrate_allocator_factory_(
             webrtc::CreateBuiltinVideoBitrateAllocatorFactory()),
         engine_(
@@ -1676,8 +1663,7 @@
   webrtc::GlobalSimulatedTimeController time_controller_{
       Timestamp::Seconds(1000)};
   webrtc::test::ScopedKeyValueConfig field_trials_;
-  webrtc::RtcEventLogNull event_log_;
-  std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
+  Environment env_;
   std::unique_ptr<Call> call_;
   std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
       video_bitrate_allocator_factory_;
@@ -1796,7 +1782,9 @@
 class WebRtcVideoChannelBaseTest : public ::testing::Test {
  protected:
   WebRtcVideoChannelBaseTest()
-      : task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
+      : env_(CreateEnvironment(&field_trials_,
+                               time_controller_.CreateTaskQueueFactory(),
+                               time_controller_.GetClock())),
         video_bitrate_allocator_factory_(
             webrtc::CreateBuiltinVideoBitrateAllocatorFactory()),
         engine_(std::make_unique<webrtc::VideoEncoderFactoryTemplate<
@@ -1814,10 +1802,7 @@
   void SetUp() override {
     // One testcase calls SetUp in a loop, only create call_ once.
     if (!call_) {
-      CallConfig call_config(&event_log_);
-      call_config.task_queue_factory = task_queue_factory_.get();
-      call_config.trials = &field_trials_;
-      call_ = Call::Create(call_config);
+      call_ = Call::Create(CallConfig(env_));
     }
 
     cricket::MediaConfig media_config;
@@ -2016,10 +2001,9 @@
   webrtc::GlobalSimulatedTimeController time_controller_{
       Timestamp::Seconds(1000)};
 
-  webrtc::RtcEventLogNull event_log_;
   webrtc::test::ScopedKeyValueConfig field_trials_;
   std::unique_ptr<webrtc::test::ScopedKeyValueConfig> override_field_trials_;
-  std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
+  Environment env_;
   std::unique_ptr<Call> call_;
   std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
       video_bitrate_allocator_factory_;
@@ -9863,7 +9847,6 @@
   }
 
   webrtc::test::ScopedKeyValueConfig field_trials_;
-  webrtc::RtcEventLogNull event_log_;
   FakeCall fake_call_;
   cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_;
   cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_;
diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc
index 4c5d850..4d65806 100644
--- a/media/engine/webrtc_voice_engine_unittest.cc
+++ b/media/engine/webrtc_voice_engine_unittest.cc
@@ -18,8 +18,9 @@
 #include "absl/types/optional.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
 #include "api/media_types.h"
-#include "api/rtc_event_log/rtc_event_log.h"
 #include "api/rtp_parameters.h"
 #include "api/scoped_refptr.h"
 #include "api/task_queue/default_task_queue_factory.h"
@@ -45,6 +46,7 @@
 #include "test/mock_audio_encoder_factory.h"
 #include "test/scoped_key_value_config.h"
 
+namespace {
 using ::testing::_;
 using ::testing::ContainerEq;
 using ::testing::Contains;
@@ -55,11 +57,11 @@
 using ::testing::SaveArg;
 using ::testing::StrictMock;
 using ::testing::UnorderedElementsAreArray;
+using ::webrtc::BitrateConstraints;
 using ::webrtc::Call;
 using ::webrtc::CallConfig;
-
-namespace {
-using webrtc::BitrateConstraints;
+using ::webrtc::CreateEnvironment;
+using ::webrtc::Environment;
 
 constexpr uint32_t kMaxUnsignaledRecvStreams = 4;
 
@@ -3678,24 +3680,18 @@
   for (bool use_null_apm : {false, true}) {
     // If the VoiceEngine wants to gather available codecs early, that's fine
     // but we never want it to create a decoder at this stage.
-    std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
-        webrtc::CreateDefaultTaskQueueFactory();
+    Environment env = CreateEnvironment();
     rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
         webrtc::test::MockAudioDeviceModule::CreateNice();
     rtc::scoped_refptr<webrtc::AudioProcessing> apm =
         use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
-    webrtc::FieldTrialBasedConfig field_trials;
     cricket::WebRtcVoiceEngine engine(
-        task_queue_factory.get(), adm.get(),
+        &env.task_queue_factory(), adm.get(),
         webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
         webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
-        nullptr, field_trials);
+        nullptr, env.field_trials());
     engine.Init();
-    webrtc::RtcEventLogNull event_log;
-    CallConfig call_config(&event_log);
-    call_config.trials = &field_trials;
-    call_config.task_queue_factory = task_queue_factory.get();
-    std::unique_ptr<Call> call = Call::Create(call_config);
+    std::unique_ptr<Call> call = Call::Create(CallConfig(env));
     std::unique_ptr<cricket::VoiceMediaSendChannelInterface> send_channel =
         engine.CreateSendChannel(
             call.get(), cricket::MediaConfig(), cricket::AudioOptions(),
@@ -3713,25 +3709,19 @@
 TEST(WebRtcVoiceEngineTest, StartupShutdownWithExternalADM) {
   rtc::AutoThread main_thread;
   for (bool use_null_apm : {false, true}) {
-    std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
-        webrtc::CreateDefaultTaskQueueFactory();
+    Environment env = CreateEnvironment();
     auto adm = rtc::make_ref_counted<
         ::testing::NiceMock<webrtc::test::MockAudioDeviceModule>>();
     {
       rtc::scoped_refptr<webrtc::AudioProcessing> apm =
           use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
-      webrtc::FieldTrialBasedConfig field_trials;
       cricket::WebRtcVoiceEngine engine(
-          task_queue_factory.get(), adm.get(),
+          &env.task_queue_factory(), adm.get(),
           webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
           webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
-          nullptr, field_trials);
+          nullptr, env.field_trials());
       engine.Init();
-      webrtc::RtcEventLogNull event_log;
-      CallConfig call_config(&event_log);
-      call_config.trials = &field_trials;
-      call_config.task_queue_factory = task_queue_factory.get();
-      std::unique_ptr<Call> call = Call::Create(call_config);
+      std::unique_ptr<Call> call = Call::Create(CallConfig(env));
       std::unique_ptr<cricket::VoiceMediaSendChannelInterface> send_channel =
           engine.CreateSendChannel(
               call.get(), cricket::MediaConfig(), cricket::AudioOptions(),
@@ -3804,24 +3794,18 @@
 TEST(WebRtcVoiceEngineTest, Has32Channels) {
   rtc::AutoThread main_thread;
   for (bool use_null_apm : {false, true}) {
-    std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
-        webrtc::CreateDefaultTaskQueueFactory();
+    Environment env = CreateEnvironment();
     rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
         webrtc::test::MockAudioDeviceModule::CreateNice();
     rtc::scoped_refptr<webrtc::AudioProcessing> apm =
         use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
-    webrtc::FieldTrialBasedConfig field_trials;
     cricket::WebRtcVoiceEngine engine(
-        task_queue_factory.get(), adm.get(),
+        &env.task_queue_factory(), adm.get(),
         webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
         webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
-        nullptr, field_trials);
+        nullptr, env.field_trials());
     engine.Init();
-    webrtc::RtcEventLogNull event_log;
-    CallConfig call_config(&event_log);
-    call_config.trials = &field_trials;
-    call_config.task_queue_factory = task_queue_factory.get();
-    std::unique_ptr<Call> call = Call::Create(call_config);
+    std::unique_ptr<Call> call = Call::Create(CallConfig(env));
 
     std::vector<std::unique_ptr<cricket::VoiceMediaSendChannelInterface>>
         channels;
@@ -3843,8 +3827,7 @@
 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
   rtc::AutoThread main_thread;
   for (bool use_null_apm : {false, true}) {
-    std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
-        webrtc::CreateDefaultTaskQueueFactory();
+    Environment env = CreateEnvironment();
     // TODO(ossu): I'm not sure of the intent of this test. It's either:
     // - Check that our builtin codecs are usable by Channel.
     // - The codecs provided by the engine is usable by Channel.
@@ -3856,18 +3839,13 @@
         webrtc::test::MockAudioDeviceModule::CreateNice();
     rtc::scoped_refptr<webrtc::AudioProcessing> apm =
         use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
-    webrtc::FieldTrialBasedConfig field_trials;
     cricket::WebRtcVoiceEngine engine(
-        task_queue_factory.get(), adm.get(),
+        &env.task_queue_factory(), adm.get(),
         webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
         webrtc::CreateBuiltinAudioDecoderFactory(), nullptr, apm, nullptr,
-        field_trials);
+        env.field_trials());
     engine.Init();
-    webrtc::RtcEventLogNull event_log;
-    CallConfig call_config(&event_log);
-    call_config.trials = &field_trials;
-    call_config.task_queue_factory = task_queue_factory.get();
-    std::unique_ptr<Call> call = Call::Create(call_config);
+    std::unique_ptr<Call> call = Call::Create(CallConfig(env));
     cricket::WebRtcVoiceReceiveChannel channel(
         &engine, cricket::MediaConfig(), cricket::AudioOptions(),
         webrtc::CryptoOptions(), call.get(),
@@ -3880,21 +3858,17 @@
 
 TEST(WebRtcVoiceEngineTest, SetRtpSendParametersMaxBitrate) {
   rtc::AutoThread main_thread;
-  std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
-      webrtc::CreateDefaultTaskQueueFactory();
+  Environment env = CreateEnvironment();
   rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
       webrtc::test::MockAudioDeviceModule::CreateNice();
-  webrtc::FieldTrialBasedConfig field_trials;
   FakeAudioSource source;
-  cricket::WebRtcVoiceEngine engine(task_queue_factory.get(), adm.get(),
+  cricket::WebRtcVoiceEngine engine(&env.task_queue_factory(), adm.get(),
                                     webrtc::CreateBuiltinAudioEncoderFactory(),
                                     webrtc::CreateBuiltinAudioDecoderFactory(),
-                                    nullptr, nullptr, nullptr, field_trials);
+                                    nullptr, nullptr, nullptr,
+                                    env.field_trials());
   engine.Init();
-  webrtc::RtcEventLogNull event_log;
-  CallConfig call_config(&event_log);
-  call_config.trials = &field_trials;
-  call_config.task_queue_factory = task_queue_factory.get();
+  CallConfig call_config(env);
   {
     webrtc::AudioState::Config config;
     config.audio_mixer = webrtc::AudioMixerImpl::Create();