# 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_dictionary.cc",
    "base/stun_dictionary.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_dns_resolver",
    "../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_dictionary_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:async_dns_resolver",
    "../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",
    ]
  }
}
