| # 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/task_scheduler_util/variations: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" ] | 
 |     } | 
 |   } | 
 | } |