# 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")

group("p2p") {
  deps = [
    ":libstunprober",
    ":rtc_p2p",
  ]
}

rtc_library("rtc_p2p") {
  visibility = [ "*" ]
  sources = [
    "base/async_stun_tcp_socket.cc",
    "base/async_stun_tcp_socket.h",
    "base/basic_async_resolver_factory.cc",
    "base/basic_async_resolver_factory.h",
    "base/basic_ice_controller.cc",
    "base/basic_ice_controller.h",
    "base/basic_packet_socket_factory.cc",
    "base/basic_packet_socket_factory.h",
    "base/candidate_pair_interface.h",
    "base/connection.cc",
    "base/connection.h",
    "base/connection_info.cc",
    "base/connection_info.h",
    "base/default_ice_transport_factory.cc",
    "base/default_ice_transport_factory.h",
    "base/dtls_transport.cc",
    "base/dtls_transport.h",
    "base/dtls_transport_factory.h",
    "base/dtls_transport_internal.cc",
    "base/dtls_transport_internal.h",
    "base/ice_controller_factory_interface.h",
    "base/ice_controller_interface.cc",
    "base/ice_controller_interface.h",
    "base/ice_credentials_iterator.cc",
    "base/ice_credentials_iterator.h",
    "base/ice_switch_reason.cc",
    "base/ice_switch_reason.h",
    "base/ice_transport_internal.cc",
    "base/ice_transport_internal.h",
    "base/p2p_constants.cc",
    "base/p2p_constants.h",
    "base/p2p_transport_channel.cc",
    "base/p2p_transport_channel.h",
    "base/p2p_transport_channel_ice_field_trials.h",
    "base/packet_transport_internal.cc",
    "base/packet_transport_internal.h",
    "base/port.cc",
    "base/port.h",
    "base/port_allocator.cc",
    "base/port_allocator.h",
    "base/port_interface.cc",
    "base/port_interface.h",
    "base/pseudo_tcp.cc",
    "base/pseudo_tcp.h",
    "base/regathering_controller.cc",
    "base/regathering_controller.h",
    "base/stun_port.cc",
    "base/stun_port.h",
    "base/stun_request.cc",
    "base/stun_request.h",
    "base/tcp_port.cc",
    "base/tcp_port.h",
    "base/transport_description.cc",
    "base/transport_description.h",
    "base/transport_description_factory.cc",
    "base/transport_description_factory.h",
    "base/transport_info.h",
    "base/turn_port.cc",
    "base/turn_port.h",
    "base/udp_port.h",
    "client/basic_port_allocator.cc",
    "client/basic_port_allocator.h",
    "client/relay_port_factory_interface.h",
    "client/turn_port_factory.cc",
    "client/turn_port_factory.h",
  ]

  deps = [
    "../api:array_view",
    "../api:async_dns_resolver",
    "../api:candidate",
    "../api:dtls_transport_interface",
    "../api:field_trials_view",
    "../api:ice_transport_interface",
    "../api:make_ref_counted",
    "../api:packet_socket_factory",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api:turn_customizer",
    "../api:wrapping_async_dns_resolver",
    "../api/crypto:options",
    "../api/rtc_event_log",
    "../api/task_queue",
    "../api/transport:enums",
    "../api/transport:field_trial_based_config",
    "../api/transport:stun_types",
    "../api/units:time_delta",
    "../logging:ice_log",
    "../rtc_base",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:buffer",
    "../rtc_base:buffer_queue",
    "../rtc_base:byte_buffer",
    "../rtc_base:byte_order",
    "../rtc_base:callback_list",
    "../rtc_base:checks",
    "../rtc_base:event_tracer",
    "../rtc_base:ip_address",
    "../rtc_base:location",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:net_helpers",
    "../rtc_base:network_constants",
    "../rtc_base:rate_tracker",
    "../rtc_base:refcount",
    "../rtc_base:rtc_numerics",
    "../rtc_base:socket",
    "../rtc_base:socket_address",
    "../rtc_base:socket_factory",
    "../rtc_base:socket_server",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base/containers:flat_map",
    "../rtc_base/experiments:field_trial_parser",
    "../rtc_base/memory:always_valid_pointer",
    "../rtc_base/system:no_unique_address",

    # Needed by pseudo_tcp, which should move to a separate target.
    "../api/task_queue:pending_task_safety_flag",
    "../api/task_queue:to_queued_task",
    "../rtc_base:safe_minmax",
    "../rtc_base:weak_ptr",
    "../rtc_base/network:sent_packet",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:rtc_export",
    "../rtc_base/third_party/base64",
    "../rtc_base/third_party/sigslot",
    "../system_wrappers:metrics",
  ]
  absl_deps = [
    "//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 (rtc_include_tests) {
  rtc_library("fake_ice_transport") {
    testonly = true
    visibility = [ "*" ]
    sources = [ "base/fake_ice_transport.h" ]
    deps = [
      ":rtc_p2p",
      "../api:ice_transport_interface",
      "../api:libjingle_peerconnection_api",
      "../api/task_queue:pending_task_safety_flag",
      "../api/task_queue:to_queued_task",
      "../rtc_base",
      "../rtc_base:copy_on_write_buffer",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("fake_port_allocator") {
    testonly = true
    visibility = [ "*" ]
    sources = [ "base/fake_port_allocator.h" ]
    deps = [
      ":rtc_p2p",
      "../rtc_base",
      "../rtc_base:net_helpers",
      "../rtc_base:threading",
      "../test:scoped_key_value_config",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("p2p_test_utils") {
    testonly = true
    sources = [
      "base/fake_dtls_transport.h",
      "base/fake_packet_transport.h",
      "base/mock_async_resolver.h",
      "base/mock_ice_transport.h",
      "base/test_stun_server.cc",
      "base/test_stun_server.h",
      "base/test_turn_customizer.h",
      "base/test_turn_server.h",
    ]
    deps = [
      ":fake_ice_transport",
      ":fake_port_allocator",
      ":p2p_server_utils",
      ":rtc_p2p",
      "../api:dtls_transport_interface",
      "../api:libjingle_peerconnection_api",
      "../api:packet_socket_factory",
      "../api:sequence_checker",
      "../api:turn_customizer",
      "../api/crypto:options",
      "../api/transport:stun_types",
      "../rtc_base",
      "../rtc_base:async_resolver_interface",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket",
      "../rtc_base:socket_address",
      "../rtc_base:socket_server",
      "../rtc_base:threading",
      "../rtc_base/third_party/sigslot",
      "../test:test_support",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("rtc_p2p_unittests") {
    testonly = true

    sources = [
      "base/async_stun_tcp_socket_unittest.cc",
      "base/basic_async_resolver_factory_unittest.cc",
      "base/dtls_transport_unittest.cc",
      "base/ice_credentials_iterator_unittest.cc",
      "base/p2p_transport_channel_unittest.cc",
      "base/port_allocator_unittest.cc",
      "base/port_unittest.cc",
      "base/pseudo_tcp_unittest.cc",
      "base/regathering_controller_unittest.cc",
      "base/stun_port_unittest.cc",
      "base/stun_request_unittest.cc",
      "base/stun_server_unittest.cc",
      "base/tcp_port_unittest.cc",
      "base/transport_description_factory_unittest.cc",
      "base/transport_description_unittest.cc",
      "base/turn_port_unittest.cc",
      "base/turn_server_unittest.cc",
      "client/basic_port_allocator_unittest.cc",
    ]
    deps = [
      ":fake_ice_transport",
      ":fake_port_allocator",
      ":p2p_server_utils",
      ":p2p_test_utils",
      ":rtc_p2p",
      "../api:candidate",
      "../api:dtls_transport_interface",
      "../api:field_trials_view",
      "../api:libjingle_peerconnection_api",
      "../api:mock_async_dns_resolver",
      "../api:packet_socket_factory",
      "../api:scoped_refptr",
      "../api/transport:stun_types",
      "../api/units:time_delta",
      "../rtc_base",
      "../rtc_base:buffer",
      "../rtc_base:byte_buffer",
      "../rtc_base:checks",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:gunit_helpers",
      "../rtc_base:ip_address",
      "../rtc_base:location",
      "../rtc_base:logging",
      "../rtc_base:macromagic",
      "../rtc_base:net_helpers",
      "../rtc_base:network_constants",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket",
      "../rtc_base:socket_address",
      "../rtc_base:testclient",
      "../rtc_base:threading",
      "../rtc_base:timeutils",
      "../rtc_base/network:sent_packet",
      "../rtc_base/third_party/sigslot",
      "../system_wrappers:metrics",
      "../test:rtc_expect_death",
      "../test:scoped_key_value_config",
      "../test:test_support",
      "//testing/gtest",
    ]
    absl_deps = [
      "//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",
    ]
  }
}

rtc_library("p2p_server_utils") {
  testonly = true
  sources = [
    "base/stun_server.cc",
    "base/stun_server.h",
    "base/turn_server.cc",
    "base/turn_server.h",
  ]
  deps = [
    ":rtc_p2p",
    "../api:array_view",
    "../api:packet_socket_factory",
    "../api:sequence_checker",
    "../api/task_queue:to_queued_task",
    "../api/transport:stun_types",
    "../rtc_base",
    "../rtc_base:byte_buffer",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:rtc_base_tests_utils",
    "../rtc_base:socket_address",
    "../rtc_base:stringutils",
    "../rtc_base:threading",
    "../rtc_base/third_party/sigslot",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/memory",
  ]
}

rtc_library("libstunprober") {
  visibility = [ "*" ]
  sources = [
    "stunprober/stun_prober.cc",
    "stunprober/stun_prober.h",
  ]

  deps = [
    ":rtc_p2p",
    "../api:packet_socket_factory",
    "../api:sequence_checker",
    "../api/task_queue:pending_task_safety_flag",
    "../api/task_queue:to_queued_task",
    "../api/transport:stun_types",
    "../rtc_base",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:byte_buffer",
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:logging",
    "../rtc_base:socket_address",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base/system:rtc_export",
  ]
}

if (rtc_include_tests) {
  rtc_library("libstunprober_unittests") {
    testonly = true

    sources = [ "stunprober/stun_prober_unittest.cc" ]
    deps = [
      ":libstunprober",
      ":p2p_test_utils",
      ":rtc_p2p",
      "../rtc_base",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:ip_address",
      "../rtc_base:rtc_base_tests_utils",
      "../test:test_support",
      "//testing/gtest",
    ]
  }
}
