# Copyright (c) 2015 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("api") {
  visibility = [ "*" ]
  deps = []

  if (!build_with_mozilla) {
    deps += [ ":libjingle_peerconnection_api" ]
  }
}

rtc_source_set("call_api") {
  visibility = [ "*" ]
  sources = [ "call/audio_sink.h" ]
}

rtc_source_set("callfactory_api") {
  visibility = [ "*" ]
  sources = [ "call/call_factory_interface.h" ]
  deps = [
    "../call:rtp_interfaces",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("enable_media") {
  visibility = [ "*" ]
  sources = [
    "enable_media.cc",
    "enable_media.h",
  ]
  deps = [
    ":libjingle_peerconnection_api",
    "../call",
    "../media:rtc_audio_video",
    "../pc:media_factory",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("enable_media_with_defaults") {
  visibility = [ "*" ]
  allow_poison = [
    "audio_codecs",
    "default_task_queue",
    "software_video_codecs",
  ]
  sources = [
    "enable_media_with_defaults.cc",
    "enable_media_with_defaults.h",
  ]
  deps = [
    ":enable_media",
    ":libjingle_peerconnection_api",
    "../modules/audio_processing:api",
    "../rtc_base/system:rtc_export",
    "audio_codecs:builtin_audio_decoder_factory",
    "audio_codecs:builtin_audio_encoder_factory",
    "task_queue:default_task_queue_factory",
    "video_codecs:builtin_video_decoder_factory",
    "video_codecs:builtin_video_encoder_factory",
  ]
}

if (!build_with_chromium) {
  rtc_library("create_peerconnection_factory") {
    visibility = [ "*" ]
    allow_poison = [ "default_task_queue" ]
    sources = [
      "create_peerconnection_factory.cc",
      "create_peerconnection_factory.h",
    ]
    deps = [
      ":enable_media",
      ":libjingle_peerconnection_api",
      ":scoped_refptr",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../modules/audio_device:audio_device_api",
      "../modules/audio_processing:api",
      "../pc:peer_connection_factory",
      "../pc:webrtc_sdp",
      "../rtc_base:threading",
      "../stats:rtc_stats",
      "audio:audio_mixer_api",
      "audio_codecs:audio_codecs_api",
      "task_queue:default_task_queue_factory",
      "transport:field_trial_based_config",
      "video_codecs:video_codecs_api",
    ]
  }
}

rtc_library("location") {
  visibility = [ "*" ]
  deps = [ "../rtc_base/system:rtc_export" ]
  if (build_with_chromium) {
    sources = [ "../../webrtc_overrides/api/location.h" ]
    deps += [ "//base" ]
  } else {
    sources = [ "location.h" ]
  }
}

rtc_library("rtp_headers") {
  visibility = [ "*" ]
  sources = [
    "rtp_headers.cc",
    "rtp_headers.h",
  ]
  deps = [
    ":array_view",
    "units:timestamp",
    "video:video_rtp_headers",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("rtp_packet_info") {
  visibility = [ "*" ]
  sources = [
    "rtp_packet_info.cc",
    "rtp_packet_info.h",
    "rtp_packet_infos.h",
  ]
  deps = [
    ":array_view",
    ":make_ref_counted",
    ":refcountedbase",
    ":rtp_headers",
    ":scoped_refptr",
    "../rtc_base/system:rtc_export",
    "units:time_delta",
    "units:timestamp",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_source_set("video_track_source_constraints") {
  visibility = [ "*" ]
  sources = [ "video_track_source_constraints.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("media_stream_interface") {
  visibility = [ "*" ]
  sources = [
    "media_stream_interface.cc",
    "media_stream_interface.h",
    "media_stream_track.h",
    "notifier.h",
  ]
  deps = [
    ":audio_options_api",
    ":make_ref_counted",
    ":ref_count",
    ":ref_count",
    ":rtp_parameters",
    ":scoped_refptr",
    ":sequence_checker",
    ":video_track_source_constraints",
    "../modules/audio_processing:audio_processing_statistics",
    "../rtc_base:checks",
    "../rtc_base/system:no_unique_address",
    "../rtc_base/system:rtc_export",
    "video:recordable_encoded_frame",
    "video:video_frame",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("candidate") {
  visibility = [ "*" ]

  sources = [
    "candidate.cc",
    "candidate.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:logging",
    "../rtc_base:network_constants",
    "../rtc_base:socket_address",
    "../rtc_base:ssl",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_source_set("turn_customizer") {
  visibility = [ "*" ]
  sources = [ "turn_customizer.h" ]
  deps = [ "transport:stun_types" ]
}

rtc_source_set("ice_transport_interface") {
  visibility = [ "*" ]

  sources = [ "ice_transport_interface.h" ]
  deps = [
    ":async_dns_resolver",
    ":packet_socket_factory",
    ":ref_count",
    ":rtc_error",
    ":scoped_refptr",
    "rtc_event_log:rtc_event_log",
  ]
}

rtc_library("dtls_transport_interface") {
  visibility = [ "*" ]

  sources = [
    "dtls_transport_interface.cc",
    "dtls_transport_interface.h",
  ]
  deps = [
    ":ice_transport_interface",
    ":ref_count",
    ":rtc_error",
    ":scoped_refptr",
    "../rtc_base:ssl",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("dtmf_sender_interface") {
  visibility = [ "*" ]

  sources = [ "dtmf_sender_interface.h" ]
  deps = [
    ":media_stream_interface",
    ":ref_count",
  ]
}

rtc_library("rtp_sender_interface") {
  visibility = [ "*" ]

  sources = [
    "rtp_sender_interface.cc",
    "rtp_sender_interface.h",
  ]
  deps = [
    ":dtls_transport_interface",
    ":dtmf_sender_interface",
    ":frame_transformer_interface",
    ":media_stream_interface",
    ":ref_count",
    ":rtc_error",
    ":rtp_parameters",
    ":scoped_refptr",
    "../rtc_base:checks",
    "../rtc_base/system:rtc_export",
    "crypto:frame_encryptor_interface",
    "video_codecs:video_codecs_api",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ]
}

rtc_library("libjingle_peerconnection_api") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "crypto_params.h",
    "data_channel_interface.cc",
    "data_channel_interface.h",
    "jsep.cc",
    "jsep.h",
    "jsep_ice_candidate.cc",
    "jsep_ice_candidate.h",
    "jsep_session_description.h",
    "legacy_stats_types.cc",
    "legacy_stats_types.h",
    "peer_connection_interface.cc",
    "peer_connection_interface.h",
    "rtp_receiver_interface.cc",
    "rtp_receiver_interface.h",
    "rtp_transceiver_interface.cc",
    "rtp_transceiver_interface.h",
    "sctp_transport_interface.cc",
    "sctp_transport_interface.h",
    "set_local_description_observer_interface.h",
    "set_remote_description_observer_interface.h",
    "uma_metrics.h",
    "video_track_source_proxy_factory.h",

    # Remove when downstream has been updated
    "dtmf_sender_interface.h",
    "rtp_sender_interface.h",
  ]
  public_deps += [  # no-presubmit-check TODO(webrtc:8603)
    # Remove when downstream has been updated
    ":dtmf_sender_interface",
    ":rtp_sender_interface",
  ]
  deps = [
    ":array_view",
    ":async_dns_resolver",
    ":audio_options_api",
    ":callfactory_api",
    ":candidate",
    ":dtls_transport_interface",
    ":fec_controller_api",
    ":field_trials",
    ":field_trials_view",
    ":frame_transformer_interface",
    ":ice_transport_interface",
    ":libjingle_logging_api",
    ":make_ref_counted",
    ":media_stream_interface",
    ":network_state_predictor_api",
    ":packet_socket_factory",
    ":priority",
    ":ref_count",
    ":rtc_error",
    ":rtc_stats_api",
    ":rtp_packet_info",
    ":rtp_parameters",
    ":rtp_sender_interface",
    ":rtp_transceiver_direction",
    ":scoped_refptr",
    ":sequence_checker",
    ":turn_customizer",
    "../call:rtp_interfaces",
    "../p2p:rtc_p2p",
    "../pc:media_factory",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:logging",
    "../rtc_base:network",
    "../rtc_base:network_constants",
    "../rtc_base:rtc_certificate_generator",
    "../rtc_base:ssl",
    "../rtc_base:stringutils",
    "adaptation:resource_adaptation_api",
    "audio:audio_mixer_api",
    "audio_codecs:audio_codecs_api",
    "crypto:frame_decryptor_interface",
    "crypto:frame_encryptor_interface",
    "crypto:options",
    "metronome",
    "neteq:neteq_api",
    "rtc_event_log",
    "task_queue",
    "transport:bitrate_settings",
    "transport:enums",
    "transport:network_control",
    "transport:sctp_transport_factory_interface",
    "transport/rtp:rtp_source",
    "units:data_rate",
    "units:timestamp",
    "video:encoded_image",
    "video:video_bitrate_allocator_factory",
    "video:video_frame",
    "video:video_rtp_headers",
    "video_codecs:video_codecs_api",

    # Basically, don't add stuff here. You might break sensitive downstream
    # targets like pnacl. API should not depend on anything outside of this
    # file, really. All these should arguably go away in time.
    "../media:rtc_media_base",
    "../media:rtc_media_config",
    "../modules/audio_processing:audio_processing_statistics",
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:socket_address",
    "../rtc_base:threading",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("frame_transformer_interface") {
  visibility = [ "*" ]
  sources = [ "frame_transformer_interface.h" ]
  deps = [
    ":make_ref_counted",
    ":ref_count",
    ":scoped_refptr",
    "video:encoded_frame",
    "video:video_frame_metadata",
  ]
}

rtc_library("rtc_error") {
  visibility = [ "*" ]
  sources = [
    "rtc_error.cc",
    "rtc_error.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("packet_socket_factory") {
  visibility = [ "*" ]
  sources = [
    "async_resolver_factory.h",
    "packet_socket_factory.h",
  ]
  deps = [
    ":async_dns_resolver",
    ":wrapping_async_dns_resolver",
    "../rtc_base:async_packet_socket",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:proxy_info",
    "../rtc_base:socket_address",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("async_dns_resolver") {
  visibility = [ "*" ]
  sources = [ "async_dns_resolver.h" ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:socket_address",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/functional:any_invocable" ]
}

rtc_source_set("wrapping_async_dns_resolver") {
  visibility = [
    ":*",
    "../p2p:rtc_p2p",
  ]
  sources = [
    "wrapping_async_dns_resolver.cc",
    "wrapping_async_dns_resolver.h",
  ]
  deps = [
    ":async_dns_resolver",
    ":sequence_checker",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:checks",
    "../rtc_base:macromagic",
    "../rtc_base:socket_address",
    "../rtc_base:threading",
    "../rtc_base/third_party/sigslot",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
}

rtc_source_set("ref_count") {
  visibility = [ "*" ]
  sources = [ "ref_count.h" ]
}

rtc_source_set("scoped_refptr") {
  visibility = [ "*" ]
  sources = [ "scoped_refptr.h" ]
}

rtc_source_set("make_ref_counted") {
  visibility = [ "*" ]
  sources = [ "make_ref_counted.h" ]
  deps = [
    ":ref_count",
    "../rtc_base:refcount",
  ]
}

rtc_source_set("video_quality_analyzer_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/video_quality_analyzer_interface.h" ]

  deps = [
    ":array_view",
    ":stats_observer_interface",
    "../rtc_base:checks",
    "video:encoded_image",
    "video:video_frame",
    "video:video_rtp_headers",
    "video_codecs:video_codecs_api",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("track_id_stream_info_map") {
  visibility = [ "*" ]
  sources = [ "test/track_id_stream_info_map.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_source_set("rtp_transceiver_direction") {
  visibility = [ "*" ]
  sources = [ "rtp_transceiver_direction.h" ]
}

rtc_source_set("priority") {
  visibility = [ "*" ]
  sources = [ "priority.h" ]
}

rtc_library("rtp_parameters") {
  visibility = [ "*" ]
  sources = [
    "media_types.cc",
    "media_types.h",
    "rtp_parameters.cc",
    "rtp_parameters.h",
  ]
  deps = [
    ":array_view",
    ":priority",
    ":rtp_transceiver_direction",
    "../rtc_base:checks",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
    "video:resolution",
    "video_codecs:scalability_mode",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

if (is_android) {
  java_cpp_enum("priority_enums") {
    sources = [ "priority.h" ]
  }
}

rtc_source_set("audio_quality_analyzer_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/audio_quality_analyzer_interface.h" ]

  deps = [
    ":stats_observer_interface",
    ":track_id_stream_info_map",
  ]
}

rtc_source_set("stats_observer_interface") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/stats_observer_interface.h" ]

  deps = [ ":rtc_stats_api" ]

  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_source_set("peer_network_dependencies") {
  visibility = [ "*" ]
  sources = [ "test/peer_network_dependencies.h" ]
  deps = [
    ":packet_socket_factory",
    "../rtc_base:network",
    "../rtc_base:threading",
  ]
}

rtc_source_set("peer_connection_quality_test_fixture_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [ "test/peerconnection_quality_test_fixture.h" ]

  deps = [
    ":array_view",
    ":audio_quality_analyzer_api",
    ":callfactory_api",
    ":fec_controller_api",
    ":frame_generator_api",
    ":function_view",
    ":libjingle_peerconnection_api",
    ":media_stream_interface",
    ":network_state_predictor_api",
    ":packet_socket_factory",
    ":peer_network_dependencies",
    ":rtp_parameters",
    ":simulated_network_api",
    ":stats_observer_interface",
    ":track_id_stream_info_map",
    ":video_quality_analyzer_api",
    "../media:media_constants",
    "../media:rtc_media_base",
    "../modules/audio_processing:api",
    "../rtc_base:checks",
    "../rtc_base:network",
    "../rtc_base:rtc_certificate_generator",
    "../rtc_base:ssl",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../test:fileutils",
    "audio:audio_mixer_api",
    "rtc_event_log",
    "task_queue",
    "test/pclf:media_configuration",
    "test/pclf:media_quality_test_params",
    "test/pclf:peer_configurer",
    "test/video:video_frame_writer",
    "transport:network_control",
    "units:time_delta",
    "video:video_frame",
    "video_codecs:video_codecs_api",
  ]
  absl_deps = [
    "//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",
  ]
}

rtc_source_set("frame_generator_api") {
  visibility = [ "*" ]
  sources = [
    "test/frame_generator_interface.cc",
    "test/frame_generator_interface.h",
  ]

  deps = [
    ":scoped_refptr",
    "video:video_frame",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

if (rtc_include_tests) {
  # TODO(srte): Move to network_emulation sub directory.
  rtc_library("create_network_emulation_manager") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_network_emulation_manager.cc",
      "test/create_network_emulation_manager.h",
    ]
    deps = [
      ":network_emulation_manager_api",
      "../test/network:emulated_network",
    ]
  }

  if (!build_with_chromium) {
    rtc_source_set("video_quality_test_fixture_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [ "test/video_quality_test_fixture.h" ]
      deps = [
        ":fec_controller_api",
        ":libjingle_peerconnection_api",
        ":network_state_predictor_api",
        ":rtp_parameters",
        ":simulated_network_api",
        "../call:fake_network",
        "../call:rtp_interfaces",
        "../test:test_common",
        "../test:video_test_common",
        "../video/config:encoder_config",
        "transport:bitrate_settings",
        "transport:network_control",
        "video_codecs:video_codecs_api",
      ]
    }

    rtc_library("test_dependency_factory") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/test_dependency_factory.cc",
        "test/test_dependency_factory.h",
      ]
      deps = [
        ":video_quality_test_fixture_api",
        "../rtc_base:checks",
        "../rtc_base:platform_thread_types",
      ]
    }

    rtc_library("create_video_quality_test_fixture_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/create_video_quality_test_fixture.cc",
        "test/create_video_quality_test_fixture.h",
      ]
      deps = [
        ":fec_controller_api",
        ":network_state_predictor_api",
        ":scoped_refptr",
        ":video_quality_test_fixture_api",
        "../video:video_quality_test",
      ]
    }

    rtc_library("create_peerconnection_quality_test_fixture") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/create_peerconnection_quality_test_fixture.cc",
        "test/create_peerconnection_quality_test_fixture.h",
      ]

      deps = [
        ":audio_quality_analyzer_api",
        ":peer_connection_quality_test_fixture_api",
        ":time_controller",
        ":video_quality_analyzer_api",
        "../test/pc/e2e:peerconnection_quality_test",
        "test/metrics:global_metrics_logger_and_exporter",
      ]
    }
  }
}

rtc_library("create_frame_generator") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/create_frame_generator.cc",
    "test/create_frame_generator.h",
  ]
  deps = [
    ":frame_generator_api",
    "../rtc_base:checks",
    "../system_wrappers",
    "../test:frame_generator_impl",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("create_peer_connection_quality_test_frame_generator") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/create_peer_connection_quality_test_frame_generator.cc",
    "test/create_peer_connection_quality_test_frame_generator.h",
  ]
  deps = [
    ":create_frame_generator",
    ":frame_generator_api",
    "../rtc_base:checks",
    "../test:fileutils",
    "test/pclf:media_configuration",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_source_set("libjingle_logging_api") {
  visibility = [ "*" ]
  sources = [ "rtc_event_log_output.h" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ]
}

rtc_library("rtc_event_log_output_file") {
  visibility = [ "*" ]
  sources = [
    "rtc_event_log_output_file.cc",
    "rtc_event_log_output_file.h",
  ]

  deps = [
    ":libjingle_logging_api",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base/system:file_wrapper",
    "rtc_event_log",
  ]
}

rtc_source_set("rtc_stats_api") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "stats/rtc_stats.h",
    "stats/rtc_stats_collector_callback.h",
    "stats/rtc_stats_report.h",
    "stats/rtcstats_objects.h",
  ]

  deps = [
    ":make_ref_counted",
    ":ref_count",
    ":scoped_refptr",
    "../api:refcountedbase",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../rtc_base/system:rtc_export",
    "units:timestamp",
  ]

  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("audio_options_api") {
  visibility = [ "*" ]
  sources = [
    "audio_options.cc",
    "audio_options.h",
  ]

  deps = [
    ":array_view",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

rtc_library("transport_api") {
  visibility = [ "*" ]
  sources = [
    "call/transport.cc",
    "call/transport.h",
  ]
  deps = [
    ":array_view",
    ":refcountedbase",
    ":scoped_refptr",
  ]
}

rtc_source_set("bitrate_allocation") {
  visibility = [ "*" ]
  sources = [ "call/bitrate_allocation.h" ]
  deps = [
    "units:data_rate",
    "units:time_delta",
  ]
}

# TODO(srte): Move to network_emulation sub directory.
rtc_source_set("simulated_network_api") {
  visibility = [ "*" ]
  sources = [ "test/simulated_network.h" ]
  deps = [
    "../rtc_base:macromagic",
    "../rtc_base:random",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}

# TODO(srte): Move to network_emulation sub directory.
rtc_source_set("network_emulation_manager_api") {
  visibility = [ "*" ]
  sources = [
    "test/network_emulation_manager.cc",
    "test/network_emulation_manager.h",
  ]
  deps = [
    ":array_view",
    ":packet_socket_factory",
    ":peer_network_dependencies",
    ":simulated_network_api",
    ":time_controller",
    "../call:simulated_network",
    "../rtc_base:checks",
    "../rtc_base:network",
    "../rtc_base:network_constants",
    "../rtc_base:threading",
    "test/network_emulation",
    "units:data_rate",
    "units:data_size",
    "units:timestamp",
  ]
}

rtc_source_set("time_controller") {
  visibility = [ "*" ]
  sources = [
    "test/time_controller.cc",
    "test/time_controller.h",
  ]

  deps = [
    "../rtc_base:threading",
    "../rtc_base/synchronization:yield_policy",
    "../system_wrappers",
    "task_queue",
    "units:time_delta",
    "units:timestamp",
  ]
}

rtc_source_set("fec_controller_api") {
  visibility = [ "*" ]
  sources = [
    "fec_controller.h",
    "fec_controller_override.h",
  ]

  deps = [
    "../modules:module_fec_api",
    "video:video_frame_type",
  ]
}

rtc_source_set("network_state_predictor_api") {
  visibility = [ "*" ]
  sources = [ "network_state_predictor.h" ]
}

rtc_source_set("array_view") {
  visibility = [ "*" ]
  sources = [ "array_view.h" ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:type_traits",
  ]
}

rtc_source_set("refcountedbase") {
  visibility = [ "*" ]
  sources = [ "ref_counted_base.h" ]
  deps = [
    ":ref_count",
    "../rtc_base:macromagic",
    "../rtc_base:refcount",
  ]
}

rtc_library("ice_transport_factory") {
  visibility = [ "*" ]
  sources = [
    "ice_transport_factory.cc",
    "ice_transport_factory.h",
  ]
  deps = [
    ":ice_transport_interface",
    ":libjingle_peerconnection_api",
    ":make_ref_counted",
    ":packet_socket_factory",
    ":scoped_refptr",
    "../p2p:rtc_p2p",
    "../rtc_base:threading",
    "../rtc_base/system:rtc_export",
    "rtc_event_log:rtc_event_log",
  ]
}

rtc_library("neteq_simulator_api") {
  visibility = [ "*" ]
  sources = [
    "test/neteq_simulator.cc",
    "test/neteq_simulator.h",
  ]
}

rtc_source_set("function_view") {
  visibility = [ "*" ]
  sources = [ "function_view.h" ]
  deps = [ "../rtc_base:checks" ]
}

rtc_source_set("sequence_checker") {
  visibility = [ "*" ]
  sources = [ "sequence_checker.h" ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:macromagic",
    "../rtc_base/synchronization:sequence_checker_internal",
  ]
}

if (rtc_include_tests) {
  if (rtc_enable_protobuf && !build_with_chromium) {
    rtc_library("audioproc_f_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/audioproc_float.cc",
        "test/audioproc_float.h",
      ]

      deps = [
        "../modules/audio_processing",
        "../modules/audio_processing:api",
        "../modules/audio_processing:audioproc_f_impl",
      ]
    }

    rtc_library("neteq_simulator_factory") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/neteq_simulator_factory.cc",
        "test/neteq_simulator_factory.h",
      ]
      deps = [
        ":neteq_simulator_api",
        "../modules/audio_coding:neteq_test_factory",
        "../rtc_base:checks",
        "neteq:neteq_api",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }
  }

  rtc_source_set("simulcast_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/simulcast_test_fixture.h" ]
  }

  rtc_library("create_simulcast_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_simulcast_test_fixture.cc",
      "test/create_simulcast_test_fixture.h",
    ]
    deps = [
      ":simulcast_test_fixture_api",
      "../modules/video_coding:simulcast_test_fixture_impl",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_library("videocodec_test_stats_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/videocodec_test_stats.cc",
      "test/videocodec_test_stats.h",
    ]
    deps = [
      "../api/units:data_rate",
      "../api/units:frequency",
      "../rtc_base:stringutils",
      "video:video_frame_type",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_library("video_codec_stats_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/video_codec_stats.cc",
      "test/video_codec_stats.h",
    ]
    deps = [
      "../api/numerics:numerics",
      "../api/units:data_rate",
      "../api/units:data_size",
      "../api/units:frequency",
      "test/metrics:metric",
      "test/metrics:metrics_logger",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_library("videocodec_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/videocodec_test_fixture.h" ]
    deps = [
      ":videocodec_test_stats_api",
      "../modules/video_coding:video_codec_interface",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_library("video_codec_tester_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/video_codec_tester.h" ]
    deps = [
      ":video_codec_stats_api",
      "../modules/video_coding/svc:scalability_mode_util",
      "video:encoded_image",
      "video:resolution",
      "video:video_frame",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/functional:any_invocable",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("create_videocodec_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_videocodec_test_fixture.cc",
      "test/create_videocodec_test_fixture.h",
    ]
    deps = [
      ":videocodec_test_fixture_api",
      "../modules/video_coding:video_codecs_test_framework",
      "../modules/video_coding:videocodec_test_impl",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_library("create_video_codec_tester_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_video_codec_tester.cc",
      "test/create_video_codec_tester.h",
    ]
    deps = [
      ":video_codec_tester_api",
      "../modules/video_coding:video_codec_tester",
    ]
  }

  rtc_source_set("mock_audio_mixer") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_audio_mixer.h" ]

    deps = [
      "../test:test_support",
      "audio:audio_mixer_api",
    ]
  }

  rtc_source_set("mock_audio_sink") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_audio_sink.h" ]

    deps = [
      "../api:media_stream_interface",
      "../test:test_support",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  rtc_source_set("mock_data_channel") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_data_channel.h" ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_dtmf_sender") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_dtmf_sender.h" ]

    deps = [
      ":dtmf_sender_interface",
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_fec_controller_override") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_fec_controller_override.h" ]
    deps = [
      ":fec_controller_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_frame_encryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_frame_encryptor.h" ]
    deps = [
      # For api/crypto/frame_encryptor_interface.h
      ":libjingle_peerconnection_api",
      "../test:test_support",
      "crypto:frame_encryptor_interface",
    ]
  }

  rtc_library("mock_frame_decryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_frame_decryptor.h" ]
    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
      "crypto:frame_decryptor_interface",
    ]
  }

  rtc_library("mock_encoder_selector") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_encoder_selector.h" ]
    deps = [
      ":libjingle_peerconnection_api",
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("fake_frame_encryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/fake_frame_encryptor.cc",
      "test/fake_frame_encryptor.h",
    ]
    deps = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":make_ref_counted",
      ":ref_count",
      ":rtp_parameters",
      "../rtc_base:checks",
      "../rtc_base:refcount",
      "crypto:frame_encryptor_interface",
    ]
  }

  rtc_library("fake_frame_decryptor") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/fake_frame_decryptor.cc",
      "test/fake_frame_decryptor.h",
    ]
    deps = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":make_ref_counted",
      ":rtp_parameters",
      "../rtc_base:checks",
      "crypto:frame_decryptor_interface",
    ]
  }

  rtc_source_set("mock_media_stream_interface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_media_stream_interface.h" ]

    deps = [
      ":media_stream_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_packet_socket_factory") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_packet_socket_factory.h" ]

    deps = [
      ":packet_socket_factory",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_peerconnectioninterface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_peerconnectioninterface.h" ]

    deps = [
      ":libjingle_peerconnection_api",
      ":ref_count",
      "../api:scoped_refptr",
      "../rtc_base:refcount",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_peer_connection_factory_interface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_peer_connection_factory_interface.h" ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_session_description_interface") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_session_description_interface.h" ]
    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_async_dns_resolver") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_async_dns_resolver.h" ]
    deps = [
      ":async_dns_resolver",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_rtp") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/mock_rtp_transceiver.h",
      "test/mock_rtpreceiver.h",
      "test/mock_rtpsender.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      ":rtp_sender_interface",
      "../api/crypto:frame_decryptor_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_transformable_audio_frame") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_transformable_audio_frame.h" ]

    deps = [
      ":frame_transformer_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_transformable_video_frame") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_transformable_video_frame.h" ]

    deps = [
      ":frame_transformer_interface",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_bitrate_allocator") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_bitrate_allocator.h" ]

    deps = [
      "../api/video:video_bitrate_allocator",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_bitrate_allocator_factory") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_bitrate_allocator_factory.h" ]

    deps = [
      "../api/video:video_bitrate_allocator_factory",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_codec_factory") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/mock_video_decoder_factory.h",
      "test/mock_video_encoder_factory.h",
    ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_video_decoder") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_decoder.h" ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_video_encoder") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_encoder.h" ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_library("mock_video_track") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "test/mock_video_track.h" ]

    deps = [
      ":ref_count",
      "../api:media_stream_interface",
      "../api:scoped_refptr",
      "../rtc_base:refcount",
      "../test:test_support",
    ]
  }

  rtc_library("create_time_controller") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_time_controller.cc",
      "test/create_time_controller.h",
    ]

    deps = [
      ":callfactory_api",
      ":enable_media_with_defaults",
      ":libjingle_peerconnection_api",
      ":time_controller",
      "../call",
      "../call:call_interfaces",
      "../call:rtp_interfaces",
      "../pc:media_factory",
      "../rtc_base:checks",
      "../system_wrappers",
      "../test/time_controller",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/base:nullability" ]
  }

  rtc_library("rtc_api_unittests") {
    testonly = true

    sources = [
      "array_view_unittest.cc",
      "field_trials_unittest.cc",
      "function_view_unittest.cc",
      "rtc_error_unittest.cc",
      "rtc_event_log_output_file_unittest.cc",
      "rtp_packet_info_unittest.cc",
      "rtp_packet_infos_unittest.cc",
      "rtp_parameters_unittest.cc",
      "scoped_refptr_unittest.cc",
      "sequence_checker_unittest.cc",
      "test/create_time_controller_unittest.cc",
      "test/peerconnection_quality_test_fixture_unittest.cc",
    ]

    deps = [
      ":array_view",
      ":create_time_controller",
      ":field_trials",
      ":field_trials_view",
      ":function_view",
      ":libjingle_peerconnection_api",
      ":peer_connection_quality_test_fixture_api",
      ":rtc_error",
      ":rtc_event_log_output_file",
      ":rtp_packet_info",
      ":rtp_parameters",
      ":scoped_refptr",
      ":sequence_checker",
      ":time_controller",
      "../rtc_base:buffer",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:platform_thread",
      "../rtc_base:rtc_event",
      "../rtc_base:rtc_task_queue",
      "../rtc_base:task_queue_for_test",
      "../rtc_base/containers:flat_set",
      "../rtc_base/task_utils:repeating_task",
      "../system_wrappers:field_trial",
      "../test:field_trial",
      "../test:fileutils",
      "../test:rtc_expect_death",
      "../test:test_support",
      "task_queue:task_queue_default_factory_unittests",
      "test/pclf:media_configuration",
      "test/video:video_frame_writer",
      "transport:field_trial_based_config",
      "units:time_delta",
      "units:timestamp",
      "units:units_unittests",
      "video:frame_buffer_unittest",
      "video:rtp_video_frame_assembler_unittests",
      "video:video_frame_metadata_unittest",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("compile_all_headers") {
    testonly = true

    sources = [ "test/compile_all_headers.cc" ]

    deps = [
      ":fake_frame_decryptor",
      ":fake_frame_encryptor",
      ":mock_async_dns_resolver",
      ":mock_audio_mixer",
      ":mock_audio_sink",
      ":mock_data_channel",
      ":mock_dtmf_sender",
      ":mock_frame_decryptor",
      ":mock_frame_encryptor",
      ":mock_media_stream_interface",
      ":mock_packet_socket_factory",
      ":mock_peer_connection_factory_interface",
      ":mock_peerconnectioninterface",
      ":mock_rtp",
      ":mock_session_description_interface",
      ":mock_transformable_audio_frame",
      ":mock_transformable_video_frame",
      ":mock_video_bitrate_allocator",
      ":mock_video_bitrate_allocator_factory",
      ":mock_video_codec_factory",
      ":mock_video_decoder",
      ":mock_video_encoder",
      ":mock_video_track",
      ":rtc_api_unittests",
      "units:units_unittests",
    ]
  }
}

rtc_source_set("field_trials_registry") {
  visibility = [ "*" ]
  sources = [
    "field_trials_registry.cc",
    "field_trials_registry.h",
  ]
  deps = [
    ":field_trials_view",
    "../experiments:registered_field_trials",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base/containers:flat_set",
    "../rtc_base/system:rtc_export",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_source_set("field_trials_view") {
  visibility = [ "*" ]
  sources = [ "field_trials_view.h" ]
  deps = [ "../rtc_base/system:rtc_export" ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_source_set("webrtc_key_value_config") {
  visibility = [ "*" ]
  sources = [ "webrtc_key_value_config.h" ]
  deps = [ ":field_trials_view" ]
}

rtc_library("field_trials") {
  visibility = [ "*" ]
  sources = [
    "field_trials.cc",
    "field_trials.h",
  ]
  deps = [
    ":field_trials_registry",
    "../rtc_base:checks",
    "../rtc_base/containers:flat_map",
    "../system_wrappers:field_trial",
  ]
  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}

rtc_library("frame_transformer_factory") {
  visibility = [ "*" ]
  sources = [
    "frame_transformer_factory.cc",
    "frame_transformer_factory.h",
  ]
  deps = [
    ":frame_transformer_interface",
    ":ref_count",
    ":scoped_refptr",
    "../audio:audio",
    "../modules/rtp_rtcp",
    "video:encoded_frame",
    "video:video_frame_metadata",
  ]
}
