# 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",
    "../api/units:timestamp",
    "../logging:ice_log",
    "../rtc_base:async_packet_socket",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:async_tcp_socket",
    "../rtc_base:async_udp_socket",
    "../rtc_base:buffer",
    "../rtc_base:buffer_queue",
    "../rtc_base:byte_buffer",
    "../rtc_base:byte_order",
    "../rtc_base:callback_list",
    "../rtc_base:checks",
    "../rtc_base:crc32",
    "../rtc_base:dscp",
    "../rtc_base:event_tracer",
    "../rtc_base:ip_address",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:mdns_responder_interface",
    "../rtc_base:net_helper",
    "../rtc_base:net_helpers",
    "../rtc_base:network",
    "../rtc_base:network_constants",
    "../rtc_base:network_route",
    "../rtc_base:proxy_info",
    "../rtc_base:rate_tracker",
    "../rtc_base:refcount",
    "../rtc_base:rtc_numerics",
    "../rtc_base:socket",
    "../rtc_base:socket_adapters",
    "../rtc_base:socket_address",
    "../rtc_base:socket_factory",
    "../rtc_base:socket_server",
    "../rtc_base:ssl",
    "../rtc_base:stream",
    "../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/base:core_headers",
    "//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:net_test_helpers",
      "../rtc_base:task_queue_for_test",
      "../rtc_base:threading",
      "../rtc_base/memory:always_valid_pointer",
    ]
    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_dns_resolving_packet_socket_factory.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:mock_async_dns_resolver",
      "../api:packet_socket_factory",
      "../api:sequence_checker",
      "../api:turn_customizer",
      "../api/crypto:options",
      "../api/transport:stun_types",
      "../rtc_base:async_resolver_interface",
      "../rtc_base:async_udp_socket",
      "../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:ssl",
      "../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:async_packet_socket",
      "../rtc_base:buffer",
      "../rtc_base:byte_buffer",
      "../rtc_base:checks",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:dscp",
      "../rtc_base:gunit_helpers",
      "../rtc_base:ip_address",
      "../rtc_base:logging",
      "../rtc_base:macromagic",
      "../rtc_base:mdns_responder_interface",
      "../rtc_base:net_helper",
      "../rtc_base:net_helpers",
      "../rtc_base:net_test_helpers",
      "../rtc_base:network",
      "../rtc_base:network_constants",
      "../rtc_base:proxy_info",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:socket",
      "../rtc_base:socket_adapters",
      "../rtc_base:socket_address",
      "../rtc_base:socket_address_pair",
      "../rtc_base:ssl",
      "../rtc_base:stringutils",
      "../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:async_packet_socket",
    "../rtc_base:async_udp_socket",
    "../rtc_base:byte_buffer",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:rtc_base_tests_utils",
    "../rtc_base:socket_adapters",
    "../rtc_base:socket_address",
    "../rtc_base:ssl",
    "../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:async_packet_socket",
    "../rtc_base:async_resolver_interface",
    "../rtc_base:byte_buffer",
    "../rtc_base:checks",
    "../rtc_base:ip_address",
    "../rtc_base:logging",
    "../rtc_base:network",
    "../rtc_base:socket_address",
    "../rtc_base:ssl",
    "../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:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:ip_address",
      "../rtc_base:rtc_base_tests_utils",
      "../rtc_base:ssl",
      "../test:test_support",
      "//testing/gtest",
    ]
  }
}
