# 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/chrome_build.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//printing/features/features.gni")
import("//rlz/features/features.gni")
import("//testing/test.gni")
import("//tools/grit/repack.gni")

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

if (is_ios) {
  import("//ios/build/config.gni")
}

if (is_ios) {
  bundle_data("components_tests_pak_bundle_data") {
    public_deps = [
      ":components_tests_pak",
      "//ui/resources:ui_test_pak",
    ]
    sources = [
      "$root_out_dir/components_tests_resources.pak",
      "$root_out_dir/ui_test.pak",
    ]
    outputs = [
      "{{bundle_resources_dir}}/{{source_file_part}}",
    ]
  }
}

# To add a unit test to this target, make a "unit_test" source_set in your
# component (it's important to use a source_set instead of a static library or
# no tests will run) and add a reference here. You can add more than one unit
# test target if convenient.
test("components_unittests") {
  sources = [
    "test/run_all_unittests.cc",
  ]

  if (is_android || is_linux || is_mac || is_win) {
    data = [
      "test/data/",

      # TODO(dpranke): Remove the next two lines after GN has rolled to 339778.
      "$root_out_dir/components_tests_resources.pak",
      "$root_out_dir/ui_test.pak",
    ]
  }

  if (is_android) {
    enable_multidex = true
  }

  # Add only ":unit_tests" dependencies here. If your tests have dependencies
  # (this would at least include the component itself), they should be on the
  # test source set and not here.

  deps = [
    "//base",
    "//components/autofill/core/browser:unit_tests",
    "//components/autofill/core/common:unit_tests",
    "//components/base32:unit_tests",
    "//components/bookmarks/browser:unit_tests",
    "//components/bookmarks/managed:unit_tests",
    "//components/browser_sync:unit_tests",
    "//components/browsing_data/core:unit_tests",
    "//components/bubble:unit_tests",
    "//components/captive_portal:unit_tests",
    "//components/client_update_protocol:unit_tests",
    "//components/cloud_devices/common:unit_tests",
    "//components/component_updater:unit_tests",
    "//components/content_settings/core/browser:unit_tests",
    "//components/content_settings/core/common:unit_tests",
    "//components/crx_file:unit_tests",
    "//components/data_usage/core:unit_tests",
    "//components/device_event_log:unit_tests",
    "//components/dom_distiller/core:unit_tests",
    "//components/favicon/core:unit_tests",
    "//components/favicon_base:unit_tests",
    "//components/flags_ui:unit_tests",
    "//components/gcm_driver:unit_tests",
    "//components/gcm_driver/crypto:unit_tests",
    "//components/google/core/browser:unit_tests",
    "//components/grpc_support/test:unit_tests",
    "//components/history/core/browser:unit_tests",
    "//components/history/core/common:unit_tests",
    "//components/image_fetcher:unit_tests",
    "//components/json_schema:unit_tests",
    "//components/keyed_service/core:unit_tests",
    "//components/language_usage_metrics:unit_tests",
    "//components/leveldb_proto:unit_tests",
    "//components/login:unit_tests",
    "//components/memory_pressure:unit_tests",
    "//components/metrics:unit_tests",
    "//components/mime_util:unit_tests",
    "//components/net_log:unit_tests",
    "//components/network_session_configurator:unit_tests",
    "//components/network_time:unit_tests",
    "//components/ntp_snippets:unit_tests",
    "//components/ntp_tiles:unit_tests",
    "//components/offline_pages/core:unit_tests",
    "//components/offline_pages/core/background:unit_tests",
    "//components/offline_pages/core/downloads:unit_tests",
    "//components/offline_pages/core/request_header:unit_tests",
    "//components/omnibox/browser:unit_tests",
    "//components/open_from_clipboard:unit_tests",
    "//components/os_crypt:unit_tests",
    "//components/password_manager/core/browser:unit_tests",
    "//components/password_manager/core/common:unit_tests",
    "//components/password_manager/sync/browser:unit_tests",
    "//components/payments:unit_tests",
    "//components/physical_web/data_source:unit_tests",
    "//components/precache/core:unit_tests",
    "//components/prefs:unit_tests",
    "//components/previews/core:unit_tests",
    "//components/proxy_config:unit_tests",
    "//components/query_parser:unit_tests",
    "//components/rappor:unit_tests",
    "//components/search:unit_tests",
    "//components/search_engines:unit_tests",
    "//components/search_provider_logos:unit_tests",
    "//components/security_state/core:unit_tests",
    "//components/sessions:unit_tests",
    "//components/signin/core/browser:unit_tests",
    "//components/ssl_config:unit_tests",
    "//components/ssl_errors:unit_tests",
    "//components/subresource_filter/core/browser:unit_tests",
    "//components/subresource_filter/core/common:unit_tests",
    "//components/suggestions:unit_tests",
    "//components/supervised_user_error_page:unit_tests",
    "//components/sync:unit_tests",
    "//components/sync_bookmarks:unit_tests",
    "//components/sync_preferences:unit_tests",
    "//components/sync_sessions:unit_tests",
    "//components/task_scheduler_util/common:unit_tests",
    "//components/test:test_support",
    "//components/translate/core/browser:unit_tests",
    "//components/translate/core/common:unit_tests",
    "//components/translate/core/language_detection:unit_tests",
    "//components/undo:unit_tests",
    "//components/update_client:unit_tests",
    "//components/upload_list:unit_tests",
    "//components/url_formatter:unit_tests",
    "//components/url_matcher:unit_tests",
    "//components/user_prefs/tracked:unit_tests",
    "//components/variations:unit_tests",
    "//components/variations/service:unit_tests",
    "//components/web_resource:unit_tests",
    "//components/webdata/common:unit_tests",
  ]

  if (enable_nacl) {
    deps += [ "//components/nacl/browser:unit_tests" ]
  }

  if (is_ios) {
    deps += [
      "//components/reading_list/ios:unit_tests",
      "//components/signin/ios/browser:unit_tests",
      "//components/translate/ios/browser:unit_tests",
    ]
  } else {  # !iOS
    deps += [
      "//components/autofill/content/browser:unit_tests",
      "//components/autofill/content/common:unit_tests",
      "//components/autofill/content/renderer:unit_tests",
      "//components/cast_certificate:unit_tests",
      "//components/certificate_reporting:unit_tests",
      "//components/certificate_transparency:unit_tests",
      "//components/contextual_search:unit_tests",
      "//components/crash/content/app:unit_tests",
      "//components/crash/core/common:unit_tests",
      "//components/data_reduction_proxy/content/browser:unit_tests",
      "//components/data_reduction_proxy/core/browser:unit_tests",
      "//components/data_reduction_proxy/core/common:unit_tests",
      "//components/data_use_measurement/core:unit_tests",
      "//components/discardable_memory/common:unit_tests",
      "//components/discardable_memory/service:unit_tests",
      "//components/display_compositor:unit_tests",
      "//components/dom_distiller/content/browser:unit_tests",
      "//components/domain_reliability:unit_tests",
      "//components/error_page/renderer:unit_tests",
      "//components/favicon/content:unit_tests",
      "//components/gcm_driver/instance_id:unit_tests",
      "//components/guest_view/browser:unit_tests",
      "//components/history/content/browser:unit_tests",
      "//components/invalidation/impl:unit_tests",
      "//components/keyed_service/content:unit_tests",
      "//components/link_header_util:unit_tests",
      "//components/navigation_interception:unit_tests",
      "//components/network_hints/renderer:unit_tests",
      "//components/offline_pages/content/background_loader:unit_tests",
      "//components/packed_ct_ev_whitelist:unit_tests",
      "//components/password_manager/content/browser:unit_tests",
      "//components/policy/core/browser:unit_tests",
      "//components/policy/core/common:unit_tests",
      "//components/precache/content:unit_tests",
      "//components/safe_browsing_db:unit_tests",
      "//components/safe_json:unit_tests",
      "//components/security_state/content:unit_tests",
      "//components/spellcheck/browser:unit_tests",
      "//components/spellcheck/renderer:unit_tests",
      "//components/subresource_filter/content/browser:unit_tests",
      "//components/subresource_filter/content/renderer:unit_tests",
      "//components/tracing:unit_tests",
      "//components/visitedlink/test:unit_tests",
      "//components/wallpaper:unit_tests",
      "//components/web_cache/browser:unit_tests",
      "//components/webcrypto:unit_tests",
      "//components/zoom:unit_tests",
    ]

    data_deps = [
      ":components_tests_pak",
      "//third_party/mesa:osmesa",
      "//ui/resources:ui_test_pak",
    ]
  }  # iOS/!iOS

  if (is_ios) {
    deps += [ ":components_tests_pak_bundle_data" ]
  }

  if (is_mac || is_linux) {
    data_deps += [ "//content/shell:pak" ]
  }

  if (is_android) {
    deps += [
      "//components/gcm_driver/instance_id:test_support",
      "//components/gcm_driver/instance_id/android:instance_id_driver_java",
      "//components/gcm_driver/instance_id/android:instance_id_driver_test_support_java",
      "//components/invalidation/impl",
      "//components/invalidation/impl:java",
      "//components/policy/android:policy_java",
      "//components/safe_json",
      "//components/safe_json/android:safe_json_java",
      "//components/signin/core/browser",
      "//components/signin/core/browser/android:java",
      "//components/spellcheck/browser/android:java",
      "//components/variations/android:variations_java",
      "//components/web_restrictions:test_support",
      "//components/web_restrictions:test_support_java",
      "//components/web_restrictions:unit_tests",
      "//content/public/android:content_java",
      "//content/public/browser",
      "//net",
      "//ui/android:ui_java",
      "//ui/base",
      "//ui/gfx",
      "//v8:v8_external_startup_data_assets",
    ]
  }

  # Desktop-only deps.
  if (!is_android && !is_ios) {
    deps += [
      "//components/cryptauth:unit_tests",
      "//components/feedback:unit_tests",
      "//components/proximity_auth:unit_tests",
      "//components/storage_monitor:unit_tests",
      "//components/web_modal:unit_tests",
    ]
  }

  if (enable_rlz_support) {
    deps += [ "//components/rlz:unit_tests" ]
  }

  if (is_chromeos) {
    deps += [
      "//components/arc:unit_tests",
      "//components/ownership:unit_tests",
      "//components/pairing:unit_tests",
      "//components/sync_wifi:unit_tests",
      "//components/timers:unit_tests",
      "//components/user_manager:unit_tests",
    ]
  }

  if (toolkit_views) {
    deps += [ "//components/constrained_window:unit_tests" ]
  }

  if (is_win) {
    deps += [ "//components/browser_watcher:unit_tests" ]
  }

  if (enable_basic_printing || enable_print_preview) {
    deps += [
      "//components/printing/browser",
      "//components/printing/common",
      "//components/printing/renderer",
    ]
  }

  if (safe_browsing_mode == 2) {
    deps += [ "//components/safe_browsing_db:unit_tests_mobile" ]
  }

  if (is_ios) {
    assert_no_deps = ios_assert_no_deps
  }
}

repack("components_tests_pak") {
  sources = [
    "$root_gen_dir/components/components_resources.pak",
    "$root_gen_dir/components/strings/components_strings_en-US.pak",
  ]

  output = "$root_out_dir/components_tests_resources.pak"
  deps = [
    "//components/resources",
    "//components/strings",
  ]

  if (is_chrome_branded) {
    sources += [ "${root_gen_dir}/components/strings/components_google_chrome_strings_en-US.pak" ]
  } else {
    sources += [ "${root_gen_dir}/components/strings/components_chromium_strings_en-US.pak" ]
  }
}

if (is_android) {
  android_assets("components_browsertests_assets") {
    testonly = true
    sources = [
      "$root_out_dir/components_tests_resources.pak",
      "$root_out_dir/content_shell.pak",
    ]
    deps = [
      ":components_tests_pak",
      "//content/shell:pak",
      "//third_party/icu:icu_assets",
      "//v8:v8_external_startup_data_assets",
    ]
  }

  android_library("components_browsertests_java") {
    testonly = true
    deps = [
      ":components_browsertests_resources",
      "//base:base_java",
      "//base:base_java_test_support",
      "//content/public/test/android:content_java_test_support",
      "//content/shell/android:content_shell_browsertests_java",
      "//testing/android/native_test:native_test_java",
    ]
    java_files = [
      "test/android/browsertests_apk/src/org/chromium/components_browsertests_apk/ComponentsBrowserTestsActivity.java",
      "test/android/browsertests_apk/src/org/chromium/components_browsertests_apk/ComponentsBrowserTestsApplication.java",
    ]
  }

  jinja_template("components_browsertests_manifest") {
    testonly = true
    input =
        "//components/test/android/browsertests_apk/AndroidManifest.xml.jinja2"
    output =
        "${target_gen_dir}/components_browsertests_manifest/AndroidManifest.xml"
  }

  android_resources("components_browsertests_resources") {
    testonly = true
    resource_dirs = [ "//components/test/android/browsertests_apk/res" ]
    custom_package = "org.chromium.components_browsertests_apk"
  }

  # TODO(GYP_GONE): Delete this target once recipes no longer require it.
  junit_binary("components_junit_tests") {
    java_files = [ "//testing/android/junit/DummyTest.java" ]
  }
}

if (!is_ios) {
  test("components_browsertests") {
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

    sources = [
      "autofill/content/browser/risk/fingerprint_browsertest.cc",
      "autofill/content/renderer/password_form_conversion_utils_browsertest.cc",
      "dom_distiller/content/browser/distillable_page_utils_browsertest.cc",
      "dom_distiller/content/browser/distiller_page_web_contents_browsertest.cc",
      "dom_distiller/content/browser/test/dom_distiller_js_browsertest.cc",
      "password_manager/content/renderer/credential_manager_client_browsertest.cc",
      "security_state/content/content_utils_browsertest.cc",
      "tracing/child/child_trace_message_filter_browsertest.cc",
    ]

    data = [
      "$root_out_dir/components_tests_resources.pak",
      "$root_out_dir/content_shell.pak",
      "test/data/",
      "dom_distiller/core/javascript/",
      "//third_party/dom_distiller_js/dist/test/data/",
    ]

    deps = [
      "//base",
      "//base/test:test_support",
      "//components/autofill/content/browser",
      "//components/autofill/content/renderer",
      "//components/autofill/core/browser",
      "//components/content_settings/core/common",
      "//components/dom_distiller/content/browser",
      "//components/dom_distiller/core",
      "//components/dom_distiller/core:test_support",
      "//components/password_manager/content/browser",
      "//components/password_manager/content/renderer",
      "//components/security_state/content",
      "//components/security_state/core",
      "//components/strings",
      "//components/tracing",
      "//content/public/browser",
      "//content/shell:content_shell_lib",
      "//content/test:browsertest_support",
      "//content/test:test_support",
      "//device/bluetooth",
      "//device/geolocation",
      "//ipc:test_support",
      "//net:test_support",
      "//printing/features",
      "//services/service_manager/public/cpp",
      "//testing/gmock",
      "//testing/gtest",
      "//ui/base",
      "//url",
    ]

    data_deps = [
      ":components_tests_pak",
      "//third_party/mesa:osmesa",
    ]

    if (is_mac) {
      data_deps += [ "//content/shell:content_shell" ]
      data += [ "$root_out_dir/Content Shell.app/" ]
    }

    if (is_android) {
      sources += [ "test/android/browsertests_apk/components_browser_tests_jni_onload.cc" ]
      sources -= [ "autofill/content/browser/risk/fingerprint_browsertest.cc" ]
      deps += [
        "//content/public/test/android:layouttest_java_support",
        "//content/test:layouttest_support",
        "//testing/android/native_test:native_test_support",
      ]
      use_default_launcher = false
      android_manifest = "${target_gen_dir}/components_browsertests_manifest/AndroidManifest.xml"
      android_manifest_dep = ":components_browsertests_manifest"
      deps += [
        ":components_browsertests_assets",
        ":components_browsertests_java",
      ]
    }

    if (is_linux) {
      # content_extractor_browsertest is a standalone content extraction tool built as
      # a MANUAL component_browsertest.
      sources += [ "dom_distiller/standalone/content_extractor_browsertest.cc" ]
      deps += [
        "//components/leveldb_proto",
        "//components/prefs:test_support",
        "//components/sync_preferences:test_support",
      ]
    }

    if (enable_basic_printing || enable_print_preview) {
      sources += [ "printing/test/print_web_view_helper_browsertest.cc" ]
      deps += [ "//components/printing/test:test_support" ]
    }
  }

  test("components_perftests") {
    sources = [
      "omnibox/browser/history_quick_provider_performance_unittest.cc",
      "test/run_all_perftests.cc",
      "visitedlink/test/visitedlink_perftest.cc",
    ]

    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

    deps = [
      "//base",
      "//components/history/core/test",
      "//components/omnibox/browser",
      "//components/omnibox/browser:test_support",
      "//components/test:test_support",
      "//components/visitedlink/browser",
      "//testing/perf",
      "//url",
    ]

    if (!is_ios) {
      sources += [ "discardable_memory/common/discardable_shared_memory_heap_perftest.cc" ]
      deps += [ "//components/discardable_memory/common" ]
    }
  }
}
