# 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("//base/android/jni_generator/jni_exception_list.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
import("//third_party/icu/config.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")

content_shell_manifest =
    "$target_gen_dir/content_shell_manifest/AndroidManifest.xml"

generate_jni("content_shell_jni_headers") {
  jni_package = "content/shell"
  sources = [
    "java/src/org/chromium/content_shell/Shell.java",
    "java/src/org/chromium/content_shell/ShellManager.java",
  ]
}

generate_jni_registration("content_shell_jni_registration") {
  testonly = true
  target = ":content_shell_apk"
  output = "$root_gen_dir/content/shell/android/${target_name}.h"
  exception_files = jni_exception_files
}

shared_library("libcontent_shell_content_view") {
  testonly = true
  deps = [
    ":content_shell_jni_headers",
    ":content_shell_jni_registration",
    "//components/crash/content/browser",
    "//content/shell:content_shell_lib",
    "//content/shell:pak",
    "//media",
    "//skia",
  ]

  # Explicit dependency required for JNI registration to be able to
  # find the native side functions.
  if (is_component_build) {
    deps += [
      "//device/gamepad",
      "//media/midi",
    ]
  }
  sources = [
    "shell_library_loader.cc",
  ]
}

shared_library("libcontent_native_test") {
  testonly = true
  deps = [
    ":content_test_jni_registration",
    "//base",
    "//content/public/test/android:content_native_test_support",
    "//content/shell:content_shell_lib",
  ]

  sources = [
    "shell_test_library_loader.cc",
  ]
}

android_resources("content_shell_java_resources") {
  testonly = true
  resource_dirs = [ "java/res" ]
  custom_package = "org.chromium.content_shell"
}

android_library("content_shell_java") {
  testonly = true
  deps = [
    ":content_shell_java_resources",
    ":content_shell_manifest",
    "//base:base_java",
    "//components/content_view:content_view_java",
    "//components/embedder_support/android:media_java",
    "//content/public/android:content_java",
    "//device/geolocation:geolocation_java",
    "//media/base/android:media_java",
    "//media/capture/video/android:capture_java",
    "//mojo/public/java:system_java",
    "//net/android:net_java",
    "//ui/android:ui_java",
  ]
  java_files = [
    "java/src/org/chromium/content_shell/Shell.java",
    "java/src/org/chromium/content_shell/ShellManager.java",
    "java/src/org/chromium/content_shell/ShellViewAndroidDelegate.java",
  ]

  android_manifest_for_lint = content_shell_manifest
}

jinja_template("content_shell_manifest") {
  testonly = true
  input = "shell_apk/AndroidManifest.xml.jinja2"
  output = content_shell_manifest
}

android_resources("content_shell_apk_resources") {
  testonly = true
  resource_dirs = [ "shell_apk/res" ]
  deps = [
    ":content_shell_java_resources",
  ]
  android_manifest = content_shell_manifest
  android_manifest_dep = ":content_shell_manifest"
}

android_library("content_shell_apk_java") {
  testonly = true

  srcjar_deps = [ ":content_javatests_aidl" ]

  deps = [
    ":content_shell_apk_resources",
    ":content_shell_java",
    ":content_shell_manifest",
    "//base:base_java",
    "//content/public/android:content_java",
    "//media/capture/video/android:capture_java",
    "//net/android:net_java",
    "//third_party/jsr-305:jsr_305_javalib",
    "//ui/android:ui_java",
  ]

  android_manifest_for_lint = content_shell_manifest

  java_files = [
    "shell_apk/src/org/chromium/content_shell_apk/ChildProcessLauncherTestHelperService.java",
    "shell_apk/src/org/chromium/content_shell_apk/ChildProcessLauncherTestUtils.java",
    "shell_apk/src/org/chromium/content_shell_apk/ContentShellActivity.java",
    "shell_apk/src/org/chromium/content_shell_apk/ContentShellApplication.java",
    "shell_apk/src/org/chromium/content_shell_apk/TestChildProcessService.java",
    "shell_apk/src/org/chromium/content_shell_apk/TestChildProcessService0.java",
    "shell_apk/src/org/chromium/content_shell_apk/TestChildProcessService1.java",
  ]
}

android_aidl("content_javatests_aidl") {
  import_include = [ "shell_apk/src" ]
  sources = [
    "shell_apk/src/org/chromium/content_shell_apk/IChildProcessTest.aidl",
  ]
}

android_assets("content_shell_assets") {
  sources = [
    "$root_out_dir/content_shell.pak",
  ]
  disable_compression = true
  deps = [
    "//content/shell:pak",
    "//third_party/icu:icu_assets",
  ]
  if (use_v8_context_snapshot) {
    deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
  } else {
    deps += [ "//v8:v8_external_startup_data_assets" ]
  }
}

android_apk("content_shell_apk") {
  testonly = true
  enable_multidex = true
  deps = [
    ":content_shell_apk_java",
    ":content_shell_assets",
    ":content_shell_java",
    "//base:base_java",
    "//content/public/android:content_java",
    "//content/public/test/android:layouttest_java_support",
    "//media/capture/video/android:capture_java",
    "//net/android:net_java",
    "//third_party/mesa:osmesa",
    "//ui/android:ui_java",
  ]
  apk_name = "ContentShell"
  android_manifest = content_shell_manifest
  android_manifest_dep = ":content_shell_manifest"
  shared_libraries = [ ":libcontent_shell_content_view" ]
  loadable_modules = [ "$root_out_dir/libosmesa.so" ]
  command_line_flags_file = "content-shell-command-line"
}

android_library("content_shell_test_java") {
  testonly = true
  deps = [
    ":content_shell_apk_java",
    ":content_shell_java",
    "//base:base_java",
    "//base:base_java_test_support",
    "//content/public/android:content_java",
    "//content/public/test/android:content_java_test_support",
    "//content/shell/android:content_shell_java",
    "//third_party/android_support_test_runner:rules_java",
    "//third_party/android_support_test_runner:runner_java",
    "//third_party/junit:junit",
    "//ui/android:ui_java",
  ]
  java_files = [
    "javatests/src/org/chromium/content_shell_apk/ContentShellPreconditionsTest.java",
    "javatests/src/org/chromium/content_shell_apk/ContentShellShellManagementTest.java",
    "javatests/src/org/chromium/content_shell_apk/ContentShellActivityTestRule.java",
    "javatests/src/org/chromium/content_shell_apk/ContentShellUrlTest.java",
  ]
}

generate_jni_registration("content_test_jni_registration") {
  testonly = true
  target = ":content_shell_test_apk__apk"
  output = "$root_gen_dir/content/shell/android/${target_name}.h"
  exception_files = jni_exception_files
}

instrumentation_test_apk("content_shell_test_apk") {
  deps = [
    "//base:base_java_test_support",
    "//base:base_javatests",
    "//content/public/android:content_javatests",
    "//net/android:net_javatests",
    "//third_party/android_support_test_runner:runner_java",
  ]
  apk_under_test = ":content_shell_apk"
  apk_name = "ContentShellTest"
  shared_libraries = [ ":libcontent_native_test" ]
  android_manifest = "javatests/AndroidManifest.xml"
}

if (current_cpu != "x64") {
  chromium_linker_test_manifest =
      "$target_gen_dir/linker_test_apk/AndroidManifest.xml"

  jinja_template("chromium_linker_test_manifest") {
    testonly = true
    input = "linker_test_apk/AndroidManifest.xml.jinja2"
    output = chromium_linker_test_manifest
  }

  android_resources("linker_resources") {
    testonly = true
    resource_dirs = [ "linker_test_apk/res" ]
    android_manifest = chromium_linker_test_manifest
    android_manifest_dep = ":chromium_linker_test_manifest"
  }

  _linker_test_apk_target_name = "chromium_linker_test_apk__apk"
  _linker_test_apk_test_runner_target_name =
      "chromium_linker_test_apk__test_runner_script"

  android_apk(_linker_test_apk_target_name) {
    testonly = true
    enable_multidex = true
    deps = [
      ":content_shell_assets",
      ":content_shell_java",
      ":linker_resources",
      "//base:base_java",
      "//content/public/android:content_java",
      "//ui/android:ui_java",
    ]
    android_manifest = chromium_linker_test_manifest
    android_manifest_dep = ":chromium_linker_test_manifest"
    apk_name = "ChromiumLinkerTest"
    java_files = [
      "linker_test_apk/src/org/chromium/chromium_linker_test_apk/ChromiumLinkerTestActivity.java",
      "linker_test_apk/src/org/chromium/chromium_linker_test_apk/ChromiumLinkerTestApplication.java",
      "linker_test_apk/src/org/chromium/chromium_linker_test_apk/LinkerTests.java",
    ]
    shared_libraries = [ ":linker_test" ]
    use_chromium_linker = true
    enable_chromium_linker_tests = true
  }

  test_runner_script(_linker_test_apk_test_runner_target_name) {
    test_name = "chromium_linker_test_apk"
    test_type = "linker"
    apk_target = ":$_linker_test_apk_target_name"
    ignore_all_data_deps = true
  }

  group("chromium_linker_test_apk") {
    testonly = true
    deps = [
      ":$_linker_test_apk_target_name",
      ":$_linker_test_apk_test_runner_target_name",
    ]
  }

  shared_library("linker_test") {
    testonly = true
    sources = [
      "linker_test_apk/chromium_linker_test_android.cc",
      "linker_test_apk/chromium_linker_test_linker_tests.cc",
    ]

    deps = [
      ":linker_test_jni_headers",
      ":linker_test_jni_registration",
      "//content/shell:content_shell_lib",

      # Required to include "content/public/browser/android/compositor.h"
      # in chromium_linker_test_android.cc :-(
      "//skia",
      "//third_party/re2",
    ]

    # Explicit dependency required for JNI registration to be able to
    # find the native side functions.
    if (is_component_build) {
      deps += [
        "//device/gamepad",
        "//media/midi",
      ]
    }
  }

  generate_jni("linker_test_jni_headers") {
    testonly = true
    jni_package = "content/shell"
    sources = [
      "linker_test_apk/src/org/chromium/chromium_linker_test_apk/LinkerTests.java",
    ]
  }

  generate_jni_registration("linker_test_jni_registration") {
    testonly = true
    target = ":chromium_linker_test_apk__apk"
    output =
        "$root_gen_dir/content/shell/android/linker_test_apk/${target_name}.h"
    exception_files = jni_exception_files
  }
}

android_library("content_shell_browsertests_java") {
  testonly = true
  deps = [
    ":content_shell_java",
    "//base:base_java",
    "//content/public/android:content_java",
    "//testing/android/native_test:native_test_java",
    "//ui/android:ui_java",
  ]
  java_files = [ "browsertests/src/org/chromium/content_shell/browsertests/ContentShellBrowserTestActivity.java" ]
}
