# 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"
  deps = [
    "//base:base_java",
  ]
  srcjar_deps = [ ":net_java_test_support_enums_srcjar" ]
}

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_java_test_support_enums_srcjar") {
  sources = [
    "../test/url_request/url_request_failed_job.h",
  ]
  outputs = [
    "org/chromium/net/test/FailurePhase.java",
  ]
}

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"
  }
}
