# 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/rules.gni")

group("android") {
  testonly = true
  deps = [
    ":system_java",
    ":mojo_javatests",
    ":mojo_test_apk",
  ]
}

generate_jni("jni_headers") {
  sources = [
    "javatests/src/org/chromium/mojo/MojoTestCase.java",
    "javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java",
    "../services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java",
    "../shell/android/apk/src/org/chromium/mojo_shell_apk/MojoMain.java",
  ]
  deps = [ ":system_java_jni_headers" ]

  jni_package = "mojo"
}

generate_jni("system_java_jni_headers") {
  sources = [
    "system/src/org/chromium/mojo/system/impl/CoreImpl.java",
  ]

  jni_package = "mojo"
}

source_set("libsystem_java") {
  sources = [
    "system/core_impl.cc",
    "system/core_impl.h",
  ]

  deps = [
    ":system_java_jni_headers",
    "//mojo/edk/system",
    "//mojo/environment:chromium",
  ]
}

android_library("system_java") {
  java_files = [
    "system/src/org/chromium/mojo/system/impl/CoreImpl.java",
    "system/src/org/chromium/mojo/system/impl/DataPipeConsumerHandleImpl.java",
    "system/src/org/chromium/mojo/system/impl/DataPipeProducerHandleImpl.java",
    "system/src/org/chromium/mojo/system/impl/HandleBase.java",
    "system/src/org/chromium/mojo/system/impl/MessagePipeHandleImpl.java",
    "system/src/org/chromium/mojo/system/impl/SharedBufferHandleImpl.java",
    "system/src/org/chromium/mojo/system/impl/UntypedHandleImpl.java",
  ]

  deps = [
    "//base:base_java",
    "//mojo/public/java:system",
  ]
}

android_library("mojo_javatests") {
  testonly = true
  java_files = [
    "javatests/src/org/chromium/mojo/HandleMock.java",
    "javatests/src/org/chromium/mojo/MojoTestCase.java",
    "javatests/src/org/chromium/mojo/TestUtils.java",
    "javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java",
    "javatests/src/org/chromium/mojo/bindings/BindingsTest.java",
    "javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java",
    "javatests/src/org/chromium/mojo/bindings/CallbacksTest.java",
    "javatests/src/org/chromium/mojo/bindings/ConnectorTest.java",
    "javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java",
    "javatests/src/org/chromium/mojo/bindings/InterfacesTest.java",
    "javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java",
    "javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java",
    "javatests/src/org/chromium/mojo/bindings/RouterTest.java",
    "javatests/src/org/chromium/mojo/bindings/SerializationTest.java",
    "javatests/src/org/chromium/mojo/bindings/ValidationTest.java",
    "javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java",
    "javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java",
    "javatests/src/org/chromium/mojo/bindings/test/mojom/mojo/IntegrationTestInterface2TestHelper.java",
    "javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java",
  ]

  deps = [
    ":system_java",
    "//base:base_java",
    "//base:base_java_test_support",
    "//mojo/public/interfaces/bindings/tests:test_interfaces_java",
    "//mojo/public/java:bindings",
    "//mojo/public/java:system",
  ]
}

shared_library("mojo_java_unittests") {
  testonly = true

  sources = [
    "javatests/mojo_test_case.cc",
    "javatests/mojo_test_case.h",
    "javatests/init_library.cc",
    "javatests/validation_test_util.cc",
    "javatests/validation_test_util.h",
  ]
  deps = [
    ":jni_headers",
    ":libsystem_java",
    ":system_java_jni_headers",
    "//base",
    "//base/test/:test_support",
    "//mojo/public/cpp/bindings/tests:mojo_public_bindings_test_utils",
    "//mojo/public/cpp/test_support:test_utils",
  ]
  defines = [ "UNIT_TEST" ]

}

android_apk("mojo_test_apk") {
  testonly = true
  deps = [
    ":mojo_javatests",
    ":mojo_java_unittests",
    ":system_java",
    "//base:base_java",
    "//mojo/public/java:bindings",
    "//mojo/public/interfaces/bindings/tests:test_interfaces",
  ]
  native_libs = [ "libmojo_java_unittests.so" ]
  apk_name = "MojoTest"
  android_manifest = "javatests/AndroidManifest.xml"
}
