# 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_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:field_trials_view",
    "../api:libjingle_peerconnection_api",
    "../api:packet_socket_factory",
    "../api:rtc_error",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../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",
    "../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.
    "../rtc_base:safe_minmax",
    "../rtc_base:weak_ptr",
    "../rtc_base/network:sent_packet",
    "../rtc_base/synchronization:mutex",
    "../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",
    "../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:libjingle_peerconnection_api",
      "../rtc_base",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base/task_utils:pending_task_safety_flag",
      "../rtc_base/task_utils:to_queued_task",
    ]
    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",
    ]
  }

  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:libjingle_peerconnection_api",
      "../api:packet_socket_factory",
      "../api:sequence_checker",
      "../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: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:refcount",
      "../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/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/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/task_utils:to_queued_task",
    "../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/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",
    "../rtc_base/task_utils:pending_task_safety_flag",
    "../rtc_base/task_utils:to_queued_task",
  ]
}

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",
    ]
  }
}
