# 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/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//components/nacl/features.gni")
import("//components/safe_browsing/buildflags.gni")
import("//extensions/buildflags/buildflags.gni")
import("//media/media_options.gni")
import("//pdf/features.gni")
import("//printing/buildflags/buildflags.gni")
import("//rlz/buildflags/buildflags.gni")
import("//testing/test.gni")
import("//third_party/widevine/cdm/widevine.gni")
import("//tools/grit/repack.gni")

if (is_android) {
  import("//build/config/android/rules.gni")
  import("//build/config/compiler/compiler.gni")
  import("//tools/v8_context_snapshot/v8_context_snapshot.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") {
  use_xvfb = use_xvfb_in_this_config

  if (is_android || is_linux || is_chromeos || is_mac || is_win || is_fuchsia) {
    data = [ "test/data/" ]
  }

  if (is_fuchsia) {
    additional_manifest_fragments = [
      "//build/config/fuchsia/test/font_capabilities.test-cmx",

      # TODO(crbug.com/1185811): Figure out why jit_capabilities is needed.
      "//build/config/fuchsia/test/jit_capabilities.test-cmx",
    ]
  }

  # 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/apdu:unit_tests",
    "//components/assist_ranker:unit_tests",
    "//components/autofill/core/browser:unit_tests",
    "//components/autofill/core/common:unit_tests",
    "//components/base32:unit_tests",
    "//components/blocklist/opt_out_blocklist:unit_tests",
    "//components/blocklist/opt_out_blocklist/sql:unit_tests",
    "//components/bookmarks/browser:unit_tests",
    "//components/bookmarks/managed:unit_tests",
    "//components/breadcrumbs/core:unit_tests",
    "//components/browser_sync:unit_tests",
    "//components/browsing_data/core:unit_tests",
    "//components/captive_portal/core:unit_tests",
    "//components/cbor:unit_tests",
    "//components/certificate_matching:unit_tests",
    "//components/client_update_protocol:unit_tests",
    "//components/cloud_devices/common:unit_tests",
    "//components/component_updater:unit_tests",
    "//components/component_updater/installer_policies:unit_tests",
    "//components/consent_auditor:unit_tests",
    "//components/content_capture/common:unit_tests",
    "//components/content_settings/core/browser:unit_tests",
    "//components/content_settings/core/common:unit_tests",
    "//components/crash/core/common:unit_tests",
    "//components/crx_file:unit_tests",
    "//components/device_event_log:unit_tests",
    "//components/dom_distiller/core:unit_tests",
    "//components/download:unit_tests",
    "//components/encrypted_messages:unit_tests",
    "//components/enterprise:unit_tests",
    "//components/favicon/core:unit_tests",
    "//components/favicon_base:unit_tests",
    "//components/feature_engagement:unit_tests",
    "//components/filename_generation:unit_tests",
    "//components/flags_ui:unit_tests",
    "//components/gcm_driver:unit_tests",
    "//components/gcm_driver/crypto:unit_tests",
    "//components/google/core/common:unit_tests",
    "//components/grpc_support/test:unit_tests",
    "//components/heap_profiling/in_process:unit_tests",
    "//components/history/core/browser:unit_tests",
    "//components/history/core/common:unit_tests",
    "//components/history/metrics:unit_tests",
    "//components/history_clusters/core:unit_tests",
    "//components/image_fetcher/core:unit_tests",
    "//components/keyed_service/core:unit_tests",
    "//components/language/core/browser:unit_tests",
    "//components/language/core/common:unit_tests",
    "//components/language/core/language_model:unit_tests",
    "//components/lens:unit_tests",
    "//components/leveldb_proto:unit_tests",
    "//components/lookalikes/core:unit_tests",
    "//components/memory_pressure:unit_tests",
    "//components/metrics:unit_tests",
    "//components/metrics/demographics:unit_tests",
    "//components/navigation_metrics:unit_tests",
    "//components/net_log:unit_tests",
    "//components/network_session_configurator/browser:unit_tests",
    "//components/network_time:unit_tests",
    "//components/ntp_snippets:unit_tests",
    "//components/ntp_tiles:unit_tests",
    "//components/offline_items_collection/core:unit_tests",
    "//components/omnibox/browser:unit_tests",
    "//components/open_from_clipboard:unit_tests",
    "//components/openscreen_platform:unittests",
    "//components/os_crypt:unit_tests",
    "//components/password_manager/core/browser:unit_tests",
    "//components/payments/core:unit_tests",
    "//components/policy/core/browser:unit_tests",
    "//components/policy/core/common:unit_tests",
    "//components/power_scheduler:unit_tests",
    "//components/prefs:unit_tests",
    "//components/profile_metrics:unit_tests",
    "//components/proxy_config:unit_tests",
    "//components/qr_code_generator:unit_tests",
    "//components/query_parser:unit_tests",
    "//components/reading_list/core:unit_tests",
    "//components/reporting/client:unit_tests",
    "//components/reporting/compression:unit_tests",
    "//components/reporting/encryption:unit_tests",
    "//components/reporting/storage:unit_tests",
    "//components/reporting/util:unit_tests",
    "//components/reputation/core:unit_tests",
    "//components/safe_search_api:unit_tests",
    "//components/scheduling_metrics:unit_tests",
    "//components/search:unit_tests",
    "//components/search_engines:unit_tests",
    "//components/search_provider_logos:unit_tests",
    "//components/security_interstitials/core:unit_tests",
    "//components/security_state/core:unit_tests",
    "//components/segmentation_platform:unit_tests",
    "//components/services/heap_profiling/public/cpp:unit_tests",
    "//components/services/unzip:unit_tests",
    "//components/sessions:unit_tests",
    "//components/shared_highlighting/core/common:unit_tests",
    "//components/signin/core/browser:unit_tests",
    "//components/signin/internal/identity_manager:unit_tests",
    "//components/signin/public/base:unit_tests",
    "//components/signin/public/identity_manager:unit_tests",
    "//components/signin/public/webdata:unit_tests",
    "//components/speech:unit_tests",
    "//components/sqlite_proto:unit_tests",
    "//components/ssl_errors:unit_tests",
    "//components/subresource_filter/core/browser:unit_tests",
    "//components/subresource_filter/core/common:unit_tests",
    "//components/subresource_filter/tools:unit_tests",
    "//components/sync:unit_tests",
    "//components/sync_bookmarks:unit_tests",
    "//components/sync_preferences:unit_tests",
    "//components/sync_user_events:unit_tests",
    "//components/system_media_controls:unit_tests",
    "//components/tab_count_metrics:unit_tests",
    "//components/test:run_all_unittests",
    "//components/translate/core/browser:unit_tests",
    "//components/translate/core/common:unit_tests",
    "//components/translate/core/language_detection:unit_tests",
    "//components/ukm:unit_tests",
    "//components/undo:unit_tests",
    "//components/unified_consent:unit_tests",
    "//components/upload_list:unit_tests",
    "//components/url_formatter:unit_tests",
    "//components/url_formatter/spoof_checks/common_words:unit_tests",
    "//components/url_formatter/spoof_checks/top_domains:unit_tests",
    "//components/url_matcher:unit_tests",
    "//components/url_pattern_index:unit_tests",
    "//components/variations:unit_tests",
    "//components/variations/field_trial_config:unit_tests",
    "//components/variations/service:unit_tests",
    "//components/web_resource:unit_tests",
    "//components/webdata/common:unit_tests",
    "//components/webdata_services:unit_tests",
  ]

  data_deps = [ "//testing/buildbot/filters:components_unittests_filters" ]

  if (toolkit_views) {
    deps += [
      "//components/fullscreen_control:unit_tests",
      "//components/media_message_center:unit_tests",
      "//components/ui_devtools:unit_tests",
    ]
  }

  if (toolkit_views && enable_extensions) {
    deps += [ "//components/ui_devtools/views:unit_tests" ]
  }

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

  if (!is_fuchsia) {
    deps += [
      "//components/browser_sync:unit_tests",
      "//components/send_tab_to_self:unit_tests",
      "//components/sync_device_info:unit_tests",
      "//components/sync_sessions:unit_tests",
      "//components/update_client:unit_tests",
    ]
  }

  if (is_ios) {
    deps += [
      "//components/autofill/ios/browser:unit_tests",
      "//components/autofill/ios/form_util:unit_tests",
      "//components/feed/core/v2/public/ios:feed_ios_unit_tests",
      "//components/image_fetcher/ios:unit_tests",
      "//components/language/ios/browser:unit_tests",
      "//components/password_manager/core/common:unit_tests",
      "//components/password_manager/ios:unit_tests",
      "//components/previous_session_info:unit_tests",
      "//components/safe_browsing/ios/browser:unit_tests",
      "//components/security_state/ios:unit_tests",
      "//components/signin/ios/browser:unit_tests",
      "//components/signin/public/identity_manager/objc:unit_tests",
      "//components/translate/ios/browser:unit_tests",
      "//components/ukm/ios:unit_tests",
    ]
  } else {  #!is_ios
    deps += [
      "//components/accuracy_tips:unit_tests",
      "//components/autofill/content/browser:unit_tests",
      "//components/autofill/content/renderer:unit_tests",
      "//components/autofill/core/common/mojom:unit_tests",
      "//components/background_sync:unit_tests",
      "//components/blocked_content:unit_tests",
      "//components/browsing_data/content:unit_tests",
      "//components/captive_portal/content:unit_tests",
      "//components/cast_certificate:unit_tests",
      "//components/cast_channel:unit_tests",
      "//components/certificate_transparency:unit_tests",
      "//components/content_capture/browser:unit_tests",
      "//components/content_settings/browser:unit_tests",
      "//components/contextual_search/core:unit_tests",
      "//components/continuous_search/browser:unit_tests",
      "//components/continuous_search/common:unit_tests",
      "//components/data_use_measurement/core:unit_tests",
      "//components/digital_asset_links:unit_tests",
      "//components/discardable_memory/client:unit_tests",
      "//components/discardable_memory/common:unit_tests",
      "//components/discardable_memory/service:unit_tests",
      "//components/dom_distiller/content/browser:unit_tests",
      "//components/domain_reliability:unit_tests",
      "//components/drive:unit_tests",
      "//components/embedder_support:unit_tests",
      "//components/favicon/content:unit_tests",
      "//components/federated_learning:unit_tests",
      "//components/feed:unit_tests",
      "//components/gcm_driver/instance_id:unit_tests",
      "//components/heavy_ad_intervention:unit_tests",
      "//components/history/content/browser:unit_tests",
      "//components/invalidation/impl:unit_tests",
      "//components/javascript_dialogs:unit_tests",
      "//components/js_injection/common:unit_tests",
      "//components/keyed_service/content:unit_tests",
      "//components/language/content/browser:unit_tests",
      "//components/link_header_util:unit_tests",
      "//components/media_router/browser:unit_tests",
      "//components/media_router/common:unit_tests",
      "//components/navigation_interception:unit_tests",
      "//components/network_hints/renderer:unit_tests",
      "//components/no_state_prefetch/browser:unit_tests",
      "//components/offline_pages:unit_tests",
      "//components/optimization_guide/content/browser:unit_tests",
      "//components/optimization_guide/content/renderer:unit_tests",
      "//components/optimization_guide/core:unit_tests",
      "//components/page_image_annotation/content/renderer:unit_tests",
      "//components/page_image_annotation/core:unit_tests",
      "//components/page_load_metrics/browser:unit_tests",
      "//components/page_load_metrics/browser/observers/ad_metrics:unit_tests",
      "//components/page_load_metrics/renderer:unit_tests",
      "//components/paint_preview/browser:unit_tests",
      "//components/paint_preview/common:unit_tests",
      "//components/paint_preview/player:unit_tests",
      "//components/paint_preview/renderer:unit_tests",
      "//components/password_manager/content/browser:unit_tests",
      "//components/payments/content:unit_tests",
      "//components/payments/content/utility:unit_tests",
      "//components/performance_manager:unit_tests",
      "//components/permissions:unit_tests",
      "//components/permissions/prediction_service:unit_tests",
      "//components/policy/content:unit_tests",
      "//components/query_tiles:unit_tests",

      # TODO(chromium: 1169835) components / reporting / storage / resources: unit_tests
      # can't be run on iOS until they are updated.
      "//components/reporting/storage/resources:unit_tests",
      "//components/safe_browsing/content/browser/password_protection:password_protection_unittest",
      "//components/safe_browsing/content/browser/triggers:unit_tests",
      "//components/safe_browsing/content/browser/web_ui:unit_tests",
      "//components/safe_browsing/core/browser:token_fetcher_unit_tests",
      "//components/safe_browsing/core/browser/realtime:unit_tests",
      "//components/safety_check:unit_tests",
      "//components/security_interstitials/content:unit_tests",
      "//components/security_state/content:unit_tests",
      "//components/services/heap_profiling:unit_tests",
      "//components/services/paint_preview_compositor:unit_tests",
      "//components/services/quarantine:unit_tests",
      "//components/services/storage:tests",
      "//components/site_engagement/content:unit_tests",
      "//components/site_isolation:unit_tests",
      "//components/spellcheck/browser:unit_tests",
      "//components/spellcheck/renderer:unit_tests",
      "//components/subresource_filter/content/browser:unit_tests",
      "//components/subresource_filter/content/common:unit_tests",
      "//components/subresource_filter/content/renderer:unit_tests",
      "//components/tracing:unit_tests",
      "//components/translate/content/browser:unit_tests",
      "//components/translate/content/renderer:unit_tests",
      "//components/ukm/content:unit_tests",
      "//components/visitedlink/test:unit_tests",
      "//components/web_cache/browser:unit_tests",
      "//components/web_package:unit_tests",
      "//components/webapps/browser:unit_tests",
      "//components/webapps/services/web_app_origin_association:unit_tests",
      "//components/webcrypto:unit_tests",
      "//components/webrtc_logging/browser:unit_tests",
      "//components/webrtc_logging/common:unit_tests",
    ]

    if (!is_win) {  #!iOS and!Windows
      deps += [
        "//components/cast:unit_tests",
        "//components/cast_streaming:unit_tests",
      ]
    }

    if (!is_fuchsia) {  #!iOS and!Fuchsia
      deps += [
        "//components/crash/content/browser:unit_tests",
        "//components/crash/core/app:unit_tests",
        "//components/data_reduction_proxy/core/browser:unit_tests",
        "//components/data_reduction_proxy/core/common:unit_tests",
      ]
    }

    data_deps += [
      ":components_tests_pak",
      "//third_party/mesa_headers",
      "//ui/resources:ui_test_pak_data",
    ]
  }  # iOS / !iOS

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

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

  if (is_android) {
    deps += [
      "//base:base_java_unittest_support",
      "//components/android_autofill/browser:unit_tests",
      "//components/autofill_assistant/browser:unit_tests",
      "//components/browser_ui/sms/android:unit_tests",
      "//components/cdm/browser:unit_tests",
      "//components/component_updater/android:embedded_component_loader_java",
      "//components/component_updater/android:embedded_component_loader_unittests",
      "//components/content_creation/notes/core:unit_tests",
      "//components/crash/android:java",
      "//components/crash/android:unit_tests",
      "//components/download/internal/common:internal_java",
      "//components/embedder_support/android:native_java_unittests_java",
      "//components/embedder_support/android/metrics:test_support_java",
      "//components/embedder_support/android/metrics:unit_tests",
      "//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/media_router/browser/android:java",
      "//components/media_router/browser/android:test_support_java",
      "//components/messages/android:java",
      "//components/offline_items_collection/core:native_java_unittests_java",
      "//components/paint_preview/browser/android:java",
      "//components/paint_preview/player/android:unit_tests",
      "//components/payments/content/android",
      "//components/permissions/android:java",
      "//components/policy/android:native_test_support_java",
      "//components/policy/android:policy_java",
      "//components/signin/core/browser",
      "//components/signin/public/android:java",
      "//components/signin/public/android:signin_java_test_support",
      "//components/spellcheck/browser/android:java",
      "//components/translate/content/android:unit_tests",
      "//components/variations/android:variations_java",
      "//components/webapps/browser/android:java",
      "//components/webapps/browser/android:unit_tests",
      "//content/public/android:content_java",
      "//content/public/browser",
      "//net",
      "//services/data_decoder/public/cpp/android:safe_json_java",
      "//ui/android:ui_java",
      "//ui/base",
      "//ui/gfx",
    ]
    if (use_v8_context_snapshot) {
      deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
    } else {
      deps += [ "//v8:v8_external_startup_data_assets" ]
    }

    if (enable_chrome_android_internal) {
      data_deps += [ "//clank/build/bot/filters:components_unittests_filters" ]
    }
  } else {  #!is_android
    deps += [ "//components/keep_alive_registry:unit_tests" ]
  }

  # Desktop - only deps.
  if (!is_android && !is_ios) {
    deps += [
      # See comment in components / guest_view / browser / BUILD.gn for why
      # guest_view is currently non - mobile.
      "//components/guest_view/browser:unit_tests",
      "//components/soda:unit_tests",
      "//components/storage_monitor:unit_tests",
      "//components/web_modal:unit_tests",
      "//components/zoom:unit_tests",
    ]
  }

  if (!is_android) {
    deps += [ "//components/feedback:unit_tests" ]
  }

  if (enable_library_cdms) {
    deps += [ "//components/cdm/common:unit_tests" ]
  }

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

  if (is_chromeos_ash) {
    deps += [
      "//components/arc:unit_tests",
      "//components/arc/mojom:unit_tests",
      "//components/desks_storage:unit_tests",
      "//components/guest_os:unit_tests",
      "//components/metrics/structured:unit_tests",
      "//components/ownership:unit_tests",
      "//components/user_manager:unit_tests",
    ]
  }

  if (is_chromeos_ash || is_chromeos_lacros) {
    deps += [ "//components/account_manager_core:unit_tests" ]
  }

  if (is_mac) {
    deps += [ "//components/metal_util:unit_tests" ]
  }

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

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

  if (enable_basic_printing) {
    deps += [ "//components/services/print_compositor:unit_tests" ]
  }
  if (enable_print_preview) {
    deps += [ "//components/pwg_encoder:unit_tests" ]
  }

  # TODO(crbug / 1056278): Enable this on Fuchsia
  if (safe_browsing_mode != 0 && !is_fuchsia) {
    deps += [
      "//components/safe_browsing/content/browser/download:unittests",
      "//components/safe_browsing/content/common:file_type_policies_unittest",
    ]
  }

  if (safe_browsing_mode == 1) {
    deps += [
      "//components/safe_browsing/content/renderer:websocket_sb_handshake_throttle_unittest",
      "//components/safe_browsing/core/browser:ping_manager_unittest",
      "//components/safe_browsing/core/browser:safe_browsing_url_checker_unittest",
      "//components/safe_browsing/core/browser:verdict_cache_manager_unittest",
      "//components/safe_browsing/core/browser/db:unit_tests_local_db",
      "//components/safe_browsing/core/browser/db:v4_test_util",
      "//components/safe_browsing/core/browser/sync:unittests",
      "//components/safe_browsing/core/common:unit_tests",
    ]
  } else if (safe_browsing_mode == 2) {
    deps += [ "//components/safe_browsing/android:unit_tests_mobile" ]
  }

  if (safe_browsing_mode == 1) {
    deps += [
      "//components/safe_browsing/content/browser:unit_tests",
      "//components/safe_browsing/content/renderer/phishing_classifier:unit_tests",
    ]
  } else if (safe_browsing_mode == 2) {
    deps += [ "//components/safe_browsing/content/browser:unit_tests" ]
  }

  if (use_dbus) {
    deps += [
      "//components/dbus/menu:unit_tests",
      "//components/dbus/properties:unit_tests",
    ]
  }

  if (enable_pdf) {
    deps += [
      "//components/pdf/browser:unit_tests",
      "//components/pdf/renderer:unit_tests",
    ]
  }

  # On LaCrOS, tests use ash - chrome as a window manager, thus the dependency.
  # On other platforms, no components should depend on Chrome.
  if (!is_chromeos_lacros) {
    assert_no_deps = [ "//chrome/*" ]
  }

  if (is_ios) {
    assert_no_deps += ios_assert_no_deps
  }
}

repack("components_tests_pak") {
  sources = [
    "$root_gen_dir/components/autofill/core/browser/autofill_address_rewriter_resources.pak",
    "$root_gen_dir/components/components_resources.pak",
    "$root_gen_dir/components/omnibox/resources/omnibox_pedal_synonyms_en-US.pak",
    "$root_gen_dir/components/omnibox/resources/omnibox_resources_en-US.pak",
    "$root_gen_dir/components/strings/components_locale_settings_en-US.pak",
    "$root_gen_dir/components/strings/components_strings_en-US.pak",
  ]

  output = "$root_out_dir/components_tests_resources.pak"
  deps = [
    "//components/autofill/core/browser:autofill_address_rewriter_resources",
    "//components/omnibox/resources:omnibox_pedal_synonyms",
    "//components/omnibox/resources:omnibox_resources",
    "//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",
    ]
    if (use_v8_context_snapshot) {
      deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
    } else {
      deps += [ "//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",
      "//ui/android:ui_full_java",
    ]
    sources = [
      "test/android/browsertests_apk/src/org/chromium/components_browsertests_apk/ComponentsBrowserTestsActivity.java",
      "test/android/browsertests_apk/src/org/chromium/components_browsertests_apk/ComponentsBrowserTestsApplication.java",
    ]
    resources_package = "org.chromium.components_browsertests_apk"
  }

  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
    sources = [
      "//components/test/android/browsertests_apk/res/layout/test_activity.xml",
    ]
  }
}

if (!is_ios) {
  test("components_browsertests") {
    use_xvfb = use_xvfb_in_this_config

    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

    sources = [
      "autofill/content/browser/risk/fingerprint_browsertest.cc",
      "autofill/content/renderer/form_autofill_util_browsertest.cc",
      "autofill/content/renderer/form_cache_browsertest.cc",
      "autofill/content/renderer/html_based_username_detector_browsertest.cc",
      "autofill/content/renderer/password_form_conversion_utils_browsertest.cc",
      "browsing_data/content/browsing_data_helper_browsertest.h",
      "browsing_data/content/cache_storage_helper_browsertest.cc",
      "browsing_data/content/database_helper_browsertest.cc",
      "browsing_data/content/indexed_db_helper_browsertest.cc",
      "browsing_data/content/local_storage_helper_browsertest.cc",
      "content_settings/renderer/content_settings_agent_impl_browsertest.cc",
      "continuous_search/renderer/search_result_extractor_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/distilled_page_js_browsertest.cc",
      "dom_distiller/content/browser/test/dom_distiller_js_browsertest.cc",
      "dom_distiller/content/browser/test/test_util.cc",
      "dom_distiller/content/browser/test/test_util.h",
      "metrics/content/subprocess_metrics_provider_browsertest.cc",
      "optimization_guide/content/renderer/page_text_agent_browsertest.cc",
      "paint_preview/renderer/paint_preview_recorder_browsertest.cc",
      "ukm/content/source_url_recorder_browsertest.cc",
    ]

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

    deps = [
      "//base",
      "//base/test:test_support",
      "//components/autofill/content/browser",
      "//components/autofill/content/renderer",
      "//components/autofill/content/renderer:test_support",
      "//components/autofill/core/browser",
      "//components/browsing_data/content",
      "//components/content_settings/core/common",
      "//components/content_settings/renderer",
      "//components/continuous_search/common/public/mojom",
      "//components/continuous_search/renderer",
      "//components/dom_distiller/content/browser",
      "//components/dom_distiller/core",
      "//components/dom_distiller/core:test_support",
      "//components/error_page/content/browser:browser_tests",
      "//components/metrics:content",
      "//components/optimization_guide/content/renderer",
      "//components/paint_preview/renderer",
      "//components/password_manager/content/browser",
      "//components/performance_manager:browser_tests",
      "//components/security_state/content",
      "//components/security_state/core",
      "//components/shared_highlighting/core/common",
      "//components/strings",
      "//components/ukm:test_support",
      "//components/ukm/content",
      "//content/public/browser",
      "//content/shell:content_shell_lib",
      "//content/test:browsertest_support",
      "//content/test:test_support",
      "//device/bluetooth",
      "//google_apis",
      "//ipc:test_support",
      "//net:test_support",
      "//printing/buildflags",
      "//services/device/public/cpp:test_support",
      "//services/device/public/mojom",
      "//services/service_manager/public/cpp",
      "//services/service_manager/public/mojom",
      "//testing/gmock",
      "//testing/gtest",
      "//ui/base",
      "//ui/native_theme:native_theme",
      "//url",
    ]

    data_deps = [
      ":components_tests_pak",
      "//third_party/mesa_headers",
    ]

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

    if (enable_pdf) {
      sources += [
        "pdf/browser/pdf_web_contents_helper_browsertest.cc",
        "pdf/renderer/pdf_accessibility_tree_browsertest.cc",
      ]
      deps += [
        "//components/pdf/browser",
        "//components/pdf/renderer",
        "//pdf:accessibility",
        "//pdf:features",
      ]
    }

    if (is_android) {
      sources += [
        "autofill_assistant/browser/web/web_controller_browsertest.cc",
        "test/android/browsertests_apk/components_browser_tests_jni_onload.cc",
      ]
      sources -= [ "autofill/content/browser/risk/fingerprint_browsertest.cc" ]
      deps += [
        "//components/autofill_assistant/browser",
        "//components/autofill_assistant/browser:proto",
        "//components/download/internal/common:internal_java",
        "//content/public/test/android:android_test_message_pump_support_java",
        "//content/shell:content_shell_app",
        "//content/test:android_test_message_pump_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 || is_chromeos) {
      # 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) {
      sources += [ "printing/test/print_render_frame_helper_browsertest.cc" ]
      deps += [
        "//build:chromeos_buildflags",
        "//components/printing/common:mojo_interfaces",
        "//components/printing/test:test_support",
      ]
    }

    # On LaCrOS, tests use ash - chrome as a window manager, thus the dependency.
    # On other platforms, no components should depend on Chrome.
    if (!is_chromeos_lacros) {
      assert_no_deps = [ "//chrome/*" ]
    }
  }

  test("components_perftests") {
    sources = [
      "discardable_memory/common/discardable_shared_memory_heap_perftest.cc",
      "leveldb_proto/internal/proto_database_perftest.cc",
      "omnibox/browser/history_quick_provider_performance_unittest.cc",
      "subresource_filter/core/common/perftests/indexed_ruleset_perftest.cc",
      "test/run_all_perftests.cc",
      "url_matcher/substring_set_matcher_perftest.cc",
      "visitedlink/test/visitedlink_perftest.cc",
    ]

    deps = [
      "//base",
      "//components/discardable_memory/common",
      "//components/history/core/test",
      "//components/leveldb_proto",
      "//components/leveldb_proto/testing/proto",
      "//components/omnibox/browser",
      "//components/omnibox/browser:test_support",
      "//components/subresource_filter/core/common",
      "//components/subresource_filter/tools:tools_lib",
      "//components/test:test_support",
      "//components/url_matcher",
      "//components/visitedlink/browser",
      "//testing/perf",
      "//url",
    ]

    data_deps = [
      ":components_tests_pak",
      "//ui/resources:ui_test_pak_data",

      # Needed for isolate script to execute.
      "//testing:run_perf_test",
    ]

    data = [
      "//components/subresource_filter/core/common/perftests/data/",
      "//third_party/subresource-filter-ruleset/data/",
    ]

    if (is_android) {
      deps += [ "//ui/android:ui_java" ]
      if (use_v8_context_snapshot) {
        deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
      } else {
        deps += [ "//v8:v8_external_startup_data_assets" ]
      }
    }

    if (!is_android) {
      sources += [ "safe_browsing/core/browser/db/v4_store_perftest.cc" ]
      deps += [
        "//components/safe_browsing/core/browser/db:v4_protocol_manager_util",
        "//components/safe_browsing/core/browser/db:v4_store",
        "//components/safe_browsing/core/browser/db:v4_test_util",
        "//crypto",
      ]
    }
  }
}
if (is_android) {
  junit_binary("components_junit_tests") {
    deps = [
      "//components/android_autofill/browser/junit:components_autofill_junit_tests",
      "//components/background_task_scheduler:components_background_task_scheduler_junit_tests",
      "//components/browser_ui/bottomsheet/android/internal:junit_tests",
      "//components/browser_ui/client_certificate/android:junit",
      "//components/browser_ui/media/android:junit",
      "//components/browser_ui/photo_picker/android:junit",
      "//components/browser_ui/util/android:junit",
      "//components/browser_ui/webshare/android:junit",
      "//components/browser_ui/widget/android:junit",
      "//components/content_capture/android/junit:components_content_capture_junit_tests",
      "//components/embedder_support/android:components_embedder_support_junit_tests",
      "//components/gcm_driver/android:components_gcm_driver_junit_tests",
      "//components/image_fetcher:junit",
      "//components/installedapp/android:junit",
      "//components/media_router/browser/android:junit",
      "//components/messages/android:junit",
      "//components/messages/android/internal:junit",
      "//components/payments/content/android:junit",
      "//components/permissions/android:components_permissions_junit_tests",
      "//components/policy/android:components_policy_junit_tests",
      "//components/prefs/android:junit",
      "//components/query_tiles:query_tiles_junit_tests",
      "//components/signin/public/android:junit",
      "//components/variations/android:components_variations_junit_tests",
      "//components/webapk/android/libs/client:junit",
      "//components/webapps/browser/android:junit",
    ]
  }
}
