# Copyright (c) 2014 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("//build/config/ui.gni")
import("../webrtc.gni")
if (is_android) {
  import("//build/config/android/rules.gni")
  import("//third_party/jni_zero/jni_zero.gni")
}

if (!build_with_chromium) {
  group("test") {
    testonly = true

    deps = [
      ":copy_to_file_audio_capturer",
      ":rtp_test_utils",
      ":test_common",
      ":test_renderer",
      ":test_support",
      ":test_video_capturer",
      ":video_test_common",
    ]

    if (rtc_include_tests) {
      deps += [
        ":test_main",
        "pc/e2e",
      ]
    }
  }
}

rtc_library("frame_generator_impl") {
  visibility = [
    ":*",
    "../api:create_frame_generator",
  ]
  testonly = true
  sources = [
    "frame_generator.cc",
    "frame_generator.h",
    "testsupport/ivf_video_frame_generator.cc",
    "testsupport/ivf_video_frame_generator.h",
  ]
  deps = [
    ":frame_utils",
    "../api:frame_generator_api",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/environment",
    "../api/units:time_delta",
    "../api/video:encoded_image",
    "../api/video:video_frame",
    "../api/video:video_frame_i010",
    "../api/video:video_rtp_headers",
    "../api/video_codecs:video_codecs_api",
    "../common_video",
    "../media:media_constants",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../modules/video_coding:webrtc_h264",
    "../modules/video_coding:webrtc_vp8",
    "../modules/video_coding:webrtc_vp9",
    "../modules/video_coding/codecs/av1:dav1d_decoder",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:random",
    "../rtc_base:rtc_event",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:file_wrapper",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("y4m_frame_generator") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "testsupport/y4m_frame_generator.cc",
    "testsupport/y4m_frame_generator.h",
  ]
  deps = [
    ":video_test_support",
    "../api:frame_generator_api",
    "../api:scoped_refptr",
    "../api/video:video_frame",
    "../rtc_base:checks",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("frame_utils") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "frame_utils.cc",
    "frame_utils.h",
  ]
  deps = [
    "../api:scoped_refptr",
    "../api/video:video_frame",
  ]
}

rtc_library("test_video_capturer") {
  testonly = true
  sources = [
    "test_video_capturer.cc",
    "test_video_capturer.h",
  ]
  deps = [
    "../api:scoped_refptr",
    "../api/video:video_adapter",
    "../api/video:video_broadcaster",
    "../api/video:video_frame",
    "../api/video:video_rtp_headers",
    "../rtc_base:macromagic",
    "../rtc_base/synchronization:mutex",
  ]
}

rtc_library("create_frame_generator_capturer") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "create_frame_generator_capturer.cc",
    "create_frame_generator_capturer.h",
  ]
  deps = [
    ":fileutils",
    ":frame_generator_capturer",
    "../api:create_frame_generator",
    "../api:frame_generator_api",
    "../api/task_queue",
    "../api/units:time_delta",
    "../rtc_base:checks",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_library("create_test_environment") {
  testonly = true
  sources = [
    "create_test_environment.cc",
    "create_test_environment.h",
  ]
  deps = [
    ":create_test_field_trials",
    "../api:field_trials",
    "../api:field_trials_view",
    "../api:time_controller",
    "../api/environment",
    "../api/environment:environment_factory",
    "../api/environment:force_test_environment",
    "../api/rtc_event_log",
    "../rtc_base:checks",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("create_test_field_trials") {
  testonly = true
  sources = [ "create_test_field_trials.h" ]
  deps = [
    "../api:field_trials",
    "../api/environment:force_test_environment",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]

  if (build_with_chromium) {
    sources += [ "create_test_field_trials_without_absl_flag.cc" ]
  } else {
    sources += [ "create_test_field_trials.cc" ]
    deps += [ "//third_party/abseil-cpp/absl/flags:flag" ]
  }
}

rtc_library("frame_generator_capturer") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "frame_generator_capturer.cc",
    "frame_generator_capturer.h",
  ]
  deps = [
    ":frame_utils",
    ":test_video_capturer",
    "../api:frame_generator_api",
    "../api:scoped_refptr",
    "../api/task_queue",
    "../api/units:time_delta",
    "../api/video:video_frame",
    "../api/video:video_rtp_headers",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
  ]
}

rtc_library("video_test_common") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "fake_texture_frame.cc",
    "fake_texture_frame.h",
    "fake_videorenderer.h",
    "frame_forwarder.cc",
    "frame_forwarder.h",
    "mappable_native_buffer.cc",
    "mappable_native_buffer.h",
    "video_codec_settings.h",
    "video_decoder_proxy_factory.h",
    "video_encoder_nullable_proxy_factory.h",
    "video_encoder_proxy_factory.h",
  ]

  deps = [
    ":create_frame_generator_capturer",
    ":fileutils",
    ":frame_utils",
    ":test_video_capturer",
    "../api:create_frame_generator",
    "../api:fec_controller_api",
    "../api:frame_generator_api",
    "../api:make_ref_counted",
    "../api:scoped_refptr",
    "../api/environment",
    "../api/task_queue",
    "../api/units:data_rate",
    "../api/video:encoded_image",
    "../api/video:render_resolution",
    "../api/video:video_frame",
    "../api/video:video_frame_type",
    "../api/video:video_rtp_headers",
    "../api/video_codecs:video_codecs_api",
    "../common_video",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:refcount",
    "../rtc_base:timeutils",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/task_utils:repeating_task",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/algorithm:container",
  ]
}

rtc_library("audio_test_common") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "audio_decoder_proxy_factory.h",
    "function_audio_decoder_factory.h",
  ]
  deps = [
    "../api/audio_codecs:audio_codecs_api",
    "../api/environment",
    "../rtc_base:buffer",
    "../rtc_base:checks",
    "//third_party/abseil-cpp/absl/memory",
  ]
}

if (!build_with_chromium) {
  if (is_mac || is_ios) {
    rtc_library("video_test_mac") {
      testonly = true
      sources = [
        "mac_capturer.h",
        "mac_capturer.mm",
      ]
      deps = [
        ":test_video_capturer",
        ":video_test_common",
        "../api:media_stream_interface",
        "../api:scoped_refptr",
        "../api/video:video_frame",
        "../modules/video_capture:video_capture_module",
        "../rtc_base:logging",
        "../rtc_base:threading",
        "../sdk:base_objc",
        "../sdk:native_api",
        "../sdk:native_video",
        "../sdk:videocapture_objc",
      ]
    }
  }

  rtc_library("platform_video_capturer") {
    testonly = true
    sources = [
      "platform_video_capturer.cc",
      "platform_video_capturer.h",
    ]
    deps = [
      ":test_video_capturer",
      ":video_test_common",
      "../api/video:video_frame",
      "../common_video",
      "//third_party/abseil-cpp/absl/memory",
    ]
    if (is_mac || is_ios) {
      deps += [ ":video_test_mac" ]
    } else {
      sources += [
        "vcm_capturer.cc",
        "vcm_capturer.h",
      ]
      deps += [
        "../api:scoped_refptr",
        "../modules/video_capture:video_capture_module",
        "../rtc_base:checks",
        "../rtc_base:logging",
      ]
    }
  }
}

rtc_library("rtp_test_utils") {
  testonly = true
  sources = [
    "rtcp_packet_parser.cc",
    "rtcp_packet_parser.h",
    "rtp_file_reader.cc",
    "rtp_file_reader.h",
    "rtp_file_writer.cc",
    "rtp_file_writer.h",
  ]

  deps = [
    "../api:rtp_parameters",
    "../modules/rtp_rtcp",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:timeutils",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:arch",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("perf_test") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "testsupport/perf_test.cc",
    "testsupport/perf_test.h",
    "testsupport/perf_test_histogram_writer.h",
    "testsupport/perf_test_result_writer.h",
  ]
  deps = [
    "../api/numerics",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:rtc_numerics",
    "../rtc_base:stringutils",
    "../rtc_base/synchronization:mutex",
    "../test:fileutils",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
  if (rtc_enable_protobuf) {
    sources += [ "testsupport/perf_test_histogram_writer.cc" ]
    deps += [
      "//third_party/catapult/tracing/tracing:histogram",
      "//third_party/catapult/tracing/tracing:reserved_infos",
    ]
  } else {
    sources += [ "testsupport/perf_test_histogram_writer_no_protobuf.cc" ]
  }
}

if (is_ios && !build_with_chromium) {
  rtc_library("test_support_objc") {
    testonly = true
    visibility = [ "*" ]
    sources = [
      "ios/coverage_util_ios.h",
      "ios/coverage_util_ios.mm",
      "ios/test_support.h",
      "ios/test_support.mm",
    ]
    deps = [
      ":google_test_runner_delegate",
      ":perf_test",
      "../api/test/metrics:chrome_perf_dashboard_metrics_exporter",
      "../api/test/metrics:global_metrics_logger_and_exporter",
      "../api/test/metrics:metrics_exporter",
      "../api/test/metrics:metrics_set_proto_file_exporter",
      "../api/test/metrics:print_result_proxy_metrics_exporter",
      "../api/test/metrics:stdout_metrics_exporter",
      "../sdk:helpers_objc",
    ]
    configs += [ ":test_support_objc_config" ]
  }

  # Entry point for iOS XCTest bundles. rtc_test() adds this to is_xctest
  # targets instead of test:test_main, whose gtest main() would collide with
  # this one.
  rtc_library("test_main_xctest") {
    testonly = true
    visibility = [ "*" ]
    sources = [ "ios/xctest_main.mm" ]
    frameworks = [
      "Foundation.framework",
      "UIKit.framework",
    ]
    deps = [
      ":run_loop",
      ":test_support_objc",
      "../rtc_base:threading",
    ]
  }

  rtc_library("google_test_runner_delegate") {
    sources = [ "ios/google_test_runner_delegate.h" ]
  }

  rtc_library("google_test_runner_objc") {
    testonly = true
    visibility = [ "*" ]
    sources = [ "ios/google_test_runner.mm" ]
    configs += [ "//build/config/ios:xctest_config" ]
    frameworks = [ "UIKit.framework" ]
    deps = [ ":google_test_runner_delegate" ]
  }

  config("test_support_objc_config") {
    defines = []

    if (use_clang_coverage) {
      defines += [ "WEBRTC_IOS_ENABLE_COVERAGE" ]
    }
  }
}

config("suppress_warning_4373") {
  if (is_win) {
    cflags = [
      # MSVC has a bug which generates this warning when using mocks; see the
      # section on warning 4373 in he googlemock FAQ. This warning isn't the
      # least relevant for us, anyway.
      "/wd4373",
    ]
  }
}

config("test_main_direct_config") {
  visibility = [ ":*" ]
  defines = [ "WEBRTC_UNIT_TEST" ]
}

rtc_source_set("test_support") {
  visibility = [ "*" ]
  testonly = true

  all_dependent_configs = [
    ":suppress_warning_4373",
    "//third_party/googletest:gmock_config",
    "//third_party/googletest:gtest_config",
  ]

  sources = [
    "gmock.h",
    "gtest.h",
  ]

  public_configs = [ ":test_main_direct_config" ]
  deps = [
    "../rtc_base:ignore_wundef",
    "//testing/gmock",
    "//testing/gtest",
  ]
}

rtc_library("fixed_fps_video_frame_writer_adapter") {
  visibility = [ "*" ]
  sources = [
    "testsupport/fixed_fps_video_frame_writer_adapter.cc",
    "testsupport/fixed_fps_video_frame_writer_adapter.h",
  ]
  deps = [
    ":video_frame_writer",
    "../api/test/video:video_frame_writer",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../api/video:video_frame",
    "../rtc_base:checks",
    "../system_wrappers",
  ]
}

rtc_library("video_frame_writer") {
  sources = [
    "testsupport/frame_writer.h",
    "testsupport/video_frame_writer.cc",
    "testsupport/video_frame_writer.h",
    "testsupport/y4m_frame_writer.cc",
    "testsupport/yuv_frame_writer.cc",
  ]

  deps = [
    "../api:scoped_refptr",
    "../api/test/video:video_frame_writer",
    "../api/video:video_frame",
    "../common_video",
    "../rtc_base:buffer",
    "../rtc_base:checks",
    "../rtc_base:logging",
  ]

  if (!is_ios) {
    deps += [ "//third_party:jpeg" ]
    sources += [ "testsupport/jpeg_frame_writer.cc" ]
  } else {
    sources += [ "testsupport/jpeg_frame_writer_ios.cc" ]
  }
}

rtc_library("video_test_support") {
  testonly = true

  sources = [
    "testsupport/frame_reader.h",
    "testsupport/ivf_frame_reader.cc",
    "testsupport/ivf_frame_reader.h",
    "testsupport/mock/mock_frame_reader.h",
    "testsupport/pendulum_frame_generator.cc",
    "testsupport/pendulum_frame_generator.h",
    "testsupport/switching_frame_reader.cc",
    "testsupport/switching_frame_reader.h",
    "testsupport/y4m_frame_reader.cc",
    "testsupport/y4m_header_parser.cc",
    "testsupport/y4m_header_parser.h",
    "testsupport/yuv_frame_reader.cc",
  ]

  deps = [
    ":fileutils",
    ":frame_utils",
    ":test_support",
    ":video_test_common",
    "../api:frame_generator_api",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/environment",
    "../api/test/video:video_frame_writer",
    "../api/units:data_size",
    "../api/units:frequency",
    "../api/units:time_delta",
    "../api/video:encoded_image",
    "../api/video:resolution",
    "../api/video:video_frame",
    "../api/video:video_rtp_headers",
    "../api/video_codecs:video_codecs_api",
    "../common_video",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../modules/video_coding:webrtc_h264",
    "../modules/video_coding:webrtc_vp8",
    "../modules/video_coding:webrtc_vp9",
    "../modules/video_coding/codecs/av1:dav1d_decoder",
    "../rtc_base:buffer",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:rtc_event",
    "../rtc_base:stringutils",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/system:file_wrapper",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

if (rtc_include_tests) {
  if (rtc_enable_google_benchmarks) {
    rtc_library("benchmark_main") {
      testonly = true
      sources = [ "benchmark_main.cc" ]

      deps = [ "//third_party/google_benchmark" ]
    }
  }

  if (!build_with_chromium) {
    rtc_library("resources_dir_flag") {
      testonly = true
      visibility = [ "*" ]
      sources = [
        "testsupport/resources_dir_flag.cc",
        "testsupport/resources_dir_flag.h",
      ]
      deps = [ "//third_party/abseil-cpp/absl/flags:flag" ]
    }

    rtc_library("test_main_lib") {
      testonly = true
      sources = [
        "test_main_lib.cc",
        "test_main_lib.h",
      ]

      deps = [
        ":create_test_environment",
        ":fileutils",
        ":perf_test",
        ":resources_dir_flag",
        ":test_flags",
        ":test_support",
        "../api/environment",
        "../api/test/metrics:chrome_perf_dashboard_metrics_exporter",
        "../api/test/metrics:global_metrics_logger_and_exporter",
        "../api/test/metrics:metric",
        "../api/test/metrics:metrics_exporter",
        "../api/test/metrics:metrics_set_proto_file_exporter",
        "../api/test/metrics:print_result_proxy_metrics_exporter",
        "../api/test/metrics:stdout_metrics_exporter",
        "../rtc_base:checks",
        "../rtc_base:event_tracer",
        "../rtc_base:logging",
        "../rtc_base:ssl_adapter",
        "../rtc_base:threading",
        "../system_wrappers:metrics",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]

      if (is_ios) {
        deps += [ ":test_support_objc" ]
      }
      if (is_win) {
        deps += [ "../rtc_base:win32_socket_init" ]
      }
      if (rtc_use_perfetto) {
        deps += [
          "//third_party/perfetto/include/perfetto/tracing",
          "//third_party/perfetto/src/tracing:client_api",
        ]
      }
    }

    rtc_library("test_main") {
      visibility = [ "*" ]
      testonly = true
      sources = [ "test_main.cc" ]

      deps = [
        ":test_main_lib",
        ":test_support",
        "../api/environment:force_test_environment",
        "//third_party/abseil-cpp/absl/debugging:failure_signal_handler",
        "//third_party/abseil-cpp/absl/debugging:symbolize",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
      ]
    }

    rtc_library("test_support_test_artifacts") {
      testonly = true
      sources = [
        "testsupport/test_artifacts.cc",
        "testsupport/test_artifacts.h",
      ]
      deps = [
        ":fileutils",
        "../rtc_base:logging",
        "../rtc_base/system:file_wrapper",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
      ]
    }

    test_support_unittests_resources = [
      "../resources/foreman_128x96.yuv",
      "../resources/foreman_cif_short.yuv",
      "../resources/video_coding/frame-ethernet-ii.pcap",
      "../resources/video_coding/frame-loopback.pcap",
      "../resources/video_coding/pltype103.rtp",
      "../resources/video_coding/pltype103_header_only.rtp",
      "../resources/video_coding/ssrcs-2.pcap",
      "../resources/video_coding/ssrcs-3.pcap",
    ]

    if (is_ios) {
      bundle_data("test_support_unittests_bundle_data") {
        testonly = true
        sources = test_support_unittests_resources
        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
      }
    }

    rtc_cc_test("fixed_fps_video_frame_writer_adapter_test") {
      sources = [ "testsupport/fixed_fps_video_frame_writer_adapter_test.cc" ]
      deps = [
        ":fixed_fps_video_frame_writer_adapter",
        ":test_support",
        ":video_frame_writer",
        "../api:time_controller",
        "../api/test/video:video_frame_writer",
        "../api/units:time_delta",
        "../api/units:timestamp",
        "../api/video:video_frame",
        "../rtc_base:macromagic",
        "../rtc_base/synchronization:mutex",
        "time_controller",
      ]
    }

    rtc_cc_test("call_config_utils_unittest") {
      sources = [ "call_config_utils_unittest.cc" ]
      deps = [
        ":call_config_utils",
        ":test_support",
        "../api:rtp_headers",
        "../call:video_receive_stream_api",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("create_test_field_trials_unittest") {
      sources = [ "create_test_field_trials_unittest.cc" ]
      deps = [
        ":create_test_field_trials",
        ":test_support",
        "../api:field_trials",
        "../api/environment:force_test_environment",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("direct_transport_unittest") {
      sources = [ "direct_transport_unittest.cc" ]
      deps = [
        ":direct_transport",
        ":test_support",
        "../api:rtp_parameters",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("fake_vp8_encoder_unittest") {
      sources = [ "fake_vp8_encoder_unittest.cc" ]
      deps = [
        ":fake_video_codecs",
        ":test_support",
        "../api:create_simulcast_test_fixture_api",
        "../api:simulcast_test_fixture_api",
        "../api/environment",
        "../api/test/video:function_video_factory",
        "../api/video_codecs:video_codecs_api",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("frame_generator_capturer_unittest") {
      sources = [ "frame_generator_capturer_unittest.cc" ]
      deps = [
        ":create_frame_generator_capturer",
        ":frame_generator_capturer",
        ":test_support",
        "../api/units:time_delta",
        "../api/units:timestamp",
        "../api/video:video_frame",
        "time_controller",
      ]
      data_deps = [ "../resources:scenario_config_resources" ]
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("frame_generator_unittest") {
      sources = [ "frame_generator_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        "../api:create_frame_generator",
        "../api:frame_generator_api",
        "../api:scoped_refptr",
        "../api/video:video_frame",
        "../rtc_base:checks",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("near_matcher_unittest") {
      sources = [ "near_matcher_unittest.cc" ]
      deps = [
        ":near_matcher",
        ":test_support",
        "../api/units:data_rate",
        "../api/units:time_delta",
        "../api/units:timestamp",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("rtp_file_reader_unittest") {
      sources = [ "rtp_file_reader_unittest.cc" ]
      deps = [
        ":fileutils",
        ":rtp_test_utils",
        ":test_support",
        "../modules/rtp_rtcp:rtp_rtcp_format",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("rtp_file_writer_unittest") {
      sources = [ "rtp_file_writer_unittest.cc" ]
      deps = [
        ":fileutils",
        ":rtp_test_utils",
        ":test_support",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("run_loop_unittest") {
      sources = [ "run_loop_unittest.cc" ]
      deps = [
        ":create_test_environment",
        ":run_loop",
        ":test_support",
        "../api/environment",
        "../api/task_queue",
        "../api/units:time_delta",
        "../api/units:timestamp",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("ivf_frame_reader_unittest") {
      sources = [ "testsupport/ivf_frame_reader_unittest.cc" ]
      deps = [
        ":create_test_environment",
        ":fileutils",
        ":test_support",
        ":video_test_common",
        ":video_test_support",
        "../api:create_frame_generator",
        "../api:frame_generator_api",
        "../api:scoped_refptr",
        "../api/environment",
        "../api/units:time_delta",
        "../api/video:encoded_image",
        "../api/video:resolution",
        "../api/video:video_bitrate_allocation",
        "../api/video:video_frame",
        "../api/video_codecs:video_codecs_api",
        "../modules/rtp_rtcp:rtp_rtcp_format",
        "../modules/video_coding:video_codec_interface",
        "../modules/video_coding:video_coding_utility",
        "../modules/video_coding:webrtc_h264",
        "../modules/video_coding:webrtc_vp8",
        "../modules/video_coding:webrtc_vp9",
        "../modules/video_coding/codecs/av1:libaom_av1_encoder",
        "../rtc_base:checks",
        "../rtc_base:macromagic",
        "../rtc_base:rtc_event",
        "../rtc_base/synchronization:mutex",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("ivf_video_frame_generator_unittest") {
      sources = [ "testsupport/ivf_video_frame_generator_unittest.cc" ]
      deps = [
        ":create_test_environment",
        ":fileutils",
        ":frame_generator_impl",
        ":test_support",
        ":video_test_common",
        "../api:create_frame_generator",
        "../api:frame_generator_api",
        "../api:scoped_refptr",
        "../api/environment",
        "../api/units:time_delta",
        "../api/video:encoded_image",
        "../api/video:video_bitrate_allocation",
        "../api/video:video_frame",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../modules/rtp_rtcp:rtp_rtcp_format",
        "../modules/video_coding:video_codec_interface",
        "../modules/video_coding:video_coding_utility",
        "../modules/video_coding:webrtc_h264",
        "../modules/video_coding:webrtc_vp8",
        "../modules/video_coding:webrtc_vp9",
        "../rtc_base:checks",
        "../rtc_base:macromagic",
        "../rtc_base:rtc_event",
        "../rtc_base/synchronization:mutex",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("perf_test_unittest") {
      sources = [ "testsupport/perf_test_unittest.cc" ]
      deps = [
        ":perf_test",
        ":rtc_expect_death",
        ":test_support",
        "../api/numerics",
        "../api/units:timestamp",
        "//third_party/catapult/tracing/tracing:histogram",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("switching_frame_reader_unittest") {
      sources = [ "testsupport/switching_frame_reader_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_frame_writer",
        ":video_test_support",
        "../api:scoped_refptr",
        "../api/units:time_delta",
        "../api/video:resolution",
        "../api/video:video_frame",
        "//third_party/libyuv",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("test_artifacts_unittest") {
      sources = [ "testsupport/test_artifacts_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":test_support_test_artifacts",
        "../rtc_base/system:file_wrapper",
        "//third_party/abseil-cpp/absl/flags:flag",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("video_frame_writer_unittest") {
      sources = [ "testsupport/video_frame_writer_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_frame_writer",
        ":video_test_support",
        "../api:scoped_refptr",
        "../api/test/video:video_frame_writer",
        "../api/video:resolution",
        "../api/video:video_frame",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("y4m_frame_generator_test") {
      sources = [ "testsupport/y4m_frame_generator_test.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":y4m_frame_generator",
        "../api:frame_generator_api",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("y4m_frame_reader_unittest") {
      sources = [ "testsupport/y4m_frame_reader_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_test_support",
        "../api:scoped_refptr",
        "../api/video:resolution",
        "../api/video:video_frame",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("y4m_frame_writer_unittest") {
      sources = [ "testsupport/y4m_frame_writer_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_frame_writer",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("y4m_header_parser_unittest") {
      sources = [ "testsupport/y4m_header_parser_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_test_support",
        "../api/units:data_size",
        "../api/units:frequency",
        "../api/video:resolution",
        "../api/video:video_rtp_headers",
        "//testing/gtest",
      ]
    }

    rtc_cc_test("yuv_frame_reader_unittest") {
      sources = [ "testsupport/yuv_frame_reader_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_test_support",
        "../api:scoped_refptr",
        "../api/video:resolution",
        "../api/video:video_frame",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("yuv_frame_writer_unittest") {
      sources = [ "testsupport/yuv_frame_writer_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        ":video_frame_writer",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("video_codec_tester_unittest") {
      sources = [ "video_codec_tester_unittest.cc" ]
      deps = [
        ":create_test_environment",
        ":fileutils",
        ":test_support",
        ":video_codec_tester",
        "../api:mock_video_codec_factory",
        "../api:mock_video_decoder",
        "../api:mock_video_encoder",
        "../api:scoped_refptr",
        "../api/environment",
        "../api/units:data_rate",
        "../api/units:data_size",
        "../api/units:frequency",
        "../api/units:time_delta",
        "../api/video:encoded_image",
        "../api/video:video_frame",
        "../api/video:video_frame_type",
        "../api/video_codecs:builtin_video_decoder_factory",
        "../api/video_codecs:builtin_video_encoder_factory",
        "../api/video_codecs:scalability_mode",
        "../api/video_codecs:video_codecs_api",
        "../modules/video_coding:video_codec_interface",
        "../modules/video_coding/svc:scalability_mode_util",
        "//third_party/libyuv",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("video_frame_matcher_unittest") {
      sources = [ "video_frame_matcher_unittest.cc" ]
      deps = [
        ":test_support",
        ":video_frame_matcher",
        "../api/video:video_frame",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    rtc_cc_test("wait_until_unittest") {
      sources = [ "wait_until_unittest.cc" ]
      deps = [
        ":run_loop",
        ":test_support",
        ":wait_until",
        "../api:create_time_controller",
        "../api:rtc_error",
        "../api:rtc_error_matchers",
        "../api:time_controller",
        "../api/task_queue",
        "../api/units:time_delta",
        "../api/units:timestamp",
        "../rtc_base:rtc_base_tests_utils",
        "../system_wrappers",
      ]
      data = test_support_unittests_resources
      if (is_ios) {
        deps += [ ":test_support_unittests_bundle_data" ]
      }
      if (!is_android) {
        deps += [ "../modules/video_capture:video_capture_internal_impl" ]
      }
    }

    if (rtc_enable_protobuf) {
      rtc_cc_test("perf_test_histogram_writer_unittest") {
        sources = [ "testsupport/perf_test_histogram_writer_unittest.cc" ]
        deps = [
          ":perf_test",
          ":test_support",
          "//third_party/catapult/tracing/tracing:histogram",
        ]
        data = test_support_unittests_resources
        if (is_ios) {
          deps += [ ":test_support_unittests_bundle_data" ]
        }
        if (!is_android) {
          deps += [ "../modules/video_capture:video_capture_internal_impl" ]
        }
      }
    }

    rtc_cc_test("fileutils_unittests") {
      sources = [ "testsupport/file_utils_unittest.cc" ]
      deps = [
        ":fileutils",
        ":test_support",
        "../rtc_base:checks",
        "../rtc_base:crypto_random",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]
    }

    rtc_cc_test("copy_to_file_audio_capturer_unittest") {
      sources = [ "testsupport/copy_to_file_audio_capturer_unittest.cc" ]
      deps = [
        ":copy_to_file_audio_capturer",
        ":fileutils",
        ":test_support",
        "../modules/audio_device:test_audio_device_module",
        "../rtc_base:buffer",
      ]
    }

    rtc_test_suite("test_support_unittests") {
      tests = [
        ":call_config_utils_unittest",
        ":create_test_field_trials_unittest",
        ":direct_transport_unittest",
        ":fake_vp8_encoder_unittest",
        ":frame_generator_capturer_unittest",
        ":frame_generator_unittest",
        ":near_matcher_unittest",
        ":rtp_file_reader_unittest",
        ":rtp_file_writer_unittest",
        ":run_loop_unittest",
        ":ivf_frame_reader_unittest",
        ":ivf_video_frame_generator_unittest",
        ":perf_test_unittest",
        ":switching_frame_reader_unittest",
        ":test_artifacts_unittest",
        ":video_frame_writer_unittest",
        ":y4m_frame_generator_test",
        ":y4m_frame_reader_unittest",
        ":y4m_frame_writer_unittest",
        ":y4m_header_parser_unittest",
        ":yuv_frame_reader_unittest",
        ":yuv_frame_writer_unittest",
        ":video_codec_tester_unittest",
        ":video_frame_matcher_unittest",
        ":wait_until_unittest",
        ":copy_to_file_audio_capturer_unittest",
        ":fileutils_unittests",
        ":fixed_fps_video_frame_writer_adapter_test",
        "fuzzers:fuzz_data_helper_unittest",
        "jitter:jitter_unittests",
        "pc/e2e:e2e_unittests",
        "pc/e2e/analyzer/video:video_analyzer_unittests",
        "pc/e2e/analyzer/video/dvqa:dvqa_unittests",
        "peer_scenario/bwe_integration_tests:bwe_integration_tests",
        "peer_scenario/tests:tests",
        "scenario:scenario_unittests",
        "time_controller:time_controller_unittests",
      ]
      if (rtc_enable_protobuf) {
        tests += [ ":perf_test_histogram_writer_unittest" ]
      }
    }
  }
}

if (is_ios) {
  rtc_library("fileutils_ios_objc") {
    visibility = [
      ":fileutils",
      ":fileutils_override_impl",
    ]
    sources = [
      "testsupport/ios_file_utils.h",
      "testsupport/ios_file_utils.mm",
    ]
    deps = [
      "../rtc_base:checks",
      "../sdk:helpers_objc",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
  }
}

if (is_mac) {
  rtc_library("fileutils_mac_objc") {
    visibility = [
      ":fileutils",
      ":fileutils_override_impl",
    ]
    sources = [
      "testsupport/mac_file_utils.h",
      "testsupport/mac_file_utils.mm",
    ]
    deps = [ "../rtc_base:checks" ]
  }
}

rtc_library("fileutils") {
  testonly = true
  visibility = [ "*" ]
  sources = [
    "testsupport/file_utils.cc",
    "testsupport/file_utils.h",
  ]
  deps = [
    ":fileutils_override_api",
    ":fileutils_override_impl",
    "../rtc_base:checks",
    "../rtc_base:crypto_random",
    "../rtc_base:stringutils",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
  if (is_ios) {
    deps += [ ":fileutils_ios_objc" ]
  }
  if (is_mac) {
    deps += [ ":fileutils_mac_objc" ]
  }
  if (is_win) {
    deps += [ "../rtc_base:win32" ]
  }
}

# We separate header into own target to make it possible for downstream
# projects to override implementation.
rtc_source_set("fileutils_override_api") {
  testonly = true
  sources = [ "testsupport/file_utils_override.h" ]
  deps = [ "//third_party/abseil-cpp/absl/strings:string_view" ]
}

rtc_library("fileutils_override_impl") {
  testonly = true
  visibility = [ ":fileutils" ]
  sources = [ "testsupport/file_utils_override.cc" ]
  deps = [
    ":fileutils_override_api",
    "../rtc_base:checks",
    "../rtc_base:stringutils",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
  if (is_ios) {
    deps += [ ":fileutils_ios_objc" ]
  }
  if (is_mac) {
    deps += [ ":fileutils_mac_objc" ]
  }
  if (is_win) {
    deps += [ "../rtc_base:win32" ]
  }
}

rtc_source_set("run_test") {
  testonly = true
  if (is_mac) {
    public_deps += [ ":run_test_objc" ]  # no-presubmit-check TODO(webrtc:8603)
  } else {
    public_deps +=  # no-presubmit-check TODO(webrtc:8603)
        [ ":run_test_generic" ]
  }
}

rtc_source_set("run_test_interface") {
  sources = [ "run_test.h" ]
}

if (is_mac) {
  rtc_library("run_test_objc") {
    testonly = true
    visibility = [ ":run_test" ]
    sources = [ "mac/run_test.mm" ]
    deps = [ ":run_test_interface" ]
  }
}

rtc_library("run_test_generic") {
  testonly = true
  visibility = [ ":run_test" ]
  sources = [ "run_test.cc" ]
  deps = [ ":run_test_interface" ]
}

rtc_library("direct_transport") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "direct_transport.cc",
    "direct_transport.h",
  ]
  deps = [
    "../api:rtp_headers",
    "../api:rtp_parameters",
    "../api:sequence_checker",
    "../api:transport_api",
    "../api/environment",
    "../api/task_queue",
    "../api/units:time_delta",
    "../call:call_interfaces",
    "../call:fake_network",
    "../call:simulated_packet_receiver",
    "../modules/rtp_rtcp:rtp_rtcp_format",
    "../rtc_base:checks",
    "../rtc_base:copy_on_write_buffer",
    "../rtc_base:macromagic",
    "../rtc_base:task_queue_for_test",
    "../rtc_base/network:sent_packet",
    "../rtc_base/synchronization:mutex",
    "../rtc_base/task_utils:repeating_task",
    "//third_party/abseil-cpp/absl/base:nullability",
  ]
}

rtc_library("fake_video_codecs") {
  allow_poison = [ "software_video_codecs" ]
  visibility = [ "*" ]
  sources = [
    "configurable_frame_size_encoder.cc",
    "configurable_frame_size_encoder.h",
    "fake_decoder.cc",
    "fake_decoder.h",
    "fake_encoder.cc",
    "fake_encoder.h",
    "fake_vp8_decoder.cc",
    "fake_vp8_decoder.h",
    "fake_vp8_encoder.cc",
    "fake_vp8_encoder.h",
  ]
  deps = [
    "../api:fec_controller_api",
    "../api:scoped_refptr",
    "../api:sequence_checker",
    "../api/environment",
    "../api/task_queue",
    "../api/units:time_delta",
    "../api/video:encoded_image",
    "../api/video:video_bitrate_allocation",
    "../api/video:video_codec_constants",
    "../api/video:video_frame",
    "../api/video:video_frame_type",
    "../api/video:video_rtp_headers",
    "../api/video_codecs:video_codecs_api",
    "../api/video_codecs:vp8_temporal_layers_factory",
    "../modules/video_coding:codec_globals_headers",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../rtc_base:checks",
    "../rtc_base:criticalsection",
    "../rtc_base:macromagic",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base/synchronization:mutex",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("qp_parser_for_test") {
  testonly = true
  sources = [
    "qp_parser_for_test.cc",
    "qp_parser_for_test.h",
  ]
  deps = [
    "../api/video:video_codec_constants",
    "../api/video:video_frame",
    "../api/video_codecs:video_codecs_api",
    "../modules/video_coding:av1_qp_parser",
    "../modules/video_coding:video_coding_utility",
    "../rtc_base:checks",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

rtc_library("null_transport") {
  testonly = true
  sources = [
    "null_transport.cc",
    "null_transport.h",
  ]
  deps = [ "../api:transport_api" ]
}

rtc_library("encoder_settings") {
  testonly = true
  sources = [
    "encoder_settings.cc",
    "encoder_settings.h",
  ]
  deps = [
    "../api:field_trials_view",
    "../api:make_ref_counted",
    "../api:scoped_refptr",
    "../api/video:video_frame",
    "../api/video_codecs:video_codecs_api",
    "../call:rtp_interfaces",
    "../call:video_receive_stream_api",
    "../call:video_send_stream_api",
    "../rtc_base:checks",
    "../rtc_base:refcount",
    "../video/config:encoder_config",
  ]
}

rtc_library("rtc_expect_death") {
  testonly = true
  sources = [ "testsupport/rtc_expect_death.h" ]
  deps = [ ":test_support" ]
}

rtc_library("run_loop") {
  testonly = true
  sources = [
    "run_loop.cc",
    "run_loop.h",
  ]
  deps = [
    "../api/task_queue",
    "../api/task_queue:pending_task_safety_flag",
    "../api/units:time_delta",
    "../rtc_base:socket",
    "../rtc_base:socket_server",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base:weak_ptr",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
  ]
}

rtc_library("video_test_constants") {
  testonly = true
  sources = [ "video_test_constants.h" ]
  deps = [
    "../api/units:time_delta",
    "../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

rtc_library("mock_transport") {
  testonly = true
  sources = [
    "mock_transport.cc",
    "mock_transport.h",
  ]
  deps = [
    ":test_support",
    "../api:transport_api",
  ]
}

rtc_source_set("near_matcher") {
  testonly = true
  sources = [ "near_matcher.h" ]
  deps = [
    "../api/units:time_delta",
    "../api/units:timestamp",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_source_set("test_renderer") {
  public_deps +=  # no-presubmit-check TODO(webrtc:8603)
      [ ":test_renderer_generic" ]
  testonly = true
  if (is_mac) {
    public_deps +=  # no-presubmit-check TODO(webrtc:8603)
        [ ":test_renderer_objc" ]
  }
}

rtc_library("video_frame_matcher") {
  testonly = true
  sources = [
    "video_frame_matcher.cc",
    "video_frame_matcher.h",
  ]
  deps = [
    ":test_support",
    "../api:scoped_refptr",
    "../api/video:video_frame",
    "../rtc_base:checks",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

if (is_mac) {
  rtc_library("test_renderer_objc") {
    testonly = true
    visibility = [ ":test_renderer" ]
    sources = [
      "mac/video_renderer_mac.h",
      "mac/video_renderer_mac.mm",
    ]
    deps = [ ":test_renderer_generic" ]
    frameworks = [
      "Cocoa.framework",
      "OpenGL.framework",
      "CoreVideo.framework",
    ]
    defines = [ "GL_SILENCE_DEPRECATION" ]
  }
}

rtc_library("test_renderer_generic") {
  testonly = true
  visibility = [
    ":test_renderer",
    ":test_renderer_objc",
  ]
  libs = []
  sources = [
    "video_renderer.cc",
    "video_renderer.h",
  ]
  deps = [
    "../api/video:video_frame",
    "../common_video",
    "../rtc_base:checks",
  ]
  if (is_win) {
    sources += [
      "win/d3d_renderer.cc",
      "win/d3d_renderer.h",
    ]
    deps += [ "../api:scoped_refptr" ]
  }
  if (!((is_linux || is_chromeos) && rtc_use_x11) && !is_mac && !is_win) {
    sources += [ "null_platform_renderer.cc" ]
  }
  if (((is_linux || is_chromeos) && rtc_use_x11) || is_mac) {
    sources += [
      "gl/gl_renderer.cc",
      "gl/gl_renderer.h",
    ]
  }
  if (is_mac) {
    defines = [ "GL_SILENCE_DEPRECATION" ]
  }

  if ((is_linux || is_chromeos) && rtc_use_x11) {
    sources += [
      "linux/glx_renderer.cc",
      "linux/glx_renderer.h",
      "linux/video_renderer_linux.cc",
    ]
    libs += [
      "Xext",
      "X11",
      "GL",
    ]
  }
  if (is_android) {
    libs += [
      "GLESv2",
      "log",
    ]
  }
}

rtc_library("audio_codec_mocks") {
  testonly = true
  sources = [
    "mock_audio_decoder.cc",
    "mock_audio_decoder.h",
    "mock_audio_decoder_factory.h",
    "mock_audio_encoder.cc",
    "mock_audio_encoder.h",
    "mock_audio_encoder_factory.h",
  ]

  deps = [
    ":test_support",
    "../api:bitrate_allocation",
    "../api:make_ref_counted",
    "../api:scoped_refptr",
    "../api/audio_codecs:audio_codecs_api",
    "../api/audio_codecs:builtin_audio_decoder_factory",
    "../api/environment",
    "../api/units:data_rate",
    "../api/units:time_delta",
    "../rtc_base:buffer",
    "../rtc_base:checks",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

if (!build_with_chromium) {
  rtc_library("copy_to_file_audio_capturer") {
    testonly = true
    sources = [
      "testsupport/copy_to_file_audio_capturer.cc",
      "testsupport/copy_to_file_audio_capturer.h",
    ]
    deps = [
      "../common_audio",
      "../modules/audio_device:test_audio_device_module",
      "../rtc_base:buffer",
    ]
  }

  rtc_library("test_flags") {
    testonly = true
    sources = [
      "test_flags.cc",
      "test_flags.h",
    ]
    deps = [ "//third_party/abseil-cpp/absl/flags:flag" ]
  }

  rtc_library("test_common") {
    testonly = true
    sources = [
      "call_test.cc",
      "call_test.h",
      "drifting_clock.cc",
      "drifting_clock.h",
      "layer_filtering_transport.cc",
      "layer_filtering_transport.h",
      "rtp_rtcp_observer.h",
    ]

    deps = [
      ":create_test_environment",
      ":create_test_field_trials",
      ":direct_transport",
      ":encoder_settings",
      ":fake_video_codecs",
      ":fileutils",
      ":frame_generator_capturer",
      ":mock_transport",
      ":run_loop",
      ":test_flags",
      ":test_support",
      ":test_video_capturer",
      ":video_test_common",
      ":video_test_constants",
      "..//test/network:simulated_network",
      "../api:create_frame_generator",
      "../api:fec_controller_api",
      "../api:field_trials",
      "../api:frame_generator_api",
      "../api:network_state_predictor_api",
      "../api:rtp_headers",
      "../api:rtp_parameters",
      "../api:scoped_refptr",
      "../api:simulated_network_api",
      "../api:time_controller",
      "../api:transport_api",
      "../api/audio:audio_device",
      "../api/audio:audio_processing",
      "../api/audio:builtin_audio_processing_builder",
      "../api/audio_codecs:audio_codecs_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../api/environment",
      "../api/environment:environment_factory",
      "../api/rtc_event_log",
      "../api/task_queue",
      "../api/test/video:function_video_factory",
      "../api/transport:bitrate_settings",
      "../api/transport:network_control",
      "../api/units:time_delta",
      "../api/units:timestamp",
      "../api/video:builtin_video_bitrate_allocator_factory",
      "../api/video:video_bitrate_allocator_factory",
      "../api/video:video_frame",
      "../api/video:video_rtp_headers",
      "../api/video_codecs:video_codecs_api",
      "../call",
      "../call:call_interfaces",
      "../call:fake_network",
      "../call:rtp_interfaces",
      "../call:simulated_packet_receiver",
      "../call:video_receive_stream_api",
      "../call:video_send_stream_api",
      "../modules/audio_device:test_audio_device_module",
      "../modules/audio_mixer:audio_mixer_impl",
      "../modules/rtp_rtcp",
      "../modules/rtp_rtcp:rtp_rtcp_format",
      "../modules/rtp_rtcp:rtp_video_header",
      "../modules/video_coding:codec_globals_headers",
      "../rtc_base:checks",
      "../rtc_base:copy_on_write_buffer",
      "../rtc_base:criticalsection",
      "../rtc_base:null_socket_server",
      "../rtc_base:rtc_event",
      "../rtc_base:task_queue_for_test",
      "../rtc_base:threading",
      "../rtc_base:timeutils",
      "../rtc_base/network:sent_packet",
      "../system_wrappers",
      "../video/config:encoder_config",
      "//third_party/abseil-cpp/absl/base:nullability",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]
    if (!is_android && !build_with_chromium) {
      deps += [ "../modules/video_capture:video_capture_internal_impl" ]
    }
  }
}

if (!build_with_chromium && is_android) {
  rtc_android_library("native_test_java") {
    testonly = true
    sources = [
      "android/org/webrtc/native_test/NativeTestWebrtc.java",
      "android/org/webrtc/native_test/RTCNativeTestApplication.java",
      "android/org/webrtc/native_test/RTCNativeUnitTest.java",
      "android/org/webrtc/native_test/RTCNativeUnitTestActivity.java",
      "android/org/webrtc/native_test/StrictModeContext.java",
      "android/org/webrtc/native_test/TestStatusReporter.java",
    ]
    srcjar_deps = [ ":native_test_jni" ]
    deps = [
      ":native_test_support",
      "../rtc_base:base_java",
      "//build/android:build_java",
      "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
      "//third_party/jni_zero:jni_zero_java",
    ]
  }

  source_set("native_test_support") {
    testonly = true
    sources = [
      "android/native_test_launcher.cc",
      "android/native_test_launcher.h",
      "android/native_test_util.cc",
      "android/native_test_util.h",
    ]
    deps = [
      ":native_test_jni",
      "//testing/gtest",
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/jni_zero",
    ]
  }

  generate_jni("native_test_jni") {
    testonly = true
    sources = [ "android/org/webrtc/native_test/NativeTestWebrtc.java" ]
  }
}

rtc_library("call_config_utils") {
  testonly = true

  # TODO(bugs.webrtc.org/10814): Remove rtc_json_suppressions as soon as it
  # gets removed upstream.
  public_configs = [ "../rtc_base:rtc_json_suppressions" ]
  sources = [
    "call_config_utils.cc",
    "call_config_utils.h",
  ]
  deps = [
    "../api:rtp_headers",
    "../api:transport_api",
    "../api/video_codecs:video_codecs_api",
    "../call:video_receive_stream_api",
    "../rtc_base:checks",
    "../rtc_base:rtc_json",
  ]
}

rtc_library("fake_encoded_frame") {
  testonly = true
  sources = [
    "fake_encoded_frame.cc",
    "fake_encoded_frame.h",
  ]
  deps = [
    ":test_support",
    "../api:rtp_packet_info",
    "../api/units:timestamp",
    "../api/video:encoded_frame",
    "../api/video:encoded_image",
    "../api/video:video_frame_type",
    "../api/video:video_rtp_headers",
    "../rtc_base:checks",
  ]
}

rtc_library("video_codec_tester") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "video_codec_tester.cc",
    "video_codec_tester.h",
  ]
  deps = [
    ":video_frame_writer",
    ":video_test_support",
    "../api:create_frame_generator",
    "../api:field_trials_view",
    "../api:frame_generator_api",
    "../api:make_ref_counted",
    "../api:scoped_refptr",
    "../api/environment",
    "../api/environment:environment_factory",
    "../api/numerics",
    "../api/test/metrics:metric",
    "../api/test/metrics:metrics_logger",
    "../api/test/video:video_frame_writer",
    "../api/units:data_rate",
    "../api/units:data_size",
    "../api/units:frequency",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../api/video:builtin_video_bitrate_allocator_factory",
    "../api/video:encoded_image",
    "../api/video:resolution",
    "../api/video:video_bitrate_allocation",
    "../api/video:video_bitrate_allocator",
    "../api/video:video_frame",
    "../api/video:video_frame_type",
    "../api/video_codecs:scalability_mode",
    "../api/video_codecs:video_codecs_api",
    "../media:media_constants",
    "../modules/video_coding:video_codec_interface",
    "../modules/video_coding:video_coding_utility",
    "../modules/video_coding:webrtc_h264",
    "../modules/video_coding:webrtc_vp9_helpers",
    "../modules/video_coding/codecs/av1:av1_svc_config",
    "../modules/video_coding/svc:scalability_mode_util",
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base:rtc_event",
    "../rtc_base:stringutils",
    "../rtc_base:task_queue_for_test",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../rtc_base/synchronization:mutex",
    "../system_wrappers",
    "../video/config:encoder_config",
    "../video/config:streams_config",
    "//third_party/abseil-cpp/absl/functional:any_invocable",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/libyuv",
  ]
}

rtc_library("wait_until") {
  testonly = true
  sources = [
    "wait_until.cc",
    "wait_until.h",
    "wait_until_internal.h",
  ]
  deps = [
    ":test_support",
    "../api:function_view",
    "../api:rtc_error",
    "../api:time_controller",
    "../api/units:time_delta",
    "../api/units:timestamp",
    "../rtc_base:checks",
    "../rtc_base:rtc_base_tests_utils",
    "../rtc_base:threading",
    "../rtc_base:timeutils",
    "../system_wrappers",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/functional:overload",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}
