Split EmulatedNetworkInterface into two

This removes PCLF dependency on EmulatedNetwork framework and uses
more natural name for providing network dependencies for PCLF framework

Bug: None
Change-Id: I9e44dc4155a95697b9bcc76be5b3b5deb477e02b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/377160
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44128}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 6000e13..f67fcc3 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -593,9 +593,10 @@
   visibility = [ "*" ]
   sources = [ "test/peer_network_dependencies.h" ]
   deps = [
-    ":packet_socket_factory",
     "../rtc_base:network",
+    "../rtc_base:socket_factory",
     "../rtc_base:threading",
+    "//third_party/abseil-cpp/absl/base:nullability",
   ]
 }
 
@@ -614,7 +615,6 @@
     ":media_stream_interface",
     ":network_state_predictor_api",
     ":packet_socket_factory",
-    ":peer_network_dependencies",
     ":rtp_parameters",
     ":simulated_network_api",
     ":stats_observer_interface",
@@ -895,18 +895,14 @@
     ":peer_network_dependencies",
     ":simulated_network_api",
     ":time_controller",
-    "..//test/network:simulated_network",
     "../rtc_base:checks",
     "../rtc_base:ip_address",
     "../rtc_base:network",
     "../rtc_base:network_constants",
     "../rtc_base:socket_address",
-    "../rtc_base:socket_factory",
-    "../rtc_base:threading",
+    "../test/network:simulated_network",
     "test/network_emulation",
     "units:data_rate",
-    "units:data_size",
-    "units:timestamp",
     "//third_party/abseil-cpp/absl/base:nullability",
     "//third_party/abseil-cpp/absl/strings:string_view",
   ]
diff --git a/api/test/DEPS b/api/test/DEPS
index 02a677e..7416f3a 100644
--- a/api/test/DEPS
+++ b/api/test/DEPS
@@ -15,14 +15,12 @@
     "+system_wrappers/include/clock.h",
   ],
   "network_emulation_manager\.h": [
-    "+rtc_base/thread.h",
-    "+rtc_base/network.h",
     "+rtc_base/network_constants.h",
     "+rtc_base/ip_address.h",
     "+rtc_base/socket_address.h",
-    "+rtc_base/socket_factory.h",
   ],
   "peer_network_dependencies\.h": [
+    "+rtc_base/socket_factory.h",
     "+rtc_base/network.h",
     "+rtc_base/thread.h",
   ],
diff --git a/api/test/network_emulation_manager.h b/api/test/network_emulation_manager.h
index ce1173d..df442eb 100644
--- a/api/test/network_emulation_manager.h
+++ b/api/test/network_emulation_manager.h
@@ -25,15 +25,13 @@
 #include "api/field_trials_view.h"
 #include "api/test/network_emulation/cross_traffic.h"
 #include "api/test/network_emulation/network_emulation_interfaces.h"
+#include "api/test/peer_network_dependencies.h"
 #include "api/test/simulated_network.h"
 #include "api/test/time_controller.h"
 #include "api/units/data_rate.h"
 #include "rtc_base/ip_address.h"
-#include "rtc_base/network.h"
 #include "rtc_base/network_constants.h"
 #include "rtc_base/socket_address.h"
-#include "rtc_base/socket_factory.h"
-#include "rtc_base/thread.h"
 
 namespace webrtc {
 
@@ -125,19 +123,10 @@
 // Provide interface to obtain all required objects to inject network emulation
 // layer into PeerConnection. Also contains information about network interfaces
 // accessible by PeerConnection.
-class EmulatedNetworkManagerInterface {
+class EmulatedNetworkManagerInterface
+    : public webrtc_pc_e2e::PeerNetworkDependencies {
  public:
-  virtual ~EmulatedNetworkManagerInterface() = default;
-
-  // Returns thread that have to be used as network thread
-  // for WebRTC to properly setup network emulation. Returned thread is owned
-  // by EmulatedNetworkManagerInterface implementation.
-  virtual absl::Nonnull<rtc::Thread*> network_thread() = 0;
-
-  // Returns objects to pass to PeerConnectionFactoryDependencies.
-  virtual absl::Nonnull<rtc::SocketFactory*> socket_factory() = 0;
-  virtual absl::Nonnull<std::unique_ptr<rtc::NetworkManager>>
-  ReleaseNetworkManager() = 0;
+  ~EmulatedNetworkManagerInterface() override = default;
 
   // Returns list of endpoints that are associated with this instance. Pointers
   // are guaranteed to be non-null and are owned by NetworkEmulationManager.
diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index bd5295c..2e3b439 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -81,6 +81,7 @@
     "../..:ice_transport_interface",
     "../..:libjingle_peerconnection_api",
     "../..:network_emulation_manager_api",
+    "../..:peer_network_dependencies",
     "../..:scoped_refptr",
     "../../../p2p:port_allocator",
     "../../../rtc_base:checks",
diff --git a/api/test/pclf/peer_configurer.cc b/api/test/pclf/peer_configurer.cc
index a08e007..20ab2f3 100644
--- a/api/test/pclf/peer_configurer.cc
+++ b/api/test/pclf/peer_configurer.cc
@@ -32,9 +32,9 @@
 #include "api/scoped_refptr.h"
 #include "api/test/create_peer_connection_quality_test_frame_generator.h"
 #include "api/test/frame_generator_interface.h"
-#include "api/test/network_emulation_manager.h"
 #include "api/test/pclf/media_configuration.h"
 #include "api/test/pclf/media_quality_test_params.h"
+#include "api/test/peer_network_dependencies.h"
 #include "api/transport/bitrate_settings.h"
 #include "api/transport/network_control.h"
 #include "api/video_codecs/video_decoder_factory.h"
@@ -47,7 +47,7 @@
 namespace webrtc {
 namespace webrtc_pc_e2e {
 
-PeerConfigurer::PeerConfigurer(EmulatedNetworkManagerInterface& network)
+PeerConfigurer::PeerConfigurer(PeerNetworkDependencies& network)
     : components_(std::make_unique<InjectableComponents>(
           network.network_thread(),
           network.ReleaseNetworkManager(),
diff --git a/api/test/pclf/peer_configurer.h b/api/test/pclf/peer_configurer.h
index 0448054..f120b0b 100644
--- a/api/test/pclf/peer_configurer.h
+++ b/api/test/pclf/peer_configurer.h
@@ -30,9 +30,9 @@
 #include "api/rtc_event_log/rtc_event_log_factory_interface.h"
 #include "api/scoped_refptr.h"
 #include "api/test/frame_generator_interface.h"
-#include "api/test/network_emulation_manager.h"
 #include "api/test/pclf/media_configuration.h"
 #include "api/test/pclf/media_quality_test_params.h"
+#include "api/test/peer_network_dependencies.h"
 #include "api/transport/bitrate_settings.h"
 #include "api/transport/network_control.h"
 #include "api/video_codecs/video_decoder_factory.h"
@@ -50,7 +50,7 @@
       absl::variant<std::unique_ptr<test::FrameGeneratorInterface>,
                     CapturingDeviceIndex>;
 
-  explicit PeerConfigurer(EmulatedNetworkManagerInterface& network);
+  explicit PeerConfigurer(PeerNetworkDependencies& network);
 
   // Sets peer name that will be used to report metrics related to this peer.
   // If not set, some default name will be assigned. All names have to be
diff --git a/api/test/peer_network_dependencies.h b/api/test/peer_network_dependencies.h
index 6f85ad0..7a072ad 100644
--- a/api/test/peer_network_dependencies.h
+++ b/api/test/peer_network_dependencies.h
@@ -11,19 +11,26 @@
 #ifndef API_TEST_PEER_NETWORK_DEPENDENCIES_H_
 #define API_TEST_PEER_NETWORK_DEPENDENCIES_H_
 
-#include "api/packet_socket_factory.h"
+#include <memory>
+
+#include "absl/base/nullability.h"
 #include "rtc_base/network.h"
+#include "rtc_base/socket_factory.h"
 #include "rtc_base/thread.h"
 
 namespace webrtc {
 namespace webrtc_pc_e2e {
 
-// The network dependencies needed when adding a peer to tests using
-// PeerConnectionE2EQualityTestFixture.
-struct PeerNetworkDependencies {
-  rtc::Thread* network_thread;
-  rtc::NetworkManager* network_manager;
-  rtc::PacketSocketFactory* packet_socket_factory;
+// Provides interface to obtain all required objects to inject network layer
+// into PeerConnectionFactory.
+class PeerNetworkDependencies {
+ public:
+  virtual ~PeerNetworkDependencies() = default;
+
+  virtual absl::Nonnull<rtc::Thread*> network_thread() = 0;
+  virtual absl::Nonnull<rtc::SocketFactory*> socket_factory() = 0;
+  virtual absl::Nonnull<std::unique_ptr<rtc::NetworkManager>>
+  ReleaseNetworkManager() = 0;
 };
 
 }  // namespace webrtc_pc_e2e
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 92f6b41..6526141 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -181,7 +181,6 @@
       deps = [
         "../..:fileutils",
         "../../../api:array_view",
-        "../../../api:peer_network_dependencies",
         "../../../api:rtp_parameters",
         "../../../api/test/pclf:media_configuration",
         "../../../api/test/pclf:media_quality_test_params",