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

group("mojo") {
  # Meta-target, don't link into production code.
  testonly = true
  declare_args() {
    mojo_use_go = false
  }
  deps = [
    ":tests",
    "//mojo/apps/js:mojo_js_content_handler",
    "//mojo/apps/js:mojo_js_standalone",
    "//mojo/common",
    "//mojo/examples",
    "//mojo/public",
    "//mojo/services",
    "//mojo/shell:mojo_shell",
    "//mojo/tools/package_manager",
  ]

  if (is_android) {
    deps += [
      "//mojo/android",
    ]
  }

  if (is_linux) {
    deps += [
      "//mojo/python",
    ]
    if (mojo_use_go) {
      deps += [
        "//mojo/go",
      ]
    }
  }
}

group("tests") {
  testonly = true
  deps = [
    "//mojo/application_manager:mojo_application_manager_unittests",
    "//mojo/apps/js/test:mojo_apps_js_unittests",
    "//mojo/bindings/js/tests:mojo_js_unittests",
    "//mojo/common:mojo_common_unittests",
    "//mojo/converters/surfaces/tests:mojo_surfaces_lib_unittests",
    "//mojo/edk/system:mojo_message_pipe_perftests",
    "//mojo/edk/system:mojo_system_unittests",
    "//mojo/public/c/system/tests:perftests",
    "//mojo/public/cpp/application/tests:mojo_public_application_unittests",
    "//mojo/public/cpp/bindings/tests:mojo_public_bindings_unittests",
    "//mojo/public/cpp/environment/tests:mojo_public_environment_unittests",
    "//mojo/public/cpp/system/tests:mojo_public_system_unittests",
    "//mojo/public/cpp/utility/tests:mojo_public_utility_unittests",
    "//mojo/services/clipboard:mojo_clipboard_unittests",
    "//mojo/shell:mojo_external_application_tests",
    "//mojo/shell:mojo_shell_tests",
    "//mojo/tools:message_generator",
  ]

  if (use_aura) {
    deps += [
      "//mojo/services/public/cpp/view_manager/tests:mojo_view_manager_lib_unittests",
      "//mojo/services/view_manager:mojo_view_manager_unittests",
      "//mojo/services/window_manager:mojo_core_window_manager_unittests",
    ]
  }
}

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

  generate_jni("jni_headers") {
    sources = [
      "android/javatests/src/org/chromium/mojo/MojoTestCase.java",
      "android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java",
      "android/system/src/org/chromium/mojo/system/impl/CoreImpl.java",
      "services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java",
    ]

    jni_package = "mojo"
  }
}
