# 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/active_ice_controller_factory_interface.h",
    "base/active_ice_controller_interface.h",
    "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_agent_interface.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",
    "base/wrapping_active_ice_controller.cc",
    "base/wrapping_active_ice_controller.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: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",
    "../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/units:time_delta",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:task_queue_for_test",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/strings",
      "//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:net_helpers",
      "../rtc_base:task_queue_for_test",
      "../rtc_base:threading",
      "../rtc_base/memory:always_valid_pointer",
      "../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_active_ice_controller.h",
      "base/mock_async_resolver.h",
      "base/mock_ice_agent.h",
      "base/mock_ice_controller.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/strings",
      "//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",
      "base/wrapping_active_ice_controller_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/task_queue",
      "../api/task_queue:pending_task_safety_flag",
      "../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: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",
    "../api/task_queue:pending_task_safety_flag",
    "../api/transport:stun_types",
    "../api/units:time_delta",
    "../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/third_party/sigslot",
  ]
  absl_deps = [
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

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/transport:stun_types",
    "../api/units:time_delta",
    "../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",
    ]
  }
}
