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

import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")

android_library("net_java") {
  DEPRECATED_java_in_dir = "java/src"
  deps = [
    "//base:base_java",
  ]

  srcjar_deps = [
    ":net_errors_java",
    ":net_android_java_enums_srcjar",
    ":remote_android_keystore_aidl",
  ]
}

android_aidl("remote_android_keystore_aidl") {
  interface_file =
      "java/src/org/chromium/net/IRemoteAndroidKeyStoreInterface.aidl"
  sources = [
    "java/src/org/chromium/net/IRemoteAndroidKeyStore.aidl",
    "java/src/org/chromium/net/IRemoteAndroidKeyStoreCallbacks.aidl",
  ]
}

android_library("net_java_test_support") {
  DEPRECATED_java_in_dir = "../test/android/javatests/src"
}

android_library("net_javatests") {
  DEPRECATED_java_in_dir = "javatests/src"
  deps = [
    "//base:base_java",
    "//base:base_java_test_support",
    ":net_java",
  ]
}

java_cpp_template("net_errors_java") {
  package_name = "org/chromium/net"
  sources = [
    "java/NetError.template",
  ]
  inputs = [
    "../base/net_error_list.h",
  ]
}

java_cpp_enum("net_android_java_enums_srcjar") {
  sources = [
    "../base/mime_util.h",
    "../base/network_change_notifier.h",
    "cert_verify_result_android.h",
    "keystore.h",
  ]
  outputs = [
    "org/chromium/net/CertificateMimeType.java",
    "org/chromium/net/CertVerifyStatusAndroid.java",
    "org/chromium/net/ConnectionSubtype.java",
    "org/chromium/net/ConnectionType.java",
    "org/chromium/net/PrivateKeyType.java",
  ]
}

# TODO(GYP)
if (false) {
  unittest_apk("net_unittests_apk") {
    deps = [
      ":net_java",
      ":net_javatests",
      "//net:net_unittests",
    ]
    unittests_dep = "//net:net_unittests"
  }
}
