# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/grpc/grpc_library.gni")
import("../../webrtc.gni")

grpc_library("signaling_grpc_proto") {
  testonly = true
  sources = [ "peer_connection_signaling.proto" ]
}

rtc_library("signaling_interface") {
  sources = [ "signaling_interface.h" ]
  deps = [ "../../api:jsep" ]
}

rtc_library("grpc_signaling") {
  testonly = true
  sources = [
    "grpc_signaling.cc",
    "grpc_signaling.h",
  ]
  deps = [
    ":signaling_grpc_proto",
    ":signaling_interface",
    "../../api:jsep",
    "../../api:sequence_checker",
    "../../rtc_base:checks",
    "../../rtc_base:logging",
    "../../rtc_base:threading",
    "//third_party/abseil-cpp/absl/time",
    "//third_party/grpc:grpc++",
  ]

  defines = [ "GPR_FORBID_UNREACHABLE_CODE=0" ]
}

rtc_executable("data_channel_benchmark") {
  testonly = true
  sources = [
    "data_channel_benchmark.cc",
    "peer_connection_client.cc",
    "peer_connection_client.h",
  ]
  deps = [
    ":grpc_signaling",
    ":signaling_interface",
    "../../api:create_peerconnection_factory",
    "../../api:data_channel_interface",
    "../../api:field_trials",
    "../../api:field_trials_view",
    "../../api:jsep",
    "../../api:peer_connection_interface",
    "../../api:rtc_error",
    "../../api:scoped_refptr",
    "../../api:set_local_description_observer_interface",
    "../../api:set_remote_description_observer_interface",
    "../../api/audio_codecs:builtin_audio_decoder_factory",
    "../../api/audio_codecs:builtin_audio_encoder_factory",
    "../../api/video_codecs:video_decoder_factory_template",
    "../../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
    "../../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
    "../../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter",
    "../../api/video_codecs:video_decoder_factory_template_open_h264_adapter",
    "../../api/video_codecs:video_encoder_factory_template",
    "../../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter",
    "../../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter",
    "../../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter",
    "../../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
    "../../pc:libjingle_peerconnection",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../rtc_base:logging",
    "../../rtc_base:refcount",
    "../../rtc_base:rtc_event",
    "../../rtc_base:ssl_adapter",
    "../../rtc_base:stringutils",
    "../../rtc_base:threading",
    "../../system_wrappers",
    "//third_party/abseil-cpp/absl/cleanup",
    "//third_party/abseil-cpp/absl/flags:flag",
    "//third_party/abseil-cpp/absl/flags:parse",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/time",
  ]
}
