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

group("api") {
  visibility = [ "*" ]
  deps = []

  if (!build_with_mozilla) {
    deps += [ ":libjingle_peerconnection_api" ]
  }
}

rtc_source_set("call_api") {
  visibility = [ "*" ]
  sources = [
    "call/audio_sink.h",
  ]
}

rtc_source_set("callfactory_api") {
  visibility = [ "*" ]
  sources = [
    "call/call_factory_interface.h",
  ]
}

if (!build_with_chromium) {
  rtc_static_library("create_peerconnection_factory") {
    visibility = [ "*" ]
    allow_poison = [ "default_task_queue" ]
    sources = [
      "create_peerconnection_factory.cc",
      "create_peerconnection_factory.h",
    ]
    deps = [
      ":callfactory_api",
      ":libjingle_peerconnection_api",
      ":scoped_refptr",
      "../api/rtc_event_log:rtc_event_log_factory",
      "../media:rtc_audio_video",
      "../media:rtc_media_base",
      "../modules/audio_device:audio_device_api",
      "../modules/audio_processing:api",
      "../pc:peerconnection",
      "../rtc_base",
      "../rtc_base:rtc_base_approved",
      "audio:audio_mixer_api",
      "audio_codecs:audio_codecs_api",
      "task_queue:default_task_queue_factory",
      "video_codecs:video_codecs_api",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }
}

rtc_source_set("rtp_headers") {
  visibility = [ "*" ]
  sources = [
    "rtp_headers.cc",
    "rtp_headers.h",
  ]
  deps = [
    ":array_view",
    "..:webrtc_common",
    "units:timestamp",
    "video:video_rtp_headers",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("rtp_packet_info") {
  visibility = [ "*" ]
  sources = [
    "rtp_packet_info.cc",
    "rtp_packet_info.h",
    "rtp_packet_infos.h",
  ]
  deps = [
    ":array_view",
    ":refcountedbase",
    ":rtp_headers",
    ":scoped_refptr",
    "..:webrtc_common",
    "../rtc_base:deprecation",
    "../rtc_base:rtc_base_approved",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_static_library("libjingle_peerconnection_api") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "async_resolver_factory.h",
    "bitrate_constraints.h",
    "candidate.cc",
    "candidate.h",
    "congestion_control_interface.h",
    "crypto/crypto_options.cc",
    "crypto/crypto_options.h",
    "crypto/frame_decryptor_interface.h",
    "crypto/frame_encryptor_interface.h",
    "crypto_params.h",
    "data_channel_interface.cc",
    "data_channel_interface.h",
    "data_channel_transport_interface.cc",
    "data_channel_transport_interface.h",
    "datagram_transport_interface.h",
    "dtls_transport_interface.cc",
    "dtls_transport_interface.h",
    "dtmf_sender_interface.h",
    "ice_transport_interface.h",
    "jsep.cc",
    "jsep.h",
    "jsep_ice_candidate.cc",
    "jsep_ice_candidate.h",
    "jsep_session_description.h",
    "media_stream_interface.cc",
    "media_stream_interface.h",
    "media_stream_proxy.h",
    "media_stream_track_proxy.h",
    "media_transport_config.cc",
    "media_transport_config.h",
    "media_transport_interface.cc",
    "media_transport_interface.h",
    "notifier.h",
    "packet_socket_factory.h",
    "peer_connection_factory_proxy.h",
    "peer_connection_interface.cc",
    "peer_connection_interface.h",
    "peer_connection_proxy.h",
    "proxy.cc",
    "proxy.h",
    "rtp_receiver_interface.cc",
    "rtp_receiver_interface.h",
    "rtp_sender_interface.cc",
    "rtp_sender_interface.h",
    "rtp_transceiver_interface.cc",
    "rtp_transceiver_interface.h",
    "sctp_transport_interface.cc",
    "sctp_transport_interface.h",
    "set_remote_description_observer_interface.h",
    "stats_types.cc",
    "stats_types.h",
    "turn_customizer.h",
    "uma_metrics.h",
    "video_track_source_proxy.h",
  ]
  deps = [
    ":array_view",
    ":audio_options_api",
    ":callfactory_api",
    ":fec_controller_api",
    ":libjingle_logging_api",
    ":network_state_predictor_api",
    ":packet_socket_factory",
    ":rtc_error",
    ":rtc_stats_api",
    ":rtp_packet_info",
    ":rtp_parameters",
    ":scoped_refptr",
    "audio:audio_mixer_api",
    "audio_codecs:audio_codecs_api",
    "rtc_event_log",
    "task_queue",
    "transport:bitrate_settings",
    "transport:network_control",
    "transport/media:audio_interfaces",
    "transport/media:video_interfaces",
    "transport/rtp:rtp_source",
    "units:data_rate",
    "units:timestamp",
    "video:encoded_image",
    "video:video_frame",
    "video:video_rtp_headers",
    "//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",

    # Basically, don't add stuff here. You might break sensitive downstream
    # targets like pnacl. API should not depend on anything outside of this
    # file, really. All these should arguably go away in time.
    "..:webrtc_common",
    "../media:rtc_media_config",
    "../modules/audio_processing:audio_processing_statistics",
    "../rtc_base",
    "../rtc_base:checks",
    "../rtc_base:deprecation",
    "../rtc_base:rtc_base_approved",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("rtc_error") {
  visibility = [ "*" ]
  sources = [
    "rtc_error.cc",
    "rtc_error.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:logging",
    "../rtc_base:macromagic",
    "../rtc_base/system:rtc_export",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

rtc_source_set("packet_socket_factory") {
  visibility = [ "*" ]
  sources = [
    # TODO(bugs.webrtc.org/7447: remove .h files from the api target once
    # downstream is updated to use the new target.
    "async_resolver_factory.h",
    "packet_socket_factory.h",
  ]
  deps = [
    "../rtc_base:rtc_base",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("scoped_refptr") {
  visibility = [ "*" ]
  sources = [
    "scoped_refptr.h",
  ]
}

rtc_source_set("video_quality_test_fixture_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/video_quality_test_fixture.h",
  ]
  deps = [
    ":fec_controller_api",
    ":libjingle_peerconnection_api",
    ":network_state_predictor_api",
    ":rtp_parameters",
    ":simulated_network_api",
    "../call:fake_network",
    "../call:rtp_interfaces",
    "../test:test_common",
    "../test:video_test_common",
    "transport:network_control",
    "video_codecs:video_codecs_api",
  ]
}

rtc_source_set("video_quality_analyzer_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/video_quality_analyzer_interface.h",
  ]

  deps = [
    ":stats_observer_interface",
    "video:encoded_image",
    "video:video_frame",
    "video:video_rtp_headers",
    "video_codecs:video_codecs_api",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("track_id_stream_label_map") {
  visibility = [ "*" ]
  sources = [
    "test/track_id_stream_label_map.h",
  ]
}

rtc_source_set("rtp_parameters") {
  visibility = [ "*" ]
  sources = [
    "media_types.cc",
    "media_types.h",
    "rtp_parameters.cc",
    "rtp_parameters.h",
  ]
  deps = [
    ":array_view",
    "../rtc_base:checks",
    "../rtc_base:stringutils",
    "../rtc_base/system:rtc_export",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("audio_quality_analyzer_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/audio_quality_analyzer_interface.h",
  ]

  deps = [
    ":stats_observer_interface",
    ":track_id_stream_label_map",
  ]
}

rtc_source_set("stats_observer_interface") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/stats_observer_interface.h",
  ]

  deps = [
    # For api/stats_types.h
    ":libjingle_peerconnection_api",
    ":rtp_parameters",
  ]
}

rtc_source_set("peer_connection_quality_test_fixture_api") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/peerconnection_quality_test_fixture.h",
  ]

  deps = [
    ":audio_quality_analyzer_api",
    ":callfactory_api",
    ":fec_controller_api",
    ":function_view",
    ":libjingle_peerconnection_api",
    ":network_state_predictor_api",
    ":simulated_network_api",
    ":stats_observer_interface",
    ":video_quality_analyzer_api",
    "../media:rtc_media_base",
    "../rtc_base:rtc_base",
    "rtc_event_log",
    "task_queue",
    "transport:network_control",
    "units:time_delta",
    "video_codecs:video_codecs_api",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("test_dependency_factory") {
  visibility = [ "*" ]
  testonly = true
  sources = [
    "test/test_dependency_factory.cc",
    "test/test_dependency_factory.h",
  ]
  deps = [
    ":video_quality_test_fixture_api",
    "../rtc_base:checks",
    "../rtc_base:thread_checker",
    "//third_party/abseil-cpp/absl/memory",
  ]
}

if (rtc_include_tests) {
  rtc_source_set("create_video_quality_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_video_quality_test_fixture.cc",
      "test/create_video_quality_test_fixture.h",
    ]
    deps = [
      ":fec_controller_api",
      ":network_state_predictor_api",
      ":scoped_refptr",
      ":video_quality_test_fixture_api",
      "../video:video_quality_test",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("create_network_emulation_manager") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_network_emulation_manager.cc",
      "test/create_network_emulation_manager.h",
    ]
    deps = [
      ":network_emulation_manager_api",
      "../test/network:emulated_network",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("create_peerconnection_quality_test_fixture") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_peerconnection_quality_test_fixture.cc",
      "test/create_peerconnection_quality_test_fixture.h",
    ]

    deps = [
      ":audio_quality_analyzer_api",
      ":peer_connection_quality_test_fixture_api",
      ":video_quality_analyzer_api",
      "../test/pc/e2e:peerconnection_quality_test",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }
}

rtc_source_set("libjingle_logging_api") {
  visibility = [ "*" ]
  sources = [
    "rtc_event_log_output.h",
  ]
}

rtc_source_set("rtc_event_log_output_file") {
  visibility = [ "*" ]
  sources = [
    "rtc_event_log_output_file.cc",
    "rtc_event_log_output_file.h",
  ]

  deps = [
    ":libjingle_logging_api",
    "../rtc_base:checks",
    "../rtc_base:rtc_base_approved",
    "../rtc_base/system:file_wrapper",
    "rtc_event_log",
  ]
}

rtc_source_set("rtc_stats_api") {
  visibility = [ "*" ]
  cflags = []
  sources = [
    "stats/rtc_stats.h",
    "stats/rtc_stats_collector_callback.h",
    "stats/rtc_stats_report.h",
    "stats/rtcstats_objects.h",
  ]

  deps = [
    ":scoped_refptr",
    "../rtc_base:checks",
    "../rtc_base:rtc_base_approved",
    "../rtc_base/system:rtc_export",
  ]
}

rtc_source_set("audio_options_api") {
  visibility = [ "*" ]
  sources = [
    "audio_options.cc",
    "audio_options.h",
  ]

  deps = [
    ":array_view",
    "../rtc_base:stringutils",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("transport_api") {
  visibility = [ "*" ]
  sources = [
    "call/transport.cc",
    "call/transport.h",
  ]
}

rtc_source_set("bitrate_allocation") {
  visibility = [ "*" ]
  sources = [
    "call/bitrate_allocation.h",
  ]
  deps = [
    "units:data_rate",
    "units:time_delta",
  ]
}

rtc_source_set("simulated_network_api") {
  visibility = [ "*" ]
  sources = [
    "test/simulated_network.h",
  ]
  deps = [
    "../rtc_base",
    "../rtc_base:criticalsection",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_source_set("network_emulation_manager_api") {
  visibility = [ "*" ]
  sources = [
    "test/network_emulation_manager.h",
  ]
  deps = [
    ":simulated_network_api",
    "../rtc_base",
    "units:data_rate",
    "units:data_size",
    "units:timestamp",
  ]
}

rtc_source_set("fec_controller_api") {
  visibility = [ "*" ]
  sources = [
    "fec_controller.h",
    "fec_controller_override.h",
  ]

  deps = [
    "../modules:module_fec_api",
    "video:video_frame_type",
  ]
}

rtc_source_set("network_state_predictor_api") {
  visibility = [ "*" ]
  sources = [
    "network_state_predictor.h",
  ]
}

rtc_source_set("array_view") {
  visibility = [ "*" ]
  sources = [
    "array_view.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:type_traits",
  ]
}

rtc_source_set("refcountedbase") {
  visibility = [ "*" ]
  sources = [
    "ref_counted_base.h",
  ]
  deps = [
    "../rtc_base:rtc_base_approved",
  ]
}

rtc_source_set("ice_transport_factory") {
  visibility = [ "*" ]
  sources = [
    "ice_transport_factory.cc",
    "ice_transport_factory.h",
  ]
  deps = [
    ":libjingle_peerconnection_api",
    ":scoped_refptr",
    "../p2p:rtc_p2p",
    "../rtc_base",
    "../rtc_base/system:rtc_export",
    "rtc_event_log:rtc_event_log",
    "//third_party/abseil-cpp/absl/memory",
  ]
}

rtc_source_set("neteq_simulator_api") {
  visibility = [ "*" ]
  sources = [
    "test/neteq_simulator.cc",
    "test/neteq_simulator.h",
  ]
}

rtc_source_set("function_view") {
  visibility = [ "*" ]
  sources = [
    "function_view.h",
  ]
  deps = [
    "../rtc_base:checks",
  ]
}

if (rtc_include_tests) {
  if (rtc_enable_protobuf) {
    rtc_source_set("audioproc_f_api") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/audioproc_float.cc",
        "test/audioproc_float.h",
      ]

      deps = [
        "../modules/audio_processing",
        "../modules/audio_processing:api",
        "../modules/audio_processing:audioproc_f_impl",
      ]
    }

    rtc_source_set("neteq_simulator_factory") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test/neteq_simulator_factory.cc",
        "test/neteq_simulator_factory.h",
      ]
      deps = [
        ":neteq_simulator_api",
        "../modules/audio_coding:neteq_test_factory",
        "../rtc_base:checks",
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/flags:parse",
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }
  }

  rtc_source_set("simulcast_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/simulcast_test_fixture.h",
    ]
  }

  rtc_source_set("create_simulcast_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_simulcast_test_fixture.cc",
      "test/create_simulcast_test_fixture.h",
    ]
    deps = [
      ":simulcast_test_fixture_api",
      "../modules/video_coding:simulcast_test_fixture_impl",
      "../rtc_base:rtc_base_approved",
      "video_codecs:video_codecs_api",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("videocodec_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/videocodec_test_fixture.h",
      "test/videocodec_test_stats.cc",
      "test/videocodec_test_stats.h",
    ]
    deps = [
      "..:webrtc_common",
      "../modules/video_coding:video_codec_interface",
      "../rtc_base:stringutils",
      "video:video_frame_type",
      "video_codecs:video_codecs_api",
    ]
  }

  rtc_source_set("create_videocodec_test_fixture_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "test/create_videocodec_test_fixture.cc",
      "test/create_videocodec_test_fixture.h",
    ]
    deps = [
      ":videocodec_test_fixture_api",
      "../modules/video_coding:video_codecs_test_framework",
      "../modules/video_coding:videocodec_test_impl",
      "../rtc_base:rtc_base_approved",
      "video_codecs:video_codecs_api",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("mock_audio_mixer") {
    testonly = true
    sources = [
      "test/mock_audio_mixer.h",
    ]

    deps = [
      "../test:test_support",
      "audio:audio_mixer_api",
    ]
  }

  rtc_source_set("mock_fec_controller_override") {
    testonly = true
    sources = [
      "test/mock_fec_controller_override.h",
    ]
    deps = [
      ":fec_controller_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_frame_encryptor") {
    testonly = true
    sources = [
      "test/mock_frame_encryptor.cc",
      "test/mock_frame_encryptor.h",
    ]
    deps = [
      # For api/crypto/frame_encryptor_interface.h
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_frame_decryptor") {
    testonly = true
    sources = [
      "test/mock_frame_decryptor.cc",
      "test/mock_frame_decryptor.h",
    ]
    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("fake_frame_encryptor") {
    testonly = true
    sources = [
      "test/fake_frame_encryptor.cc",
      "test/fake_frame_encryptor.h",
    ]
    deps = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":rtp_parameters",
      "..:webrtc_common",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_approved",
    ]
  }

  rtc_source_set("fake_frame_decryptor") {
    testonly = true
    sources = [
      "test/fake_frame_decryptor.cc",
      "test/fake_frame_decryptor.h",
    ]
    deps = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":rtp_parameters",
      "..:webrtc_common",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_approved",
    ]
  }

  rtc_source_set("mock_peerconnectioninterface") {
    testonly = true
    sources = [
      "test/mock_peerconnectioninterface.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_rtp") {
    testonly = true
    sources = [
      "test/mock_rtpreceiver.h",
      "test/mock_rtpsender.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_bitrate_allocator") {
    testonly = true
    sources = [
      "test/mock_video_bitrate_allocator.h",
    ]

    deps = [
      "../api/video:video_bitrate_allocator",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_bitrate_allocator_factory") {
    testonly = true
    sources = [
      "test/mock_video_bitrate_allocator_factory.h",
    ]

    deps = [
      "../api/video:video_bitrate_allocator_factory",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_codec_factory") {
    testonly = true
    sources = [
      "test/mock_video_decoder_factory.h",
      "test/mock_video_encoder_factory.h",
    ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_decoder") {
    visibility = [ "*" ]

    testonly = true
    sources = [
      "test/mock_video_decoder.cc",
      "test/mock_video_decoder.h",
    ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("mock_video_encoder") {
    visibility = [ "*" ]

    testonly = true
    sources = [
      "test/mock_video_encoder.cc",
      "test/mock_video_encoder.h",
    ]

    deps = [
      "../api/video_codecs:video_codecs_api",
      "../test:test_support",
    ]
  }

  rtc_source_set("fake_media_transport") {
    testonly = true

    sources = [
      "test/fake_datagram_transport.h",
      "test/fake_media_transport.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      "../rtc_base:checks",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("loopback_media_transport") {
    testonly = true

    sources = [
      "test/loopback_media_transport.cc",
      "test/loopback_media_transport.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      "../rtc_base",
      "../rtc_base:checks",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("rtc_api_unittests") {
    testonly = true

    sources = [
      "array_view_unittest.cc",
      "function_view_unittest.cc",
      "rtc_error_unittest.cc",
      "rtc_event_log_output_file_unittest.cc",
      "rtp_packet_info_unittest.cc",
      "rtp_packet_infos_unittest.cc",
      "rtp_parameters_unittest.cc",
      "test/loopback_media_transport_unittest.cc",
    ]

    deps = [
      ":array_view",
      ":function_view",
      ":libjingle_peerconnection_api",
      ":loopback_media_transport",
      ":rtc_error",
      ":rtc_event_log_output_file",
      ":rtp_packet_info",
      ":rtp_parameters",
      "../rtc_base:checks",
      "../rtc_base:gunit_helpers",
      "../rtc_base:rtc_base_approved",
      "../test:fileutils",
      "../test:test_support",
      "task_queue:task_queue_default_factory_unittests",
      "units:units_unittests",
      "video:video_unittests",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_source_set("compile_all_headers") {
    testonly = true

    sources = [
      "test/compile_all_headers.cc",
    ]

    deps = [
      ":fake_frame_decryptor",
      ":fake_frame_encryptor",
      ":fake_media_transport",
      ":loopback_media_transport",
      ":mock_audio_mixer",
      ":mock_frame_decryptor",
      ":mock_frame_encryptor",
      ":mock_peerconnectioninterface",
      ":mock_rtp",
      ":mock_video_bitrate_allocator",
      ":mock_video_bitrate_allocator_factory",
      ":mock_video_codec_factory",
      ":mock_video_decoder",
      ":mock_video_encoder",
      ":rtc_api_unittests",
      "units:units_unittests",
    ]
  }
}
