Refactor peer connection API dependencies

Improve the dependency graph by replacing broad dependencies with more
specific ones. This refactoring clarifies the relationships between
build targets and removes unnecessary coupling.

The main changes include:

- Replacing dependencies on the large `api:libjingle_peerconnection_api`
  meta-target with the more specific `api:jsep` target where
  appropriate.
- Removing several unnecessary dependencies on
  `api:libjingle_peerconnection_api` from various test and utility
  targets.
- Adding a direct dependency on `pc:webrtc_sdp` to the main
  `pc:libjingle_peerconnection` target.

Bug: none
Change-Id: Ib676c2f75dc5466835960e572cc774f89be6aad8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/415401
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45878}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index a4fa721..2ae649e 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -349,13 +349,12 @@
 
     # Remove when downstream has been updated
     "dtmf_sender_interface.h",
-    "jsep.h",
+    "jsep.h",  # allow to be included from peer_connection_interface.h
     "rtp_sender_interface.h",
   ]
   public_deps += [  # no-presubmit-check TODO(webrtc:8603)
     # Remove when downstream has been updated
     ":dtmf_sender_interface",
-    ":jsep",
     ":rtp_sender_interface",
   ]
   deps = [
@@ -1038,7 +1037,6 @@
   ]
   deps = [
     ":ice_transport_interface",
-    ":libjingle_peerconnection_api",
     ":make_ref_counted",
     ":packet_socket_factory",
     ":scoped_refptr",
@@ -1295,7 +1293,6 @@
       ":rtp_parameters",
 
       # For api/crypto/frame_encryptor_interface.h
-      ":libjingle_peerconnection_api",
       "../test:test_support",
       "crypto:frame_encryptor_interface",
     ]
@@ -1307,7 +1304,6 @@
     sources = [ "test/mock_frame_decryptor.h" ]
     deps = [
       ":array_view",
-      ":libjingle_peerconnection_api",
       ":rtp_parameters",
       "../test:test_support",
       "crypto:frame_decryptor_interface",
@@ -1330,7 +1326,6 @@
     testonly = true
     sources = [ "test/mock_encoder_selector.h" ]
     deps = [
-      ":libjingle_peerconnection_api",
       "../api/video_codecs:video_codecs_api",
       "../test:test_support",
       "units:data_rate",
@@ -1347,7 +1342,6 @@
     ]
     deps = [
       ":array_view",
-      ":libjingle_peerconnection_api",
       ":make_ref_counted",
       ":ref_count",
       ":rtp_parameters",
@@ -1366,7 +1360,6 @@
     ]
     deps = [
       ":array_view",
-      ":libjingle_peerconnection_api",
       ":make_ref_counted",
       ":rtp_parameters",
       "../rtc_base:checks",
@@ -1412,6 +1405,7 @@
       ":candidate",
       ":data_channel_event_observer_interface",
       ":dtls_transport_interface",
+      ":jsep",
       ":libjingle_logging_api",
       ":libjingle_peerconnection_api",
       ":make_ref_counted",
@@ -1685,6 +1679,7 @@
       ":field_trials",
       ":field_trials_view",
       ":function_view",
+      ":jsep",
       ":libjingle_peerconnection_api",
       ":rtc_error",
       ":rtc_event_log_output_file",
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 2fa1b29..1878046 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -683,6 +683,7 @@
       "../api:create_modular_peer_connection_factory",
       "../api:enable_media",
       "../api:field_trials",
+      "../api:jsep",
       "../api:libjingle_peerconnection_api",
       "../api:make_ref_counted",
       "../api:media_stream_interface",
diff --git a/examples/androidnativeapi/BUILD.gn b/examples/androidnativeapi/BUILD.gn
index 26d136a..8620a00 100644
--- a/examples/androidnativeapi/BUILD.gn
+++ b/examples/androidnativeapi/BUILD.gn
@@ -61,6 +61,7 @@
       "../../rtc_base:ssl_adapter",
       "../../rtc_base:threading",
       "../../rtc_base/synchronization:mutex",
+      "//api:jsep",
       "//api:libjingle_peerconnection_api",
       "//api/rtc_event_log:rtc_event_log_factory",
       "//api/task_queue:default_task_queue_factory",
@@ -68,6 +69,7 @@
       "//media:rtc_internal_video_codecs",
       "//modules/utility",
       "//pc:libjingle_peerconnection",
+      "//pc:webrtc_sdp",
       "//sdk/android:native_api_base",
       "//sdk/android:native_api_jni",
       "//sdk/android:native_api_video",
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 721709e..22c08f5 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -74,7 +74,7 @@
     ":rtp_media_utils",
     ":rtp_transport_internal",
     ":session_description",
-    "../api:libjingle_peerconnection_api",
+    "../api:jsep",
     "../api:rtc_error",
     "../api:rtp_headers",
     "../api:rtp_parameters",
@@ -118,7 +118,7 @@
   deps = [
     ":rtp_transport_internal",
     ":session_description",
-    "../api:libjingle_peerconnection_api",
+    "../api:jsep",
     "../api:rtp_parameters",
     "../media:media_channel",
     "../media:rtc_media_config",
@@ -221,6 +221,7 @@
     "../api:array_view",
     "../api:candidate",
     "../api:ice_transport_interface",
+    "../api:jsep",
     "../api:libjingle_peerconnection_api",
     "../api:make_ref_counted",
     "../api:rtc_error",
@@ -255,6 +256,7 @@
   deps = [
     ":jsep_transport",
     ":session_description",
+    "../api:jsep",
     "../api:libjingle_peerconnection_api",
     "../api:sequence_checker",
     "../p2p:p2p_constants",
@@ -291,6 +293,7 @@
     "../api:dtls_transport_interface",
     "../api:ice_transport_factory",
     "../api:ice_transport_interface",
+    "../api:jsep",
     "../api:libjingle_peerconnection_api",
     "../api:local_network_access_permission",
     "../api:rtc_error",
@@ -499,6 +502,7 @@
     "../api:candidate",
     "../api:data_channel_event_observer_interface",
     "../api:dtls_transport_interface",
+    "../api:jsep",
     "../api:libjingle_logging_api",
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
@@ -953,6 +957,7 @@
     ":usage_pattern",
     "../api:candidate",
     "../api:field_trials_view",
+    "../api:jsep",
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
     "../api:rtc_error",
@@ -1448,8 +1453,6 @@
     "../media:stream_params",
     "../p2p:ice_transport_internal",
     "../p2p:p2p_constants",
-    "../p2p:port",
-    "../p2p:port_interface",
     "../p2p:transport_description",
     "../p2p:transport_info",
     "../rtc_base:checks",
@@ -1458,7 +1461,6 @@
     "../rtc_base:logging",
     "../rtc_base:net_helper",
     "../rtc_base:net_helpers",
-    "../rtc_base:network_constants",
     "../rtc_base:socket_address",
     "../rtc_base:ssl",
     "../rtc_base:stringutils",
@@ -1617,6 +1619,7 @@
   ]
   deps = [
     ":legacy_stats_collector_interface",
+    "../api:jsep",
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
     "../api:rtc_error",
@@ -2073,6 +2076,7 @@
     ":jsep_session_description",
     ":peer_connection_factory",
     ":rtc_stats_collector",
+    ":webrtc_sdp",
     "../api:libjingle_peerconnection_api",
     "../stats",
   ]
@@ -2334,6 +2338,7 @@
       "../api:enable_media_with_defaults",
       "../api:field_trials",
       "../api:field_trials_view",
+      "../api:jsep",
       "../api:libjingle_peerconnection_api",
       "../api:make_ref_counted",
       "../api:media_stream_interface",
@@ -2363,6 +2368,7 @@
       "../p2p:p2p_test_utils",
       "../p2p:port_interface",
       "../p2p:transport_description",
+      "../pc:webrtc_sdp",
       "../rtc_base:checks",
       "../rtc_base:crypto_random",
       "../rtc_base:logging",
@@ -2395,6 +2401,7 @@
       ":peer_connection_proxy",
       ":sdp_utils",
       "../api:function_view",
+      "../api:jsep",
       "../api:libjingle_peerconnection_api",
       "../api:make_ref_counted",
       "../api:media_stream_interface",
@@ -2403,6 +2410,7 @@
       "../api:rtc_stats_api",
       "../api:rtp_parameters",
       "../api:scoped_refptr",
+      "../pc:webrtc_sdp",
       "../rtc_base:checks",
       "../rtc_base:logging",
       "../test:test_support",
diff --git a/rtc_tools/data_channel_benchmark/BUILD.gn b/rtc_tools/data_channel_benchmark/BUILD.gn
index c566bcf..29a302f 100644
--- a/rtc_tools/data_channel_benchmark/BUILD.gn
+++ b/rtc_tools/data_channel_benchmark/BUILD.gn
@@ -64,6 +64,7 @@
     "../../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
     "../../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
     "../../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
+    "../../pc:libjingle_peerconnection",
     "../../rtc_base:checks",
     "../../rtc_base:copy_on_write_buffer",
     "../../rtc_base:logging",
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 75f5ee2..0ff3f0b 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -1112,6 +1112,7 @@
         "../api:dtmf_sender_interface",
         "../api:enable_media",
         "../api:field_trials_view",
+        "../api:jsep",
         "../api:libjingle_peerconnection_api",
         "../api:media_stream_interface",
         "../api:rtc_event_log_output_file",
@@ -1229,6 +1230,7 @@
             ":videosource_objc",
             ":videotoolbox_objc",
             "../api:array_view",
+            "../api:jsep",
             "../api:libjingle_peerconnection_api",
             "../api:rtc_error_matchers",
             "../api:scoped_refptr",
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 041264a..87f5903 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -834,6 +834,7 @@
       "../../api:dtmf_sender_interface",
       "../../api:enable_media",
       "../../api:fec_controller_api",
+      "../../api:jsep",
       "../../api:libjingle_peerconnection_api",
       "../../api:make_ref_counted",
       "../../api:media_stream_interface",
@@ -1141,6 +1142,7 @@
     deps = [
       ":base_jni",
       ":peerconnection_jni",
+      "../../api:jsep",
       "../../api:libjingle_peerconnection_api",
       "../../api:scoped_refptr",
       "../../api/video_codecs:video_codecs_api",
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 0c7ce99..c19bdf1 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -290,7 +290,6 @@
       deps = [
         ":test_video_capturer",
         ":video_test_common",
-        "../api:libjingle_peerconnection_api",
         "../api:media_stream_interface",
         "../api:scoped_refptr",
         "../api/video:video_frame",
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index 5611c78..6d9ebd1 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -488,7 +488,7 @@
 webrtc_fuzzer_test("sdp_parser_fuzzer") {
   sources = [ "sdp_parser_fuzzer.cc" ]
   deps = [
-    "../../api:libjingle_peerconnection_api",
+    "../../api:jsep",
     "../../pc:libjingle_peerconnection",
   ]
   seed_corpus = "corpora/sdp-corpus"
@@ -503,6 +503,7 @@
     sources = [ "sdp_integration_fuzzer.cc" ]
     deps = [
       "..:wait_until",
+      "../../api:jsep",
       "../../api:libjingle_peerconnection_api",
       "../../api:make_ref_counted",
       "../../api:rtc_error_matchers",
diff --git a/test/peer_scenario/BUILD.gn b/test/peer_scenario/BUILD.gn
index e1a00b3..4aca052 100644
--- a/test/peer_scenario/BUILD.gn
+++ b/test/peer_scenario/BUILD.gn
@@ -82,6 +82,7 @@
       "../../pc:pc_test_utils",
       "../../pc:rtp_transport_internal",
       "../../pc:session_description",
+      "../../pc:webrtc_sdp",
       "../../rtc_base:async_packet_socket",
       "../../rtc_base:checks",
       "../../rtc_base:copy_on_write_buffer",
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index 76a6455..5d60df8 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -89,10 +89,8 @@
       "../../api:field_trials",
       "../../api:frame_generator_api",
       "../../api:libjingle_logging_api",
-      "../../api:libjingle_peerconnection_api",
       "../../api:make_ref_counted",
       "../../api:network_emulation_manager_api",
-      "../../api:rtc_event_log_output_file",
       "../../api:rtp_headers",
       "../../api:rtp_parameters",
       "../../api:scoped_refptr",
@@ -121,7 +119,6 @@
       "../../api/video:builtin_video_bitrate_allocator_factory",
       "../../api/video:video_bitrate_allocator_factory",
       "../../api/video:video_frame",
-      "../../api/video:video_rtp_headers",
       "../../api/video_codecs:scalability_mode",
       "../../api/video_codecs:video_codecs_api",
       "../../audio",