# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../webrtc.gni")
if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

group("pc") {
  deps = [ ":rtc_pc" ]
}

config("rtc_pc_config") {
  defines = []
  if (rtc_enable_sctp) {
    defines += [ "HAVE_SCTP" ]
  }
}

rtc_library("rtc_pc_base") {
  visibility = [ "*" ]
  defines = []
  sources = [
    "channel.cc",
    "channel.h",
    "channel_interface.h",
    "channel_manager.cc",
    "channel_manager.h",
    "composite_rtp_transport.cc",
    "composite_rtp_transport.h",
    "dtls_srtp_transport.cc",
    "dtls_srtp_transport.h",
    "dtls_transport.cc",
    "dtls_transport.h",
    "external_hmac.cc",
    "external_hmac.h",
    "ice_transport.cc",
    "ice_transport.h",
    "jsep_transport.cc",
    "jsep_transport.h",
    "jsep_transport_controller.cc",
    "jsep_transport_controller.h",
    "media_session.cc",
    "media_session.h",
    "rtcp_mux_filter.cc",
    "rtcp_mux_filter.h",
    "rtp_media_utils.cc",
    "rtp_media_utils.h",
    "rtp_transport.cc",
    "rtp_transport.h",
    "rtp_transport_internal.h",
    "sctp_data_channel_transport.cc",
    "sctp_data_channel_transport.h",
    "sctp_transport.cc",
    "sctp_transport.h",
    "sctp_utils.cc",
    "sctp_utils.h",
    "session_description.cc",
    "session_description.h",
    "simulcast_description.cc",
    "simulcast_description.h",
    "srtp_filter.cc",
    "srtp_filter.h",
    "srtp_session.cc",
    "srtp_session.h",
    "srtp_transport.cc",
    "srtp_transport.h",
    "transport_stats.cc",
    "transport_stats.h",
    "used_ids.h",
  ]

  deps = [
    ":media_protocol_names",
    "../api:array_view",
    "../api:audio_options_api",
    "../api:call_api",
    "../api:function_view",
    "../api:ice_transport_factory",
    "../api:libjingle_peerconnection_api",
    "../api:priority",
    "../api:rtc_error",
    "../api:rtp_headers",
    "../api:rtp_parameters",
    "../api:rtp_parameters",
    "../api:scoped_refptr",
    "../api/crypto:options",
    "../api/rtc_event_log",
    "../api/transport:datagram_transport_interface",
    "../api/video:builtin_video_bitrate_allocator_factory",
    "../api/video:video_frame",
    "../api/video:video_rtp_headers",
    "../call:call_interfaces",
    "../call:rtp_interfaces",
    "../call:rtp_receiver",
    "../common_video",
    "../common_video:common_video",
    "../logging:ice_log",
    "../media:rtc_data",
    "../media:rtc_h264_profile_id",
    "../media:rtc_media_base",
    "../media:rtc_media_config",
    "../modules/rtp_rtcp:rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../p2p:rtc_p2p",
    "../rtc_base",
    "../rtc_base:callback_list",
    "../rtc_base:checks",
    "../rtc_base:deprecation",
    "../rtc_base:rtc_task_queue",
    "../rtc_base:stringutils",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/synchronization:sequence_checker",
    "../rtc_base/system:file_wrapper",
    "../rtc_base/system:rtc_export",
    "../rtc_base/third_party/base64",
    "../rtc_base/third_party/sigslot",
    "../system_wrappers:field_trial",
    "../system_wrappers:metrics",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]

  if (rtc_build_libsrtp) {
    deps += [ "//third_party/libsrtp" ]
  }

  public_configs = [ ":rtc_pc_config" ]
}

rtc_source_set("rtc_pc") {
  visibility = [ "*" ]
  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
  deps = [
    ":rtc_pc_base",
    "../media:rtc_audio_video",
  ]
}

rtc_library("media_protocol_names") {
  sources = [
    "media_protocol_names.cc",
    "media_protocol_names.h",
  ]
}

rtc_library("peerconnection") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "data_channel_controller.cc",
    "data_channel_controller.h",
    "data_channel_utils.cc",
    "data_channel_utils.h",
    "ice_server_parsing.cc",
    "ice_server_parsing.h",
    "jsep_ice_candidate.cc",
    "jsep_session_description.cc",
    "local_audio_source.cc",
    "local_audio_source.h",
    "media_stream_observer.cc",
    "media_stream_observer.h",
    "peer_connection.cc",
    "peer_connection.h",
    "peer_connection_factory.cc",
    "peer_connection_factory.h",
    "peer_connection_internal.h",
    "rtc_stats_collector.cc",
    "rtc_stats_collector.h",
    "rtc_stats_traversal.cc",
    "rtc_stats_traversal.h",
    "rtp_data_channel.cc",
    "rtp_data_channel.h",
    "sctp_data_channel.cc",
    "sctp_data_channel.h",
    "sdp_offer_answer.cc",  # TODO: Make separate target when not circular
    "sdp_offer_answer.h",  # dependent on peerconnection.h
    "sdp_serializer.cc",
    "sdp_serializer.h",
    "sdp_utils.cc",
    "sdp_utils.h",
    "stats_collector.cc",
    "stats_collector.h",
    "stream_collection.h",
    "track_media_info_map.cc",
    "track_media_info_map.h",
    "webrtc_sdp.cc",
    "webrtc_sdp.h",
    "webrtc_session_description_factory.cc",
    "webrtc_session_description_factory.h",
  ]

  deps = [
    ":audio_rtp_receiver",
    ":audio_track",
    ":connection_context",
    ":dtmf_sender",
    ":jitter_buffer_delay",
    ":jitter_buffer_delay_interface",
    ":jitter_buffer_delay_proxy",
    ":media_protocol_names",
    ":media_stream",
    ":peer_connection_message_handler",
    ":remote_audio_source",
    ":rtc_pc_base",
    ":rtp_parameters_conversion",
    ":rtp_receiver",
    ":rtp_sender",
    ":rtp_transceiver",
    ":rtp_transmission_manager",
    ":sdp_state_provider",
    ":stats_collector_interface",
    ":transceiver_list",
    ":usage_pattern",
    ":video_rtp_receiver",
    ":video_track",
    ":video_track_source",
    "../api:array_view",
    "../api:audio_options_api",
    "../api:call_api",
    "../api:callfactory_api",
    "../api:fec_controller_api",
    "../api:frame_transformer_interface",
    "../api:ice_transport_factory",
    "../api:libjingle_logging_api",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:network_state_predictor_api",
    "../api:packet_socket_factory",
    "../api:priority",
    "../api:rtc_error",
    "../api:rtc_event_log_output_file",
    "../api:rtc_stats_api",
    "../api:rtp_parameters",
    "../api:rtp_transceiver_direction",
    "../api:scoped_refptr",
    "../api/adaptation:resource_adaptation_api",
    "../api/crypto:frame_decryptor_interface",
    "../api/crypto:options",
    "../api/neteq:neteq_api",
    "../api/rtc_event_log",
    "../api/task_queue",
    "../api/transport:bitrate_settings",
    "../api/transport:datagram_transport_interface",
    "../api/transport:enums",
    "../api/transport:field_trial_based_config",
    "../api/transport:network_control",
    "../api/transport:sctp_transport_factory_interface",
    "../api/transport:webrtc_key_value_config",
    "../api/units:data_rate",
    "../api/video:builtin_video_bitrate_allocator_factory",
    "../api/video:video_bitrate_allocator_factory",
    "../api/video:video_codec_constants",
    "../api/video:video_frame",
    "../api/video:video_rtp_headers",
    "../api/video_codecs:video_codecs_api",
    "../call:call_interfaces",
    "../common_video",
    "../logging:ice_log",
    "../media:rtc_data",
    "../media:rtc_media_base",
    "../media:rtc_media_config",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../p2p:rtc_p2p",
    "../rtc_base",
    "../rtc_base:callback_list",
    "../rtc_base:checks",
    "../rtc_base:deprecation",
    "../rtc_base:rtc_base_approved",
    "../rtc_base:rtc_operations_chain",
    "../rtc_base:safe_minmax",
    "../rtc_base:weak_ptr",
    "../rtc_base/experiments:field_trial_parser",
    "../rtc_base/network:sent_packet",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/synchronization:sequence_checker",
    "../rtc_base/system:file_wrapper",
    "../rtc_base/system:rtc_export",
    "../rtc_base/task_utils:pending_task_safety_flag",
    "../rtc_base/task_utils:to_queued_task",
    "../rtc_base/third_party/base64",
    "../rtc_base/third_party/sigslot",
    "../stats",
    "../system_wrappers",
    "../system_wrappers:field_trial",
    "../system_wrappers:metrics",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("connection_context") {
  sources = [
    "connection_context.cc",
    "connection_context.h",
  ]
  deps = [
    ":rtc_pc_base",
    "../api:callfactory_api",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:scoped_refptr",
    "../api/neteq:neteq_api",
    "../api/transport:field_trial_based_config",
    "../api/transport:sctp_transport_factory_interface",
    "../api/transport:webrtc_key_value_config",
    "../media:rtc_data",
    "../media:rtc_media_base",
    "../p2p:rtc_p2p",
    "../rtc_base",
    "../rtc_base:checks",
  ]
}

rtc_library("peer_connection_message_handler") {
  sources = [
    "peer_connection_message_handler.cc",
    "peer_connection_message_handler.h",
  ]
  deps = [
    ":stats_collector_interface",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../rtc_base",
    "../rtc_base/synchronization:sequence_checker",
  ]
}

rtc_library("usage_pattern") {
  sources = [
    "usage_pattern.cc",
    "usage_pattern.h",
  ]
  deps = [
    "../api:libjingle_peerconnection_api",
    "../rtc_base:logging",
    "../system_wrappers:metrics",
  ]
}

rtc_library("rtp_transceiver") {
  sources = [
    "rtp_transceiver.cc",
    "rtp_transceiver.h",
  ]
  deps = [
    ":rtc_pc_base",
    ":rtp_parameters_conversion",
    ":rtp_receiver",
    ":rtp_sender",
    "../api:libjingle_peerconnection_api",
    "../api:rtp_parameters",
    "../rtc_base:checks",
    "../rtc_base:logging",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtp_transmission_manager") {
  sources = [
    "rtp_transmission_manager.cc",
    "rtp_transmission_manager.h",
  ]
  deps = [
    ":audio_rtp_receiver",
    ":rtc_pc_base",
    ":rtp_receiver",
    ":rtp_sender",
    ":rtp_transceiver",
    ":stats_collector_interface",
    ":transceiver_list",
    ":usage_pattern",
    ":video_rtp_receiver",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../api:rtp_transceiver_direction",
    "../api:scoped_refptr",
    "../media:rtc_media_base",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base/third_party/sigslot",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("transceiver_list") {
  sources = [
    "transceiver_list.cc",
    "transceiver_list.h",
  ]
  deps = [ ":rtp_transceiver" ]
}

rtc_library("rtp_receiver") {
  sources = [
    "rtp_receiver.cc",
    "rtp_receiver.h",
  ]
  deps = [
    ":media_stream",
    ":video_track_source",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:rtp_parameters",
    "../api:scoped_refptr",
    "../api/crypto:frame_decryptor_interface",
    "../api/video:video_frame",
    "../media:rtc_media_base",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:rtc_base",
    "../rtc_base:rtc_base_approved",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("audio_rtp_receiver") {
  sources = [
    "audio_rtp_receiver.cc",
    "audio_rtp_receiver.h",
  ]
  deps = [
    ":audio_track",
    ":jitter_buffer_delay",
    ":jitter_buffer_delay_interface",
    ":jitter_buffer_delay_proxy",
    ":media_stream",
    ":remote_audio_source",
    ":rtp_receiver",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:rtp_parameters",
    "../api:scoped_refptr",
    "../api/crypto:frame_decryptor_interface",
    "../media:rtc_media_base",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base:refcount",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("video_rtp_receiver") {
  sources = [
    "video_rtp_receiver.cc",
    "video_rtp_receiver.h",
  ]
  deps = [
    ":jitter_buffer_delay",
    ":jitter_buffer_delay_interface",
    ":jitter_buffer_delay_proxy",
    ":media_stream",
    ":rtp_receiver",
    ":video_rtp_track_source",
    ":video_track",
    "../api:frame_transformer_interface",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:rtp_parameters",
    "../api:scoped_refptr",
    "../api/crypto:frame_decryptor_interface",
    "../api/video:video_frame",
    "../media:rtc_media_base",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base:rtc_base_approved",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("video_rtp_track_source") {
  sources = [
    "video_rtp_track_source.cc",
    "video_rtp_track_source.h",
  ]
  deps = [
    ":video_track_source",
    "../media:rtc_media_base",
    "../rtc_base",
    "../rtc_base/synchronization:mutex",
  ]
}

rtc_library("audio_track") {
  sources = [
    "audio_track.cc",
    "audio_track.h",
  ]
  deps = [
    "../api:media_stream_interface",
    "../api:scoped_refptr",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base:thread_checker",
  ]
}

rtc_library("video_track") {
  sources = [
    "video_track.cc",
    "video_track.h",
  ]
  deps = [
    "../api:media_stream_interface",
    "../api:scoped_refptr",
    "../api/video:video_frame",
    "../media:rtc_media_base",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base:rtc_base_approved",
  ]
}

rtc_source_set("jitter_buffer_delay_interface") {
  sources = [ "jitter_buffer_delay_interface.h" ]
  deps = [
    "../media:rtc_media_base",
    "../rtc_base:refcount",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("sdp_state_provider") {
  sources = [ "sdp_state_provider.h" ]
  deps = [
    ":rtc_pc_base",
    "../api:libjingle_peerconnection_api",
  ]
}

rtc_source_set("jitter_buffer_delay_proxy") {
  sources = [ "jitter_buffer_delay_proxy.h" ]
  deps = [
    ":jitter_buffer_delay_interface",
    "../api:libjingle_peerconnection_api",
    "../media:rtc_media_base",
  ]
}

rtc_library("jitter_buffer_delay") {
  sources = [
    "jitter_buffer_delay.cc",
    "jitter_buffer_delay.h",
  ]
  deps = [
    ":jitter_buffer_delay_interface",
    "../media:rtc_media_base",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base:safe_minmax",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("remote_audio_source") {
  sources = [
    "remote_audio_source.cc",
    "remote_audio_source.h",
  ]
  deps = [
    ":rtc_pc_base",
    "../api:call_api",
    "../api:media_stream_interface",
    "../api:scoped_refptr",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:rtc_base_approved",
    "../rtc_base:safe_conversions",
    "../rtc_base:stringutils",
    "../rtc_base/synchronization:mutex",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtp_sender") {
  sources = [
    "rtp_sender.cc",
    "rtp_sender.h",
  ]
  deps = [
    ":dtmf_sender",
    ":stats_collector_interface",
    "../api:audio_options_api",
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../media:rtc_media_base",
    "../rtc_base:checks",
    "../rtc_base:rtc_base",
    "../rtc_base/synchronization:mutex",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("rtp_parameters_conversion") {
  sources = [
    "rtp_parameters_conversion.cc",
    "rtp_parameters_conversion.h",
  ]
  deps = [
    ":rtc_pc_base",
    "../api:array_view",
    "../api:libjingle_peerconnection_api",
    "../api:rtc_error",
    "../api:rtp_parameters",
    "../media:rtc_media_base",
    "../rtc_base:checks",
    "../rtc_base:rtc_base",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("dtmf_sender") {
  sources = [
    "dtmf_sender.cc",
    "dtmf_sender.h",
  ]
  deps = [
    "../api:libjingle_peerconnection_api",
    "../rtc_base:checks",
    "../rtc_base:rtc_base",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("media_stream") {
  sources = [
    "media_stream.cc",
    "media_stream.h",
  ]
  deps = [
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
    "../api:scoped_refptr",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base:rtc_base",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("video_track_source") {
  sources = [
    "video_track_source.cc",
    "video_track_source.h",
  ]
  deps = [
    "../api:media_stream_interface",
    "../api/video:video_frame",
    "../media:rtc_media_base",
    "../rtc_base:checks",
    "../rtc_base:rtc_base_approved",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("stats_collector_interface") {
  sources = [ "stats_collector_interface.h" ]
  deps = [
    "../api:libjingle_peerconnection_api",
    "../api:media_stream_interface",
  ]
}

rtc_source_set("libjingle_peerconnection") {
  visibility = [ "*" ]
  deps = [
    ":peerconnection",
    "../api:libjingle_peerconnection_api",
  ]
}

if (rtc_include_tests) {
  rtc_test("rtc_pc_unittests") {
    testonly = true

    sources = [
      "channel_manager_unittest.cc",
      "channel_unittest.cc",
      "composite_rtp_transport_test.cc",
      "dtls_srtp_transport_unittest.cc",
      "dtls_transport_unittest.cc",
      "ice_transport_unittest.cc",
      "jsep_transport_controller_unittest.cc",
      "jsep_transport_unittest.cc",
      "media_session_unittest.cc",
      "rtcp_mux_filter_unittest.cc",
      "rtp_transport_unittest.cc",
      "sctp_transport_unittest.cc",
      "session_description_unittest.cc",
      "srtp_filter_unittest.cc",
      "srtp_session_unittest.cc",
      "srtp_transport_unittest.cc",
      "test/rtp_transport_test_util.h",
      "test/srtp_test_util.h",
      "used_ids_unittest.cc",
      "video_rtp_receiver_unittest.cc",
    ]

    include_dirs = [ "//third_party/libsrtp/srtp" ]

    if (is_win) {
      libs = [ "strmiids.lib" ]
    }

    deps = [
      ":libjingle_peerconnection",
      ":pc_test_utils",
      ":peerconnection",
      ":rtc_pc",
      ":rtc_pc_base",
      ":video_rtp_receiver",
      "../api:array_view",
      "../api:audio_options_api",
      "../api:ice_transport_factory",
      "../api:libjingle_peerconnection_api",
      "../api:rtc_error",
      "../api:rtp_headers",
      "../api:rtp_parameters",
      "../api/video:builtin_video_bitrate_allocator_factory",
      "../api/video/test:mock_recordable_encoded_frame",
      "../call:rtp_interfaces",
      "../call:rtp_receiver",
      "../media:rtc_data",
      "../media:rtc_media_base",
      "../media:rtc_media_tests_utils",
      "../modules/rtp_rtcp:rtp_rtcp_format",
      "../p2p:fake_ice_transport",
      "../p2p:fake_port_allocator",
      "../p2p:p2p_test_utils",
      "../p2p:rtc_p2p",
      "../rtc_base",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base/third_party/sigslot",
      "../system_wrappers:metrics",
      "../test:field_trial",
      "../test:test_main",
      "../test:test_support",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/strings",
    ]

    if (rtc_build_libsrtp) {
      deps += [ "//third_party/libsrtp" ]
    }

    if (is_android) {
      deps += [ "//testing/android/native_test:native_test_support" ]
    }
  }

  rtc_library("peerconnection_perf_tests") {
    testonly = true
    sources = [ "peer_connection_rampup_tests.cc" ]
    deps = [
      ":pc_test_utils",
      ":peerconnection_wrapper",
      "../api:audio_options_api",
      "../api:create_peerconnection_factory",
      "../api:libjingle_peerconnection_api",
      "../api:media_stream_interface",
      "../api:rtc_stats_api",
      "../api:scoped_refptr",
      "../api/audio:audio_mixer_api",
      "../api/audio_codecs:audio_codecs_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/video_codecs:builtin_video_decoder_factory",
      "../api/video_codecs:builtin_video_encoder_factory",
      "../api/video_codecs:video_codecs_api",
      "../media:rtc_media_tests_utils",
      "../modules/audio_device:audio_device_api",
      "../modules/audio_processing:api",
      "../p2p:p2p_test_utils",
      "../p2p:rtc_p2p",
      "../pc:peerconnection",
      "../rtc_base",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_tests_utils",
      "../system_wrappers",
      "../test:perf_test",
      "../test:test_support",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_library("peerconnection_wrapper") {
    testonly = true
    sources = [
      "peer_connection_wrapper.cc",
      "peer_connection_wrapper.h",
    ]
    deps = [
      ":pc_test_utils",
      "../api:function_view",
      "../api:libjingle_peerconnection_api",
      "../api:media_stream_interface",
      "../api:rtc_error",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../pc:peerconnection",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_approved",
      "../test:test_support",
    ]
  }

  rtc_library("pc_test_utils") {
    testonly = true
    sources = [
      "test/fake_audio_capture_module.cc",
      "test/fake_audio_capture_module.h",
      "test/fake_data_channel_provider.h",
      "test/fake_peer_connection_base.h",
      "test/fake_peer_connection_for_stats.h",
      "test/fake_periodic_video_source.h",
      "test/fake_periodic_video_track_source.h",
      "test/fake_rtc_certificate_generator.h",
      "test/fake_video_track_renderer.h",
      "test/fake_video_track_source.h",
      "test/frame_generator_capturer_video_track_source.h",
      "test/mock_channel_interface.h",
      "test/mock_data_channel.h",
      "test/mock_delayable.h",
      "test/mock_peer_connection_observers.h",
      "test/mock_rtp_receiver_internal.h",
      "test/mock_rtp_sender_internal.h",
      "test/peer_connection_test_wrapper.cc",
      "test/peer_connection_test_wrapper.h",
      "test/rtc_stats_obtainer.h",
      "test/test_sdp_strings.h",
    ]

    deps = [
      ":jitter_buffer_delay",
      ":jitter_buffer_delay_interface",
      ":libjingle_peerconnection",
      ":peerconnection",
      ":rtc_pc_base",
      ":rtp_receiver",
      ":rtp_sender",
      ":video_track_source",
      "../api:audio_options_api",
      "../api:create_frame_generator",
      "../api:create_peerconnection_factory",
      "../api:libjingle_peerconnection_api",
      "../api:media_stream_interface",
      "../api:rtc_error",
      "../api:rtc_stats_api",
      "../api:scoped_refptr",
      "../api/audio:audio_mixer_api",
      "../api/audio_codecs:audio_codecs_api",
      "../api/task_queue",
      "../api/task_queue:default_task_queue_factory",
      "../api/video:builtin_video_bitrate_allocator_factory",
      "../api/video:video_frame",
      "../api/video:video_rtp_headers",
      "../api/video_codecs:builtin_video_decoder_factory",
      "../api/video_codecs:builtin_video_encoder_factory",
      "../api/video_codecs:video_codecs_api",
      "../call:call_interfaces",
      "../media:rtc_data",
      "../media:rtc_media",
      "../media:rtc_media_base",
      "../media:rtc_media_tests_utils",
      "../modules/audio_device",
      "../modules/audio_processing",
      "../modules/audio_processing:api",
      "../p2p:fake_port_allocator",
      "../p2p:p2p_test_utils",
      "../p2p:rtc_p2p",
      "../rtc_base",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:rtc_task_queue",
      "../rtc_base:task_queue_for_test",
      "../rtc_base/synchronization:mutex",
      "../rtc_base/synchronization:sequence_checker",
      "../rtc_base/task_utils:repeating_task",
      "../rtc_base/third_party/sigslot",
      "../test:test_support",
      "../test:video_test_common",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_test("peerconnection_unittests") {
    testonly = true
    sources = [
      "data_channel_unittest.cc",
      "dtmf_sender_unittest.cc",
      "ice_server_parsing_unittest.cc",
      "jitter_buffer_delay_unittest.cc",
      "jsep_session_description_unittest.cc",
      "local_audio_source_unittest.cc",
      "media_stream_unittest.cc",
      "peer_connection_adaptation_integrationtest.cc",
      "peer_connection_bundle_unittest.cc",
      "peer_connection_crypto_unittest.cc",
      "peer_connection_data_channel_unittest.cc",
      "peer_connection_end_to_end_unittest.cc",
      "peer_connection_factory_unittest.cc",
      "peer_connection_header_extension_unittest.cc",
      "peer_connection_histogram_unittest.cc",
      "peer_connection_ice_unittest.cc",
      "peer_connection_integrationtest.cc",
      "peer_connection_interface_unittest.cc",
      "peer_connection_jsep_unittest.cc",
      "peer_connection_media_unittest.cc",
      "peer_connection_rtp_unittest.cc",
      "peer_connection_signaling_unittest.cc",
      "peer_connection_simulcast_unittest.cc",
      "peer_connection_wrapper.cc",
      "peer_connection_wrapper.h",
      "proxy_unittest.cc",
      "rtc_stats_collector_unittest.cc",
      "rtc_stats_integrationtest.cc",
      "rtc_stats_traversal_unittest.cc",
      "rtp_media_utils_unittest.cc",
      "rtp_parameters_conversion_unittest.cc",
      "rtp_sender_receiver_unittest.cc",
      "rtp_transceiver_unittest.cc",
      "sctp_utils_unittest.cc",
      "sdp_serializer_unittest.cc",
      "stats_collector_unittest.cc",
      "test/fake_audio_capture_module_unittest.cc",
      "test/test_sdp_strings.h",
      "track_media_info_map_unittest.cc",
      "video_rtp_track_source_unittest.cc",
      "video_track_unittest.cc",
      "webrtc_sdp_unittest.cc",
    ]

    if (rtc_enable_sctp) {
      defines = [ "HAVE_SCTP" ]
    }

    deps = [
      ":audio_rtp_receiver",
      ":audio_track",
      ":dtmf_sender",
      ":jitter_buffer_delay",
      ":jitter_buffer_delay_interface",
      ":media_stream",
      ":peerconnection",
      ":remote_audio_source",
      ":rtc_pc_base",
      ":rtp_parameters_conversion",
      ":rtp_receiver",
      ":rtp_sender",
      ":rtp_transceiver",
      ":usage_pattern",
      ":video_rtp_receiver",
      ":video_rtp_track_source",
      ":video_track",
      ":video_track_source",
      "../api:array_view",
      "../api:audio_options_api",
      "../api:create_peerconnection_factory",
      "../api:fake_frame_decryptor",
      "../api:fake_frame_encryptor",
      "../api:function_view",
      "../api:libjingle_logging_api",
      "../api:libjingle_peerconnection_api",
      "../api:media_stream_interface",
      "../api:mock_rtp",
      "../api:rtc_error",
      "../api:scoped_refptr",
      "../api/audio:audio_mixer_api",
      "../api/crypto:frame_decryptor_interface",
      "../api/crypto:frame_encryptor_interface",
      "../api/crypto:options",
      "../api/rtc_event_log",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../api/task_queue:default_task_queue_factory",
      "../api/transport:field_trial_based_config",
      "../api/transport/rtp:rtp_source",
      "../api/units:time_delta",
      "../api/video:builtin_video_bitrate_allocator_factory",
      "../call/adaptation:resource_adaptation_test_utilities",
      "../logging:fake_rtc_event_log",
      "../media:rtc_media_config",
      "../media:rtc_media_engine_defaults",
      "../modules/audio_device:audio_device_api",
      "../modules/audio_processing:audio_processing_statistics",
      "../modules/audio_processing:audioproc_test_utils",
      "../modules/rtp_rtcp:rtp_rtcp_format",
      "../p2p:fake_ice_transport",
      "../p2p:fake_port_allocator",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:rtc_json",
      "../rtc_base/synchronization:mutex",
      "../rtc_base/third_party/base64",
      "../rtc_base/third_party/sigslot",
      "../system_wrappers:metrics",
      "../test:field_trial",
      "../test:fileutils",
      "../test:rtp_test_utils",
      "../test/pc/sctp:fake_sctp_transport",
      "./scenario_tests:pc_scenario_tests",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
    if (is_android) {
      deps += [ ":android_black_magic" ]
    }

    deps += [
      ":libjingle_peerconnection",
      ":pc_test_utils",
      "../api:callfactory_api",
      "../api:rtc_event_log_output_file",
      "../api:rtc_stats_api",
      "../api:rtp_parameters",
      "../api/audio_codecs:audio_codecs_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/audio_codecs:opus_audio_decoder_factory",
      "../api/audio_codecs:opus_audio_encoder_factory",
      "../api/audio_codecs/L16:audio_decoder_L16",
      "../api/audio_codecs/L16:audio_encoder_L16",
      "../api/video_codecs:builtin_video_decoder_factory",
      "../api/video_codecs:builtin_video_encoder_factory",
      "../api/video_codecs:video_codecs_api",
      "../call:call_interfaces",
      "../media:rtc_audio_video",
      "../media:rtc_data",  # TODO(phoglund): AFAIK only used for one sctp
                            # constant.
      "../media:rtc_media_base",
      "../media:rtc_media_tests_utils",
      "../modules/audio_processing",
      "../modules/audio_processing:api",
      "../modules/utility",
      "../p2p:p2p_test_utils",
      "../p2p:rtc_p2p",
      "../pc:rtc_pc",
      "../rtc_base",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:rtc_task_queue",
      "../rtc_base:safe_conversions",
      "../test:audio_codec_mocks",
      "../test:test_main",
      "../test:test_support",
    ]

    if (is_android) {
      deps += [
        "//testing/android/native_test:native_test_support",

        # We need to depend on this one directly, or classloads will fail for
        # the voice engine BuildInfo, for instance.
        "../sdk/android:libjingle_peerconnection_java",
      ]

      shard_timeout = 900
    }
  }

  if (is_android) {
    rtc_library("android_black_magic") {
      # The android code uses hacky includes to chromium-base and the ssl code;
      # having this in a separate target enables us to keep the peerconnection
      # unit tests clean.
      check_includes = false
      testonly = true
      sources = [
        "test/android_test_initializer.cc",
        "test/android_test_initializer.h",
      ]
      deps = [
        "../sdk/android:libjingle_peerconnection_jni",
        "//testing/android/native_test:native_test_support",
      ]
    }
  }
}
