diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index f94150f..372ff51 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -66,14 +66,12 @@
   deps = [
     ":media_configuration",
     "../..:async_dns_resolver",
-    "../../../api:callfactory_api",
     "../../../api:fec_controller_api",
     "../../../api:field_trials_view",
     "../../../api:libjingle_peerconnection_api",
     "../../../api:packet_socket_factory",
     "../../../api/audio:audio_mixer_api",
     "../../../api/rtc_event_log",
-    "../../../api/task_queue",
     "../../../api/transport:network_control",
     "../../../api/video_codecs:video_codecs_api",
     "../../../modules/audio_processing:api",
@@ -96,7 +94,6 @@
     ":media_configuration",
     ":media_quality_test_params",
     "../..:async_dns_resolver",
-    "../../../api:callfactory_api",
     "../../../api:create_peer_connection_quality_test_frame_generator",
     "../../../api:fec_controller_api",
     "../../../api:field_trials_view",
@@ -109,7 +106,6 @@
     "../../../api/audio_codecs:audio_codecs_api",
     "../../../api/neteq:neteq_api",
     "../../../api/rtc_event_log",
-    "../../../api/task_queue",
     "../../../api/transport:bitrate_settings",
     "../../../api/transport:network_control",
     "../../../api/video_codecs:video_codecs_api",
diff --git a/api/test/pclf/media_quality_test_params.h b/api/test/pclf/media_quality_test_params.h
index a247f34..b2ccdf1 100644
--- a/api/test/pclf/media_quality_test_params.h
+++ b/api/test/pclf/media_quality_test_params.h
@@ -17,11 +17,9 @@
 
 #include "api/async_dns_resolver.h"
 #include "api/audio/audio_mixer.h"
-#include "api/call/call_factory_interface.h"
 #include "api/fec_controller.h"
 #include "api/field_trials_view.h"
 #include "api/rtc_event_log/rtc_event_log_factory_interface.h"
-#include "api/task_queue/task_queue_factory.h"
 #include "api/test/pclf/media_configuration.h"
 #include "api/transport/network_control.h"
 #include "api/video_codecs/video_decoder_factory.h"
@@ -46,8 +44,6 @@
 // can override only some parts of media engine like video encoder/decoder
 // factories.
 struct PeerConnectionFactoryComponents {
-  std::unique_ptr<TaskQueueFactory> task_queue_factory;
-  std::unique_ptr<CallFactoryInterface> call_factory;
   std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory;
   std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory;
   std::unique_ptr<NetworkControllerFactoryInterface> network_controller_factory;
diff --git a/api/test/pclf/peer_configurer.cc b/api/test/pclf/peer_configurer.cc
index 949dbd3..5e38545 100644
--- a/api/test/pclf/peer_configurer.cc
+++ b/api/test/pclf/peer_configurer.cc
@@ -22,7 +22,6 @@
 #include "api/audio/audio_mixer.h"
 #include "api/audio_codecs/audio_decoder_factory.h"
 #include "api/audio_codecs/audio_encoder_factory.h"
-#include "api/call/call_factory_interface.h"
 #include "api/fec_controller.h"
 #include "api/field_trials_view.h"
 #include "api/ice_transport_interface.h"
@@ -30,7 +29,6 @@
 #include "api/peer_connection_interface.h"
 #include "api/rtc_event_log/rtc_event_log_factory_interface.h"
 #include "api/scoped_refptr.h"
-#include "api/task_queue/task_queue_factory.h"
 #include "api/test/create_peer_connection_quality_test_frame_generator.h"
 #include "api/test/frame_generator_interface.h"
 #include "api/test/pclf/media_configuration.h"
@@ -62,17 +60,6 @@
   return this;
 }
 
-PeerConfigurer* PeerConfigurer::SetTaskQueueFactory(
-    std::unique_ptr<TaskQueueFactory> task_queue_factory) {
-  components_->pcf_dependencies->task_queue_factory =
-      std::move(task_queue_factory);
-  return this;
-}
-PeerConfigurer* PeerConfigurer::SetCallFactory(
-    std::unique_ptr<CallFactoryInterface> call_factory) {
-  components_->pcf_dependencies->call_factory = std::move(call_factory);
-  return this;
-}
 PeerConfigurer* PeerConfigurer::SetEventLogFactory(
     std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory) {
   components_->pcf_dependencies->event_log_factory =
diff --git a/api/test/pclf/peer_configurer.h b/api/test/pclf/peer_configurer.h
index 2012ebc2..c0faf85 100644
--- a/api/test/pclf/peer_configurer.h
+++ b/api/test/pclf/peer_configurer.h
@@ -21,7 +21,6 @@
 #include "api/audio/audio_mixer.h"
 #include "api/audio_codecs/audio_decoder_factory.h"
 #include "api/audio_codecs/audio_encoder_factory.h"
-#include "api/call/call_factory_interface.h"
 #include "api/fec_controller.h"
 #include "api/field_trials_view.h"
 #include "api/ice_transport_interface.h"
@@ -29,7 +28,6 @@
 #include "api/peer_connection_interface.h"
 #include "api/rtc_event_log/rtc_event_log_factory_interface.h"
 #include "api/scoped_refptr.h"
-#include "api/task_queue/task_queue_factory.h"
 #include "api/test/frame_generator_interface.h"
 #include "api/test/pclf/media_configuration.h"
 #include "api/test/pclf/media_quality_test_params.h"
@@ -59,13 +57,9 @@
   // unique.
   PeerConfigurer* SetName(absl::string_view name);
 
-  // The parameters of the following 9 methods will be passed to the
+  // The parameters of the following 7 methods will be passed to the
   // PeerConnectionFactoryInterface implementation that will be created for
   // this peer.
-  PeerConfigurer* SetTaskQueueFactory(
-      std::unique_ptr<TaskQueueFactory> task_queue_factory);
-  PeerConfigurer* SetCallFactory(
-      std::unique_ptr<CallFactoryInterface> call_factory);
   PeerConfigurer* SetEventLogFactory(
       std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory);
   PeerConfigurer* SetFecControllerFactory(
diff --git a/test/pc/e2e/test_peer_factory.cc b/test/pc/e2e/test_peer_factory.cc
index 9b2f2d6..41f7533 100644
--- a/test/pc/e2e/test_peer_factory.cc
+++ b/test/pc/e2e/test_peer_factory.cc
@@ -50,18 +50,10 @@
   RTC_DCHECK(components->pc_dependencies);
 
   // Setup required peer connection factory dependencies.
-  if (components->pcf_dependencies->task_queue_factory == nullptr) {
-    components->pcf_dependencies->task_queue_factory =
-        time_controller.CreateTaskQueueFactory();
-  }
-  if (components->pcf_dependencies->call_factory == nullptr) {
-    components->pcf_dependencies->call_factory =
-        CreateTimeControllerBasedCallFactory(&time_controller);
-  }
   if (components->pcf_dependencies->event_log_factory == nullptr) {
     components->pcf_dependencies->event_log_factory =
         std::make_unique<RtcEventLogFactory>(
-            components->pcf_dependencies->task_queue_factory.get());
+            time_controller.GetTaskQueueFactory());
   }
   if (!components->pcf_dependencies->trials) {
     components->pcf_dependencies->trials =
@@ -155,10 +147,11 @@
 }
 
 std::unique_ptr<cricket::MediaEngineInterface> CreateMediaEngine(
+    TaskQueueFactory* task_queue_factory,
     PeerConnectionFactoryComponents* pcf_dependencies,
     rtc::scoped_refptr<AudioDeviceModule> audio_device_module) {
   cricket::MediaEngineDependencies media_deps;
-  media_deps.task_queue_factory = pcf_dependencies->task_queue_factory.get();
+  media_deps.task_queue_factory = task_queue_factory;
   media_deps.adm = audio_device_module;
   media_deps.audio_processing = pcf_dependencies->audio_processing;
   media_deps.audio_mixer = pcf_dependencies->audio_mixer;
@@ -212,6 +205,7 @@
 // from InjectableComponents::PeerConnectionFactoryComponents.
 PeerConnectionFactoryDependencies CreatePCFDependencies(
     std::unique_ptr<PeerConnectionFactoryComponents> pcf_dependencies,
+    TimeController& time_controller,
     std::unique_ptr<cricket::MediaEngineInterface> media_engine,
     rtc::Thread* signaling_thread,
     rtc::Thread* worker_thread,
@@ -222,9 +216,10 @@
   pcf_deps.network_thread = network_thread;
   pcf_deps.media_engine = std::move(media_engine);
 
-  pcf_deps.call_factory = std::move(pcf_dependencies->call_factory);
+  pcf_deps.call_factory =
+      CreateTimeControllerBasedCallFactory(&time_controller);
   pcf_deps.event_log_factory = std::move(pcf_dependencies->event_log_factory);
-  pcf_deps.task_queue_factory = std::move(pcf_dependencies->task_queue_factory);
+  pcf_deps.task_queue_factory = time_controller.CreateTaskQueueFactory();
 
   if (pcf_dependencies->fec_controller_factory != nullptr) {
     pcf_deps.fec_controller_factory =
@@ -318,9 +313,9 @@
         *params->aec_dump_path, -1, task_queue_);
   }
   rtc::scoped_refptr<AudioDeviceModule> audio_device_module =
-      CreateAudioDeviceModule(
-          params->audio_config, remote_audio_config, echo_emulation_config,
-          components->pcf_dependencies->task_queue_factory.get());
+      CreateAudioDeviceModule(params->audio_config, remote_audio_config,
+                              echo_emulation_config,
+                              time_controller_.GetTaskQueueFactory());
   WrapVideoEncoderFactory(
       params->name.value(), params->video_encoder_bitrate_multiplier,
       CalculateRequiredSpatialIndexPerStream(
@@ -330,7 +325,8 @@
                           components->pcf_dependencies.get(),
                           video_analyzer_helper_);
   std::unique_ptr<cricket::MediaEngineInterface> media_engine =
-      CreateMediaEngine(components->pcf_dependencies.get(),
+      CreateMediaEngine(time_controller_.GetTaskQueueFactory(),
+                        components->pcf_dependencies.get(),
                         audio_device_module);
 
   std::unique_ptr<rtc::Thread> owned_worker_thread =
@@ -346,8 +342,9 @@
   rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing =
       components->pcf_dependencies->audio_processing;
   PeerConnectionFactoryDependencies pcf_deps = CreatePCFDependencies(
-      std::move(components->pcf_dependencies), std::move(media_engine),
-      signaling_thread_, components->worker_thread, components->network_thread);
+      std::move(components->pcf_dependencies), time_controller_,
+      std::move(media_engine), signaling_thread_, components->worker_thread,
+      components->network_thread);
   rtc::scoped_refptr<PeerConnectionFactoryInterface> peer_connection_factory =
       CreateModularPeerConnectionFactory(std::move(pcf_deps));
 
