# 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.

if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
  import("../../webrtc.gni")

  group("android") {
    if (!build_with_chromium && is_android) {
      public_deps = [
        ":libjingle_peerconnection_jni",
        ":libjingle_peerconnection_so",
        ":libwebrtc",
        ":native_api",
      ]
    }
  }

  #####################
  # Aggregate targets #
  #####################

  dist_jar("libwebrtc") {
    _target_dir_name = get_label_info(":$target_name", "dir")
    output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar"
    direct_deps_only = true
    use_unprocessed_jars = true
    requires_android = true
    no_build_hooks = true

    deps = [
      ":audio_api_java",
      ":base_java",
      ":builtin_audio_codecs_java",
      ":camera_java",
      ":default_video_codec_factory_java",
      ":filevideo_java",
      ":hwcodecs_java",
      ":java_audio_device_module_java",
      ":libjingle_peerconnection_java",
      ":libjingle_peerconnection_metrics_default_java",
      ":libvpx_vp8_java",
      ":libvpx_vp9_java",
      ":logging_java",
      ":peerconnection_java",
      ":screencapturer_java",
      ":surfaceviewrenderer_java",
      ":swcodecs_java",
      ":video_api_java",
      ":video_java",
      "../../modules/audio_device:audio_device_java",
      "../../rtc_base:base_java",
    ]
  }

  # The native API is currently experimental and may change without notice.
  group("native_api") {
    deps = [
      ":native_api_audio_device_module",
      ":native_api_base",
      ":native_api_codecs",
      ":native_api_jni",
      ":native_api_peerconnection",
      ":native_api_stacktrace",
      ":native_api_video",
    ]
  }

  # Old target that pulls in everything. This will be going away in the future,
  # clients should depend on individual video_java etc. targets instead.
  rtc_android_library("libjingle_peerconnection_java") {
    sources = [ "src/java/org/webrtc/Empty.java" ]

    deps = [
      ":audio_api_java",
      ":base_java",
      ":camera_java",
      ":filevideo_java",
      ":hwcodecs_java",
      ":java_audio_device_module_java",
      ":peerconnection_java",
      ":screencapturer_java",
      ":surfaceviewrenderer_java",
      ":video_api_java",
      ":video_java",
      "//modules/audio_device:audio_device_java",
      "//rtc_base:base_java",
    ]
  }

  rtc_android_library("libjingle_peerconnection_metrics_default_java") {
    sources = [ "api/org/webrtc/Metrics.java" ]

    deps = [
      ":base_java",
      ":libjingle_peerconnection_java",
      "../../rtc_base:base_java",
    ]
  }

  rtc_library("libjingle_peerconnection_jni") {
    visibility = [ "*" ]
    allow_poison = [
      "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
      "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
    ]
    public_deps = [  # no-presubmit-check TODO(webrtc:8603)
      ":audio_jni",
      ":base_jni",
      ":builtin_audio_codecs_jni",
      ":default_video_codec_factory_jni",
      ":java_audio_device_module_jni",
      ":legacy_hwcodecs_jni",
      ":peerconnection_jni",
      ":video_jni",
      "../../api:create_peerconnection_factory",
    ]
  }

  rtc_library("libjingle_peerconnection_metrics_default_jni") {
    visibility = [ "*" ]
    sources = [ "src/jni/android_metrics.cc" ]
    deps = [
      ":base_jni",
      ":generated_metrics_jni",
      ":native_api_jni",
      ":peerconnection_jni",
      "../../pc:peerconnection",
      "../../system_wrappers:metrics",
    ]
  }

  rtc_shared_library("libjingle_peerconnection_so") {
    sources = [ "src/jni/jni_onload.cc" ]

    suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
    configs += [ "//build/config/android:hide_all_but_jni" ]

    deps = [
      ":libjingle_peerconnection_jni",
      ":libjingle_peerconnection_metrics_default_jni",
      "../../pc:libjingle_peerconnection",
      "../../rtc_base",
    ]
    output_extension = "so"
  }

  #######################
  # Public Java modules #
  #######################

  # Core targets.

  # TODO(sakal): Extract files from this target to releveant subtargets, video, audio etc.
  rtc_android_library("base_java") {
    sources = [
      "api/org/webrtc/Predicate.java",
      "api/org/webrtc/RefCounted.java",
      "src/java/org/webrtc/CalledByNative.java",
      "src/java/org/webrtc/CalledByNativeUnchecked.java",
      "src/java/org/webrtc/Histogram.java",
      "src/java/org/webrtc/JniCommon.java",
      "src/java/org/webrtc/JniHelper.java",
      "src/java/org/webrtc/RefCountDelegate.java",
      "src/java/org/webrtc/WebRtcClassLoader.java",
    ]

    deps = [
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("audio_api_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/AudioDecoderFactoryFactory.java",
      "api/org/webrtc/AudioEncoderFactoryFactory.java",
      "api/org/webrtc/audio/AudioDeviceModule.java",
    ]

    deps = [
      ":base_java",
      "//rtc_base:base_java",
    ]
  }

  rtc_android_library("video_api_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/CapturerObserver.java",
      "api/org/webrtc/EncodedImage.java",
      "api/org/webrtc/VideoCodecInfo.java",
      "api/org/webrtc/VideoCodecStatus.java",
      "api/org/webrtc/VideoDecoder.java",
      "api/org/webrtc/VideoDecoderFactory.java",
      "api/org/webrtc/VideoEncoder.java",
      "api/org/webrtc/VideoEncoderFactory.java",
      "api/org/webrtc/VideoFrame.java",
      "api/org/webrtc/VideoSink.java",
    ]

    deps = [
      ":base_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("video_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/EglBase.java",
      "api/org/webrtc/EglBase10.java",
      "api/org/webrtc/EglBase14.java",
      "api/org/webrtc/EglRenderer.java",
      "api/org/webrtc/GlRectDrawer.java",
      "api/org/webrtc/GlShader.java",
      "api/org/webrtc/GlTextureFrameBuffer.java",
      "api/org/webrtc/GlUtil.java",
      "api/org/webrtc/JavaI420Buffer.java",
      "api/org/webrtc/RendererCommon.java",
      "api/org/webrtc/SurfaceTextureHelper.java",
      "api/org/webrtc/TextureBufferImpl.java",
      "api/org/webrtc/TimestampAligner.java",
      "api/org/webrtc/VideoCapturer.java",
      "api/org/webrtc/VideoDecoderFallback.java",
      "api/org/webrtc/VideoEncoderFallback.java",
      "api/org/webrtc/VideoFrameDrawer.java",
      "api/org/webrtc/WrappedNativeVideoDecoder.java",
      "api/org/webrtc/WrappedNativeVideoEncoder.java",
      "api/org/webrtc/YuvConverter.java",
      "api/org/webrtc/YuvHelper.java",
      "src/java/org/webrtc/EglBase10Impl.java",
      "src/java/org/webrtc/EglBase14Impl.java",
      "src/java/org/webrtc/GlGenericDrawer.java",
      "src/java/org/webrtc/H264Utils.java",
      "src/java/org/webrtc/NV21Buffer.java",
      "src/java/org/webrtc/VideoDecoderWrapper.java",
      "src/java/org/webrtc/VideoEncoderWrapper.java",
      "src/java/org/webrtc/WrappedNativeI420Buffer.java",
    ]

    deps = [
      ":base_java",
      ":video_api_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("peerconnection_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/AudioProcessingFactory.java",
      "api/org/webrtc/AudioSource.java",
      "api/org/webrtc/AudioTrack.java",
      "api/org/webrtc/CallSessionFileRotatingLogSink.java",
      "api/org/webrtc/CandidatePairChangeEvent.java",
      "api/org/webrtc/CryptoOptions.java",
      "api/org/webrtc/DataChannel.java",
      "api/org/webrtc/DtmfSender.java",
      "api/org/webrtc/FecControllerFactoryFactoryInterface.java",
      "api/org/webrtc/FrameDecryptor.java",
      "api/org/webrtc/FrameEncryptor.java",
      "api/org/webrtc/IceCandidate.java",
      "api/org/webrtc/MediaCodecVideoDecoder.java",
      "api/org/webrtc/MediaCodecVideoEncoder.java",
      "api/org/webrtc/MediaConstraints.java",
      "api/org/webrtc/MediaSource.java",
      "api/org/webrtc/MediaStream.java",
      "api/org/webrtc/MediaStreamTrack.java",
      "api/org/webrtc/MediaTransportFactoryFactory.java",
      "api/org/webrtc/NativeLibraryLoader.java",
      "api/org/webrtc/NativePeerConnectionFactory.java",
      "api/org/webrtc/NetEqFactoryFactory.java",
      "api/org/webrtc/NetworkControllerFactoryFactory.java",
      "api/org/webrtc/NetworkMonitor.java",  # TODO(sakal): Break dependencies
                                             # and move to base_java.
      "api/org/webrtc/NetworkMonitorAutoDetect.java",  # TODO(sakal): Break
                                                       # dependencies and move
                                                       # to base_java.
      "api/org/webrtc/NetworkStatePredictorFactoryFactory.java",
      "api/org/webrtc/PeerConnection.java",
      "api/org/webrtc/PeerConnectionDependencies.java",
      "api/org/webrtc/PeerConnectionFactory.java",
      "api/org/webrtc/RTCStats.java",
      "api/org/webrtc/RTCStatsCollectorCallback.java",
      "api/org/webrtc/RTCStatsReport.java",
      "api/org/webrtc/RtcCertificatePem.java",
      "api/org/webrtc/RtpParameters.java",
      "api/org/webrtc/RtpReceiver.java",
      "api/org/webrtc/RtpSender.java",
      "api/org/webrtc/RtpTransceiver.java",
      "api/org/webrtc/SSLCertificateVerifier.java",
      "api/org/webrtc/SdpObserver.java",
      "api/org/webrtc/SessionDescription.java",
      "api/org/webrtc/StatsObserver.java",
      "api/org/webrtc/StatsReport.java",
      "api/org/webrtc/TurnCustomizer.java",
      "api/org/webrtc/VideoProcessor.java",
      "api/org/webrtc/VideoSource.java",
      "api/org/webrtc/VideoTrack.java",
      "src/java/org/webrtc/NativeAndroidVideoTrackSource.java",
      "src/java/org/webrtc/NativeCapturerObserver.java",
      "src/java/org/webrtc/NativeLibrary.java",
    ]

    deps = [
      ":audio_api_java",
      ":base_java",
      ":builtin_audio_codecs_java",
      ":default_video_codec_factory_java",

      #TODO(bugs.webrtc.org/7452): Make injection mandatory and remove this dep.
      ":java_audio_device_module_java",
      ":logging_java",
      ":swcodecs_java",
      ":video_api_java",
      ":video_java",
      "//modules/audio_device:audio_device_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  # Modules, in alphabetical order.

  rtc_android_library("camera_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/Camera1Capturer.java",
      "api/org/webrtc/Camera1Enumerator.java",
      "api/org/webrtc/Camera2Capturer.java",
      "api/org/webrtc/Camera2Enumerator.java",
      "api/org/webrtc/CameraEnumerationAndroid.java",
      "api/org/webrtc/CameraEnumerator.java",
      "api/org/webrtc/CameraVideoCapturer.java",
      "src/java/org/webrtc/Camera1Session.java",
      "src/java/org/webrtc/Camera2Session.java",
      "src/java/org/webrtc/CameraCapturer.java",
      "src/java/org/webrtc/CameraSession.java",
    ]

    deps = [
      ":base_java",
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("default_video_codec_factory_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/DefaultVideoDecoderFactory.java",
      "api/org/webrtc/DefaultVideoEncoderFactory.java",
    ]

    deps = [
      ":hwcodecs_java",
      ":swcodecs_java",
      ":video_api_java",
      ":video_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("filevideo_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/FileVideoCapturer.java",
      "api/org/webrtc/VideoFileRenderer.java",
    ]

    deps = [
      ":base_java",
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
    ]
  }

  rtc_android_library("hwcodecs_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/HardwareVideoDecoderFactory.java",
      "api/org/webrtc/HardwareVideoEncoderFactory.java",
      "api/org/webrtc/PlatformSoftwareVideoDecoderFactory.java",
      "src/java/org/webrtc/AndroidVideoDecoder.java",
      "src/java/org/webrtc/BaseBitrateAdjuster.java",
      "src/java/org/webrtc/BitrateAdjuster.java",
      "src/java/org/webrtc/DynamicBitrateAdjuster.java",
      "src/java/org/webrtc/FramerateBitrateAdjuster.java",
      "src/java/org/webrtc/HardwareVideoEncoder.java",
      "src/java/org/webrtc/MediaCodecUtils.java",
      "src/java/org/webrtc/MediaCodecVideoDecoderFactory.java",
      "src/java/org/webrtc/MediaCodecWrapper.java",
      "src/java/org/webrtc/MediaCodecWrapperFactory.java",
      "src/java/org/webrtc/MediaCodecWrapperFactoryImpl.java",
      "src/java/org/webrtc/NV12Buffer.java",
      "src/java/org/webrtc/VideoCodecType.java",
    ]

    deps = [
      ":base_java",
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("java_audio_device_module_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/audio/JavaAudioDeviceModule.java",
      "src/java/org/webrtc/audio/VolumeLogger.java",
      "src/java/org/webrtc/audio/WebRtcAudioEffects.java",
      "src/java/org/webrtc/audio/WebRtcAudioManager.java",
      "src/java/org/webrtc/audio/WebRtcAudioRecord.java",
      "src/java/org/webrtc/audio/WebRtcAudioTrack.java",
      "src/java/org/webrtc/audio/WebRtcAudioUtils.java",
    ]

    deps = [
      ":audio_api_java",
      ":base_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("builtin_audio_codecs_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/BuiltinAudioDecoderFactoryFactory.java",
      "api/org/webrtc/BuiltinAudioEncoderFactoryFactory.java",
    ]

    deps = [ ":audio_api_java" ]
  }

  rtc_android_library("screencapturer_java") {
    visibility = [ "*" ]
    sources = [ "api/org/webrtc/ScreenCapturerAndroid.java" ]

    deps = [
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }

  rtc_android_library("surfaceviewrenderer_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/SurfaceEglRenderer.java",
      "api/org/webrtc/SurfaceViewRenderer.java",
    ]

    deps = [
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
    ]
  }

  rtc_android_library("libvpx_vp8_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/LibvpxVp8Decoder.java",
      "api/org/webrtc/LibvpxVp8Encoder.java",
    ]
    deps = [
      ":base_java",
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
    ]
  }

  rtc_android_library("libvpx_vp9_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/LibvpxVp9Decoder.java",
      "api/org/webrtc/LibvpxVp9Encoder.java",
    ]
    deps = [
      ":base_java",
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
    ]
  }

  rtc_android_library("swcodecs_java") {
    visibility = [ "*" ]
    sources = [
      "api/org/webrtc/SoftwareVideoDecoderFactory.java",
      "api/org/webrtc/SoftwareVideoEncoderFactory.java",
    ]

    deps = [
      ":base_java",
      ":libvpx_vp8_java",
      ":libvpx_vp9_java",
      ":video_api_java",
      ":video_java",
      "//rtc_base:base_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
    ]
  }
}

if (current_os == "linux" || is_android) {
  ################################
  # JNI targets for Java modules #
  ################################

  # Mirrors the order of targets in the section above.

  rtc_library("base_jni") {
    visibility = [ "*" ]
    sources = [
      "src/jni/android_histogram.cc",
      "src/jni/android_network_monitor.cc",
      "src/jni/android_network_monitor.h",
      "src/jni/class_loader.h",
      "src/jni/class_reference_holder.h",
      "src/jni/jni_common.cc",
      "src/jni/jni_helpers.cc",
      "src/jni/jni_helpers.h",
      "src/jni/pc/audio.h",
      "src/jni/pc/logging.cc",
      "src/jni/pc/video.h",
      "src/jni/scoped_java_ref_counted.cc",
      "src/jni/scoped_java_ref_counted.h",
    ]

    deps = [
      ":generated_base_jni",
      ":internal_jni",
      ":native_api_jni",
      "../../api:libjingle_peerconnection_api",
      "../../api:scoped_refptr",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers:field_trial",
      "../../system_wrappers:metrics",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("audio_jni") {
    visibility = [ "*" ]
    allow_poison = [ "audio_codecs" ]
    sources = [ "src/jni/pc/audio.cc" ]

    deps = [
      ":base_jni",
      ":builtin_audio_codecs_jni",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/audio_codecs:builtin_audio_encoder_factory",
      "../../modules/audio_processing",
      "../../modules/audio_processing:api",
      "../../rtc_base:rtc_base_approved",
    ]
  }

  rtc_library("builtin_audio_codecs_jni") {
    visibility = [ "*" ]
    allow_poison = [ "audio_codecs" ]
    sources = [
      "src/jni/builtin_audio_decoder_factory_factory.cc",
      "src/jni/builtin_audio_encoder_factory_factory.cc",
    ]

    deps = [
      ":base_jni",
      ":generated_builtin_audio_codecs_jni",
      ":native_api_jni",
      "../../api/audio_codecs:builtin_audio_decoder_factory",
      "../../api/audio_codecs:builtin_audio_encoder_factory",
      "../../rtc_base:rtc_base_approved",
    ]
  }

  # Corresponds to MediaCodecVideoEncoder/Decoder in Java.
  rtc_library("legacy_hwcodecs_jni") {
    visibility = [ "*" ]
    allow_poison = [ "software_video_codecs" ]
    sources = [
      "src/jni/android_media_codec_common.h",
      "src/jni/android_media_decoder.cc",
      "src/jni/android_media_encoder.cc",
    ]
    deps = [
      ":base_jni",
      ":default_video_codec_factory_jni",
      ":generated_video_jni",
      ":native_api_jni",
      ":video_jni",
      ":videoframe_jni",
      "../../api:scoped_refptr",
      "../../api/task_queue",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_media_base",
      "../../modules/video_coding:video_codec_interface",
      "../../modules/video_coding:video_coding_utility",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base:weak_ptr",
      "../../rtc_base/synchronization:sequence_checker",
      "../../system_wrappers:field_trial",
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/libyuv",
    ]
  }

  rtc_library("video_jni") {
    visibility = [ "*" ]
    sources = [
      "src/jni/android_video_track_source.cc",
      "src/jni/android_video_track_source.h",
      "src/jni/encoded_image.cc",
      "src/jni/encoded_image.h",
      "src/jni/h264_utils.cc",
      "src/jni/java_i420_buffer.cc",
      "src/jni/jni_generator_helper.h",
      "src/jni/native_capturer_observer.cc",
      "src/jni/native_capturer_observer.h",
      "src/jni/nv12_buffer.cc",
      "src/jni/nv21_buffer.cc",
      "src/jni/pc/video.cc",
      "src/jni/timestamp_aligner.cc",
      "src/jni/video_codec_info.cc",
      "src/jni/video_codec_info.h",
      "src/jni/video_codec_status.cc",
      "src/jni/video_codec_status.h",
      "src/jni/video_decoder_factory_wrapper.cc",
      "src/jni/video_decoder_factory_wrapper.h",
      "src/jni/video_decoder_fallback.cc",
      "src/jni/video_decoder_wrapper.cc",
      "src/jni/video_decoder_wrapper.h",
      "src/jni/video_encoder_factory_wrapper.cc",
      "src/jni/video_encoder_factory_wrapper.h",
      "src/jni/video_encoder_fallback.cc",
      "src/jni/video_encoder_wrapper.cc",
      "src/jni/video_encoder_wrapper.h",
      "src/jni/video_sink.cc",
      "src/jni/video_sink.h",
      "src/jni/video_track.cc",
      "src/jni/yuv_helper.cc",
    ]

    deps = [
      ":base_jni",
      ":generated_video_jni",
      ":native_api_jni",
      ":videoframe_jni",
      "../../api:libjingle_peerconnection_api",
      "../../api:media_stream_interface",
      "../../api/task_queue",
      "../../api/video:encoded_image",
      "../../api/video:video_frame",
      "../../api/video:video_frame_type",
      "../../api/video:video_rtp_headers",
      "../../api/video_codecs:rtc_software_fallback_wrappers",
      "../../api/video_codecs:video_codecs_api",
      "../../common_video",
      "../../media:rtc_media_base",
      "../../modules/video_coding:codec_globals_headers",
      "../../modules/video_coding:video_codec_interface",
      "../../modules/video_coding:video_coding_utility",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base/task_utils:to_queued_task",
      "//third_party/abseil-cpp/absl/types:optional",
      "//third_party/libyuv",
    ]
  }

  rtc_library("peerconnection_jni") {
    # Do not depend on this target externally unless you absolute have to. It is
    # made public because we don't have a proper NDK yet. Header APIs here are not
    # considered public and are subject to change.
    visibility = [ "*" ]

    sources = [
      "src/jni/pc/android_network_monitor.h",
      "src/jni/pc/audio_track.cc",
      "src/jni/pc/call_session_file_rotating_log_sink.cc",
      "src/jni/pc/crypto_options.cc",
      "src/jni/pc/crypto_options.h",
      "src/jni/pc/data_channel.cc",
      "src/jni/pc/data_channel.h",
      "src/jni/pc/dtmf_sender.cc",
      "src/jni/pc/ice_candidate.cc",
      "src/jni/pc/ice_candidate.h",
      "src/jni/pc/media_constraints.cc",
      "src/jni/pc/media_constraints.h",
      "src/jni/pc/media_source.cc",
      "src/jni/pc/media_stream.cc",
      "src/jni/pc/media_stream.h",
      "src/jni/pc/media_stream_track.cc",
      "src/jni/pc/media_stream_track.h",
      "src/jni/pc/owned_factory_and_threads.cc",
      "src/jni/pc/owned_factory_and_threads.h",
      "src/jni/pc/peer_connection.cc",
      "src/jni/pc/peer_connection.h",
      "src/jni/pc/peer_connection_factory.cc",
      "src/jni/pc/peer_connection_factory.h",
      "src/jni/pc/rtc_certificate.cc",
      "src/jni/pc/rtc_certificate.h",
      "src/jni/pc/rtc_stats_collector_callback_wrapper.cc",
      "src/jni/pc/rtc_stats_collector_callback_wrapper.h",
      "src/jni/pc/rtp_parameters.cc",
      "src/jni/pc/rtp_parameters.h",
      "src/jni/pc/rtp_receiver.cc",
      "src/jni/pc/rtp_receiver.h",
      "src/jni/pc/rtp_sender.cc",
      "src/jni/pc/rtp_sender.h",
      "src/jni/pc/rtp_transceiver.cc",
      "src/jni/pc/rtp_transceiver.h",
      "src/jni/pc/sdp_observer.cc",
      "src/jni/pc/sdp_observer.h",
      "src/jni/pc/session_description.cc",
      "src/jni/pc/session_description.h",
      "src/jni/pc/ssl_certificate_verifier_wrapper.cc",
      "src/jni/pc/ssl_certificate_verifier_wrapper.h",
      "src/jni/pc/stats_observer.cc",
      "src/jni/pc/stats_observer.h",
      "src/jni/pc/turn_customizer.cc",
      "src/jni/pc/turn_customizer.h",
    ]

    deps = [
      ":base_jni",
      ":generated_external_classes_jni",
      ":generated_peerconnection_jni",
      ":logging_jni",
      ":native_api_jni",
      ":native_api_stacktrace",
      "..:media_constraints",
      "../../api:callfactory_api",
      "../../api:libjingle_peerconnection_api",
      "../../api:media_stream_interface",
      "../../api:rtc_event_log_output_file",
      "../../api:rtp_parameters",
      "../../api/crypto:options",
      "../../api/rtc_event_log:rtc_event_log_factory",
      "../../api/task_queue:default_task_queue_factory",
      "../../api/video_codecs:video_codecs_api",
      "../../call:call_interfaces",
      "../../media:rtc_audio_video",
      "../../media:rtc_data",
      "../../media:rtc_media_base",
      "../../modules/audio_device",
      "../../modules/audio_processing:api",
      "../../modules/utility",
      "../../pc:peerconnection",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../rtc_base:rtc_task_queue",
      "../../rtc_base/system:thread_registry",
      "../../system_wrappers:field_trial",
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  # JNI target for java_audio_device_module_java
  rtc_library("java_audio_device_module_jni") {
    visibility = [ "*" ]
    sources = [ "src/jni/audio_device/java_audio_device_module.cc" ]

    deps = [
      ":base_jni",
      ":generated_java_audio_jni",
      ":java_audio_device_module",
    ]
  }

  rtc_library("default_video_codec_factory_jni") {
    visibility = [ "*" ]
    allow_poison = [ "software_video_codecs" ]
    deps = [
      ":swcodecs_jni",
      ":video_jni",
    ]
  }

  rtc_library("libvpx_vp8_jni") {
    visibility = [ "*" ]
    allow_poison = [ "software_video_codecs" ]
    sources = [ "src/jni/vp8_codec.cc" ]
    deps = [
      ":base_jni",
      ":generated_libvpx_vp8_jni",
      ":video_jni",
      "../../modules/video_coding:webrtc_vp8",
    ]
  }

  rtc_library("libvpx_vp9_jni") {
    visibility = [ "*" ]
    allow_poison = [ "software_video_codecs" ]
    sources = [ "src/jni/vp9_codec.cc" ]
    deps = [
      ":base_jni",
      ":generated_libvpx_vp9_jni",
      ":video_jni",
      "../../modules/video_coding:webrtc_vp9",
    ]
  }

  rtc_library("swcodecs_jni") {
    visibility = [ "*" ]
    allow_poison = [ "software_video_codecs" ]
    deps = [
      ":libvpx_vp8_jni",
      ":libvpx_vp9_jni",
    ]
  }

  ######################
  # Native API targets #
  ######################

  # Core targets.

  # JNI helpers that are also needed from internal JNI code. Cannot depend on any
  # other JNI targets than internal_jni.
  rtc_library("native_api_jni") {
    visibility = [ "*" ]
    sources = [
      "native_api/jni/class_loader.cc",
      "native_api/jni/java_types.cc",
      "native_api/jni/jvm.cc",
      "src/jni/jni_generator_helper.cc",
      "src/jni/jni_generator_helper.h",
    ]

    public = [
      "native_api/jni/class_loader.h",
      "native_api/jni/java_types.h",
      "native_api/jni/jni_int_wrapper.h",
      "native_api/jni/jvm.h",
      "native_api/jni/scoped_java_ref.h",
    ]

    deps = [
      ":generated_external_classes_jni",
      ":generated_native_api_jni",
      ":internal_jni",
      "//api:array_view",
      "//rtc_base:checks",
      "//rtc_base:rtc_base_approved",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("native_api_base") {
    visibility = [ "*" ]
    sources = [
      "native_api/base/init.cc",
      "native_api/base/init.h",
      "native_api/base/network_monitor.cc",
      "native_api/base/network_monitor.h",
    ]

    deps = [
      ":base_jni",
      ":native_api_jni",
      "//rtc_base",
      "//rtc_base:checks",
    ]
  }

  # Modules, in alphabetical order.

  rtc_library("native_api_audio_device_module") {
    visibility = [ "*" ]

    sources = [
      "native_api/audio_device_module/audio_device_android.cc",
      "native_api/audio_device_module/audio_device_android.h",
    ]

    deps = [
      ":base_jni",
      ":java_audio_device_module",
      ":opensles_audio_device_module",
      "../../api:scoped_refptr",
      "../../modules/audio_device",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers",
      "../../system_wrappers:metrics",
    ]
    if (rtc_enable_android_aaudio) {
      deps += [ ":aaudio_audio_device_module" ]
    }
  }

  # API for wrapping Java VideoDecoderFactory/VideoEncoderFactory classes to C++
  # objects.
  rtc_library("native_api_codecs") {
    visibility = [ "*" ]
    allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
    sources = [
      "native_api/codecs/wrapper.cc",
      "native_api/codecs/wrapper.h",
    ]

    deps = [
      ":base_jni",
      ":native_api_jni",
      ":video_jni",
      "//api/video_codecs:video_codecs_api",
      "//rtc_base:checks",
      "//rtc_base:rtc_base_approved",
    ]
  }

  # API for creating Java PeerConnectionFactory from C++ equivalents.
  rtc_library("native_api_peerconnection") {
    visibility = [ "*" ]
    sources = [
      "native_api/peerconnection/peer_connection_factory.cc",
      "native_api/peerconnection/peer_connection_factory.h",
    ]
    deps = [
      ":base_jni",
      ":peerconnection_jni",
      "//api:libjingle_peerconnection_api",
      "//api/video_codecs:video_codecs_api",
      "//rtc_base",
    ]
  }

  # API for capturing and printing native stacktraces.
  rtc_library("native_api_stacktrace") {
    visibility = [ "*" ]
    sources = [
      "native_api/stacktrace/stacktrace.cc",
      "native_api/stacktrace/stacktrace.h",
    ]

    deps = [
      "../../rtc_base:criticalsection",
      "../../rtc_base:logging",
      "../../rtc_base:stringutils",
      "//third_party/abseil-cpp/absl/base:core_headers",
    ]
  }

  # API for creating C++ wrapper implementations of api/mediastreaminterface.h
  # video interfaces from their Java equivalents.
  rtc_library("native_api_video") {
    visibility = [ "*" ]
    allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
    sources = [
      "native_api/video/video_source.cc",
      "native_api/video/video_source.h",
      "native_api/video/wrapper.cc",
      "native_api/video/wrapper.h",
    ]
    deps = [
      ":native_api_jni",
      ":video_jni",
      ":videoframe_jni",
      "//api:libjingle_peerconnection_api",
      "//api:media_stream_interface",
      "//api/video:video_frame",
      "//api/video:video_rtp_headers",
      "//rtc_base",
      "//rtc_base:rtc_base_approved",
    ]
  }

  ####################
  # Internal targets #
  ####################

  rtc_android_library("logging_java") {
    sources = [ "src/java/org/webrtc/JNILogging.java" ]

    deps = [
      ":base_java",
      "//rtc_base:base_java",
    ]
  }

  # Internal code that is needed by native_api_jni. The code cannot be placed in
  # base_jni because native_api_jni depends on the code (and base_jni depends on
  # native_api_jni).
  rtc_library("internal_jni") {
    sources = [
      "src/jni/jvm.cc",
      "src/jni/jvm.h",
    ]

    deps = [ "../../rtc_base:checks" ]
  }

  rtc_library("videoframe_jni") {
    sources = [
      "src/jni/video_frame.cc",
      "src/jni/video_frame.h",
      "src/jni/wrapped_native_i420_buffer.cc",
      "src/jni/wrapped_native_i420_buffer.h",
    ]

    deps = [
      ":base_jni",
      ":generated_video_jni",
      ":native_api_jni",
      "../../api:scoped_refptr",
      "../../api/video:video_frame",
      "../../api/video:video_rtp_headers",
      "../../common_video",
      "../../rtc_base",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
    ]
  }

  rtc_library("logging_jni") {
    visibility = [ "*" ]
    sources = [
      "src/jni/logging/log_sink.cc",
      "src/jni/logging/log_sink.h",
    ]

    deps = [
      ":base_jni",
      ":generated_logging_jni",
      ":native_api_jni",
      "../../rtc_base",
    ]
  }

  rtc_library("audio_device_module_base") {
    visibility = [ "*" ]

    sources = [
      "src/jni/audio_device/audio_common.h",
      "src/jni/audio_device/audio_device_module.cc",
      "src/jni/audio_device/audio_device_module.h",
    ]

    deps = [
      ":base_jni",
      ":generated_audio_device_module_base_jni",
      ":native_api_jni",
      "../../api/task_queue",
      "../../api/task_queue:default_task_queue_factory",
      "../../modules/audio_device:audio_device_api",
      "../../modules/audio_device:audio_device_buffer",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers:metrics",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("java_audio_device_module") {
    visibility = [ "*" ]

    sources = [
      "src/jni/audio_device/audio_record_jni.cc",
      "src/jni/audio_device/audio_record_jni.h",
      "src/jni/audio_device/audio_track_jni.cc",
      "src/jni/audio_device/audio_track_jni.h",
    ]
    deps = [
      ":audio_device_module_base",
      ":base_jni",
      ":generated_java_audio_device_module_native_jni",
      "../../modules/audio_device",
      "../../modules/audio_device:audio_device_buffer",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers:field_trial",
      "../../system_wrappers:metrics",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  if (rtc_enable_android_aaudio) {
    rtc_library("aaudio_audio_device_module") {
      visibility = [ "*" ]
      defines = [ "WEBRTC_AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO" ]
      sources = [
        "src/jni/audio_device/aaudio_player.cc",
        "src/jni/audio_device/aaudio_player.h",
        "src/jni/audio_device/aaudio_recorder.cc",
        "src/jni/audio_device/aaudio_recorder.h",
        "src/jni/audio_device/aaudio_wrapper.cc",
        "src/jni/audio_device/aaudio_wrapper.h",
      ]
      libs = [ "aaudio" ]
      deps = [
        ":audio_device_module_base",
        ":base_jni",
        "../../api:array_view",
        "../../modules/audio_device",
        "../../modules/audio_device:audio_device_buffer",
        "../../rtc_base",
        "../../rtc_base:checks",
        "../../rtc_base:rtc_base_approved",
        "../../system_wrappers",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }
  }

  rtc_library("opensles_audio_device_module") {
    visibility = [ "*" ]
    sources = [
      "src/jni/audio_device/opensles_common.cc",
      "src/jni/audio_device/opensles_common.h",
      "src/jni/audio_device/opensles_player.cc",
      "src/jni/audio_device/opensles_player.h",
      "src/jni/audio_device/opensles_recorder.cc",
      "src/jni/audio_device/opensles_recorder.h",
    ]
    libs = [ "OpenSLES" ]
    deps = [
      ":audio_device_module_base",
      ":base_jni",
      "../../api:array_view",
      "../../api:refcountedbase",
      "../../api:scoped_refptr",
      "../../modules/audio_device",
      "../../modules/audio_device:audio_device_buffer",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base_approved",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  #########################
  # Generated JNI targets #
  #########################

  generate_jar_jni("generated_external_classes_jni") {
    classes = [
      "java/lang/Integer.class",
      "java/lang/Double.class",
      "java/lang/Long.class",
      "java/lang/Iterable.class",
      "java/util/Iterator.class",
      "java/lang/Boolean.class",
      "java/math/BigInteger.class",
      "java/util/Map.class",
      "java/util/LinkedHashMap.class",
      "java/util/ArrayList.class",
      "java/lang/Enum.class",
    ]
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_metrics_jni") {
    sources = [ "api/org/webrtc/Metrics.java" ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  # Generated JNI for public JNI targets, matching order of targets

  generate_jni("generated_base_jni") {
    sources = [
      "api/org/webrtc/NetworkMonitor.java",
      "api/org/webrtc/NetworkMonitorAutoDetect.java",
      "api/org/webrtc/RefCounted.java",
      "src/java/org/webrtc/Histogram.java",
      "src/java/org/webrtc/JniCommon.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_video_jni") {
    sources = [
      "api/org/webrtc/EncodedImage.java",
      "api/org/webrtc/JavaI420Buffer.java",
      "api/org/webrtc/MediaCodecVideoDecoder.java",
      "api/org/webrtc/MediaCodecVideoEncoder.java",
      "api/org/webrtc/TimestampAligner.java",
      "api/org/webrtc/VideoCodecInfo.java",
      "api/org/webrtc/VideoCodecStatus.java",
      "api/org/webrtc/VideoDecoder.java",
      "api/org/webrtc/VideoDecoderFactory.java",
      "api/org/webrtc/VideoDecoderFallback.java",
      "api/org/webrtc/VideoEncoder.java",
      "api/org/webrtc/VideoEncoderFactory.java",
      "api/org/webrtc/VideoEncoderFallback.java",
      "api/org/webrtc/VideoFrame.java",
      "api/org/webrtc/VideoSink.java",
      "api/org/webrtc/VideoTrack.java",
      "api/org/webrtc/YuvHelper.java",
      "src/java/org/webrtc/H264Utils.java",
      "src/java/org/webrtc/NV12Buffer.java",
      "src/java/org/webrtc/NV21Buffer.java",
      "src/java/org/webrtc/NativeAndroidVideoTrackSource.java",
      "src/java/org/webrtc/NativeCapturerObserver.java",
      "src/java/org/webrtc/VideoDecoderWrapper.java",
      "src/java/org/webrtc/VideoEncoderWrapper.java",
      "src/java/org/webrtc/WrappedNativeI420Buffer.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_libvpx_vp8_jni") {
    sources = [
      "api/org/webrtc/LibvpxVp8Decoder.java",
      "api/org/webrtc/LibvpxVp8Encoder.java",
    ]

    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_libvpx_vp9_jni") {
    sources = [
      "api/org/webrtc/LibvpxVp9Decoder.java",
      "api/org/webrtc/LibvpxVp9Encoder.java",
    ]

    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_peerconnection_jni") {
    sources = [
      "api/org/webrtc/AudioTrack.java",
      "api/org/webrtc/CallSessionFileRotatingLogSink.java",
      "api/org/webrtc/CandidatePairChangeEvent.java",
      "api/org/webrtc/CryptoOptions.java",
      "api/org/webrtc/DataChannel.java",
      "api/org/webrtc/DtmfSender.java",
      "api/org/webrtc/IceCandidate.java",
      "api/org/webrtc/MediaConstraints.java",
      "api/org/webrtc/MediaSource.java",
      "api/org/webrtc/MediaStream.java",
      "api/org/webrtc/MediaStreamTrack.java",
      "api/org/webrtc/PeerConnection.java",
      "api/org/webrtc/PeerConnectionFactory.java",
      "api/org/webrtc/RTCStats.java",
      "api/org/webrtc/RTCStatsCollectorCallback.java",
      "api/org/webrtc/RTCStatsReport.java",
      "api/org/webrtc/RtcCertificatePem.java",
      "api/org/webrtc/RtpParameters.java",
      "api/org/webrtc/RtpReceiver.java",
      "api/org/webrtc/RtpSender.java",
      "api/org/webrtc/RtpTransceiver.java",
      "api/org/webrtc/SSLCertificateVerifier.java",
      "api/org/webrtc/SdpObserver.java",
      "api/org/webrtc/SessionDescription.java",
      "api/org/webrtc/StatsObserver.java",
      "api/org/webrtc/StatsReport.java",
      "api/org/webrtc/TurnCustomizer.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_java_audio_jni") {
    sources = [ "api/org/webrtc/audio/JavaAudioDeviceModule.java" ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_builtin_audio_codecs_jni") {
    sources = [
      "api/org/webrtc/BuiltinAudioDecoderFactoryFactory.java",
      "api/org/webrtc/BuiltinAudioEncoderFactoryFactory.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  # Generated JNI for native API targets

  generate_jni("generated_native_api_jni") {
    sources = [
      "src/java/org/webrtc/JniHelper.java",
      "src/java/org/webrtc/WebRtcClassLoader.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  # Generated JNI for internal targets.

  generate_jni("generated_logging_jni") {
    sources = [ "src/java/org/webrtc/JNILogging.java" ]
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_audio_device_module_base_jni") {
    sources = [ "src/java/org/webrtc/audio/WebRtcAudioManager.java" ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  generate_jni("generated_java_audio_device_module_native_jni") {
    sources = [
      "src/java/org/webrtc/audio/WebRtcAudioRecord.java",
      "src/java/org/webrtc/audio/WebRtcAudioTrack.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }
}

if (is_android) {
  ################
  # Test targets #
  ################

  if (rtc_include_tests) {
    rtc_instrumentation_test_apk("android_instrumentation_test_apk") {
      apk_name = "android_instrumentation_test_apk"
      android_manifest = "instrumentationtests/AndroidManifest.xml"
      min_sdk_version = 16
      target_sdk_version = 21

      sources = [
        "instrumentationtests/src/org/webrtc/AndroidVideoDecoderInstrumentationTest.java",
        "instrumentationtests/src/org/webrtc/BuiltinAudioCodecsFactoryFactoryTest.java",
        "instrumentationtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
        "instrumentationtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
        "instrumentationtests/src/org/webrtc/Camera2CapturerTest.java",
        "instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
        "instrumentationtests/src/org/webrtc/DefaultVideoEncoderFactoryTest.java",
        "instrumentationtests/src/org/webrtc/EglRendererTest.java",
        "instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java",
        "instrumentationtests/src/org/webrtc/GlRectDrawerTest.java",
        "instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java",
        "instrumentationtests/src/org/webrtc/LoggableTest.java",
        "instrumentationtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
        "instrumentationtests/src/org/webrtc/NetworkMonitorTest.java",
        "instrumentationtests/src/org/webrtc/PeerConnectionEndToEndTest.java",
        "instrumentationtests/src/org/webrtc/PeerConnectionFactoryTest.java",
        "instrumentationtests/src/org/webrtc/PeerConnectionTest.java",
        "instrumentationtests/src/org/webrtc/RendererCommonTest.java",
        "instrumentationtests/src/org/webrtc/RtcCertificatePemTest.java",
        "instrumentationtests/src/org/webrtc/RtpSenderTest.java",
        "instrumentationtests/src/org/webrtc/RtpTransceiverTest.java",
        "instrumentationtests/src/org/webrtc/SurfaceTextureHelperTest.java",
        "instrumentationtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
        "instrumentationtests/src/org/webrtc/TestConstants.java",
        "instrumentationtests/src/org/webrtc/TimestampAlignerTest.java",
        "instrumentationtests/src/org/webrtc/VideoFileRendererTest.java",
        "instrumentationtests/src/org/webrtc/VideoFrameBufferTest.java",
        "instrumentationtests/src/org/webrtc/VideoTrackTest.java",
        "instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java",
        "instrumentationtests/src/org/webrtc/YuvHelperTest.java",
      ]

      data = [ "../../sdk/android/instrumentationtests/src/org/webrtc/capturetestvideo.y4m" ]

      deps = [
        ":base_java",
        ":default_video_codec_factory_java",
        ":libjingle_peerconnection_java",
        ":libjingle_peerconnection_metrics_default_java",
        ":video_api_java",
        ":video_java",
        "//base:base_java_test_support",
        "//rtc_base:base_java",
        "//third_party/android_support_test_runner:rules_java",
        "//third_party/android_support_test_runner:runner_java",
        "//third_party/google-truth:google_truth_java",
        "//third_party/junit",
        "//third_party/mockito:mockito_java",
      ]

      shared_libraries = [
        "../../sdk/android:libjingle_peerconnection_instrumentationtests_so",
      ]
    }
  }

  rtc_shared_library("libjingle_peerconnection_instrumentationtests_so") {
    testonly = true
    sources = [ "src/jni/jni_onload.cc" ]

    suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
    configs += [ "//build/config/android:hide_all_but_jni" ]

    deps = [
      ":instrumentationtests_jni",
      ":libjingle_peerconnection_jni",
      ":libjingle_peerconnection_metrics_default_jni",
      "../../pc:libjingle_peerconnection",
      "../../rtc_base",
    ]
    output_extension = "so"
  }

  rtc_library("instrumentationtests_jni") {
    testonly = true
    sources = [ "instrumentationtests/loggable_test.cc" ]

    deps = [
      ":base_jni",
      ":native_api_jni",
      "../../rtc_base:rtc_base_approved",
    ]
  }

  rtc_library("native_unittests") {
    testonly = true

    sources = [
      "native_unittests/android_network_monitor_unittest.cc",
      "native_unittests/application_context_provider.cc",
      "native_unittests/application_context_provider.h",
      "native_unittests/audio_device/audio_device_unittest.cc",
      "native_unittests/codecs/wrapper_unittest.cc",
      "native_unittests/java_types_unittest.cc",
      "native_unittests/peerconnection/peer_connection_factory_unittest.cc",
      "native_unittests/stacktrace/stacktrace_unittest.cc",
      "native_unittests/test_jni_onload.cc",
      "native_unittests/video/video_source_unittest.cc",
    ]

    data = [
      "../../resources/audio_device/audio_short44.pcm",
      "../../resources/audio_device/audio_short48.pcm",
    ]

    deps = [
      ":audio_device_module_base",
      ":audio_jni",
      ":base_jni",
      ":generated_native_unittests_jni",
      ":native_api_audio_device_module",
      ":native_api_base",
      ":native_api_codecs",
      ":native_api_jni",
      ":native_api_peerconnection",
      ":native_api_stacktrace",
      ":native_api_video",
      ":opensles_audio_device_module",
      ":video_jni",
      "../../api:scoped_refptr",
      "../../api/rtc_event_log:rtc_event_log_factory",
      "../../api/task_queue:default_task_queue_factory",
      "../../api/video:video_frame",
      "../../api/video:video_rtp_headers",
      "../../media:rtc_audio_video",
      "../../media:rtc_internal_video_codecs",
      "../../media:rtc_media_base",
      "../../media:rtc_media_engine_defaults",
      "../../modules/audio_device",
      "../../modules/audio_device:mock_audio_device",
      "../../modules/audio_processing:api",
      "../../modules/utility",
      "../../pc:libjingle_peerconnection",
      "../../rtc_base:checks",
      "../../rtc_base:rtc_base",
      "../../rtc_base/system:inline",
      "../../system_wrappers",
      "../../system_wrappers:field_trial",
      "../../test:field_trial",
      "../../test:fileutils",
      "../../test:test_support",
      "../../testing/gtest",
      "//third_party/abseil-cpp/absl/memory",
    ]
  }

  rtc_android_library("native_unittests_java") {
    testonly = true

    sources = [
      "native_unittests/org/webrtc/ApplicationContextProvider.java",
      "native_unittests/org/webrtc/BuildInfo.java",
      "native_unittests/org/webrtc/CodecsWrapperTestHelper.java",
      "native_unittests/org/webrtc/FakeVideoEncoder.java",
      "native_unittests/org/webrtc/JavaTypesTestHelper.java",
      "native_unittests/org/webrtc/JavaVideoSourceTestHelper.java",
      "native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java",
    ]

    deps = [
      ":base_java",
      ":java_audio_device_module_java",
      ":peerconnection_java",
      ":video_api_java",
      ":video_java",
      "../../rtc_base:base_java",
      "//third_party/android_support_test_runner:runner_java",
    ]
  }

  generate_jni("generated_native_unittests_jni") {
    testonly = true

    sources = [
      "native_unittests/org/webrtc/ApplicationContextProvider.java",
      "native_unittests/org/webrtc/BuildInfo.java",
      "native_unittests/org/webrtc/CodecsWrapperTestHelper.java",
      "native_unittests/org/webrtc/JavaTypesTestHelper.java",
      "native_unittests/org/webrtc/JavaVideoSourceTestHelper.java",
      "native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java",
    ]
    namespace = "webrtc::jni"
    jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
  }

  junit_binary("android_sdk_junit_tests") {
    sources = [
      "tests/src/org/webrtc/AndroidVideoDecoderTest.java",
      "tests/src/org/webrtc/CameraEnumerationTest.java",
      "tests/src/org/webrtc/CodecTestHelper.java",
      "tests/src/org/webrtc/CryptoOptionsTest.java",
      "tests/src/org/webrtc/FakeMediaCodecWrapper.java",
      "tests/src/org/webrtc/GlGenericDrawerTest.java",
      "tests/src/org/webrtc/HardwareVideoEncoderTest.java",
      "tests/src/org/webrtc/IceCandidateTest.java",
      "tests/src/org/webrtc/RefCountDelegateTest.java",
      "tests/src/org/webrtc/ScalingSettingsTest.java",
    ]

    deps = [
      ":libjingle_peerconnection_java",
      "//base:base_java_test_support",
      "//third_party/google-truth:google_truth_java",
    ]

    additional_jar_files = [ [
          "tests/resources/robolectric.properties",
          "robolectric.properties",
        ] ]
  }
}
