# 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")

source_set("native_test_support") {
  testonly = true
  sources = [
    "main_runner.cc",
    "main_runner.h",
    "native_test_launcher.cc",
    "native_test_launcher.h",
    "native_test_util.cc",
    "native_test_util.h",
  ]
  deps = [
    ":native_test_jni_headers",
    "//base",
    "//base/test:test_support",
    "//base/third_party/dynamic_annotations",
    "//testing/gtest",
  ]
}

source_set("native_test_native_code") {
  testonly = true
  sources = [
    "native_test_jni_onload.cc",
  ]
  libs = [ "log" ]
  deps = [
    ":native_test_support",
    "//base",
  ]
}

android_library("native_main_runner_java") {
  testonly = true
  java_files = [ "java/src/org/chromium/native_test/MainRunner.java" ]
  deps = [
    "//base:base_java",
  ]
}

android_library("native_test_java") {
  testonly = true
  deps = [
    ":native_main_runner_java",
    "//base:base_java",
    "//base:base_java_test_support",
    "//testing/android/reporter:reporter_java",
  ]
  java_files = [
    "java/src/org/chromium/native_test/NativeTestApplication.java",
    "java/src/org/chromium/native_test/NativeBrowserTestActivity.java",
    "java/src/org/chromium/native_test/NativeTest.java",
    "java/src/org/chromium/native_test/NativeTestInstrumentationTestRunner.java",
    "java/src/org/chromium/native_test/NativeUnitTest.java",
    "java/src/org/chromium/native_test/NativeUnitTestActivity.java",
    "java/src/org/chromium/native_test/NativeUnitTestNativeActivity.java",
  ]
}

generate_jni("native_test_jni_headers") {
  sources = [
    "java/src/org/chromium/native_test/MainRunner.java",
    "java/src/org/chromium/native_test/NativeTest.java",
  ]
  jni_package = "testing"
}
