Index: chrome/test/BUILD.gn |
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn |
index c5a23315979d4de080848db776aefea2bc98fb5a..588a4b441928c80d3a3e627f1b44065971a5ed7d 100644 |
--- a/chrome/test/BUILD.gn |
+++ b/chrome/test/BUILD.gn |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import("//build/config/crypto.gni") |
import("//build/config/features.gni") |
import("//build/config/ui.gni") |
import("//build/module_args/v8.gni") |
@@ -102,6 +103,7 @@ source_set("test_support") { |
"//components/ownership", |
"//components/password_manager/core/browser:test_support", |
"//components/pref_registry:test_support", |
+ "//components/rappor:test_support", |
"//components/search_engines:test_support", |
"//components/signin/core/browser:test_support", |
"//components/sync_driver:test_support", |
@@ -134,6 +136,7 @@ source_set("test_support") { |
"//components/captive_portal:test_support", |
"//components/infobars/core", |
"//components/sessions:test_support", |
+ "//components/web_resource:test_support", |
"//google_apis:test_support", |
"//ipc:test_support", |
"//media:test_support", |
@@ -1160,4 +1163,517 @@ if (!is_android && (!is_win || link_chrome_on_windows)) { |
# ] |
#} |
} |
+ |
+ unit_gypi_values = exec_script("//build/gypi_to_gn.py", |
+ [ rebase_path("../chrome_tests_unit.gypi") ], |
+ "scope", |
+ [ "../chrome_tests_unit.gypi" ]) |
+ |
+ test("unit_tests") { |
+ sources = |
+ rebase_path(unit_gypi_values.chrome_unit_tests_sources, ".", "//chrome") |
+ |
+ defines = [] |
+ |
+ deps = [ |
+ # NOTE: New depndencies should generally be added in the OS!="ios" |
+ # dependencies block below, rather than here. |
+ # Unit tests should only depend on: |
+ # 1) everything that the chrome binaries depend on: |
+ "//chrome:browser_dependencies", |
+ "//chrome:child_dependencies", |
+ |
+ # 2) test-specific support libraries: |
+ ":test_support_unit", |
+ "//base/test:test_support", |
+ "//chrome/test:test_support", |
+ "//components/resources", |
+ "//components/content_settings/core/test:test_support", |
+ "//content/test:test_support", |
+ "//content/public/app:both", |
+ "//crypto:platform", |
+ "//crypto:test_support", |
+ "//net", |
+ "//net:test_support", |
+ "//sync:test_support_sync_api", |
+ "//sync:test_support_sync_core", |
+ "//sync:test_support_sync_internal_api", |
+ "//testing/gmock", |
+ "//testing/gtest", |
+ |
+ # 3) anything tests directly depend on |
+ "//base/allocator", |
+ "//chrome:resources", |
+ "//chrome:strings", |
+ "//courgette:courgette_lib", |
+ "//google_apis", |
+ "//skia", |
+ "//third_party/cacheinvalidation", |
+ "//third_party/icu", |
+ "//third_party/libxml", |
+ "//ui/accelerometer", |
+ "//ui/base:test_support", |
+ "//ui/gfx:test_support", |
+ "//ui/resources", |
+ ] |
+ data_deps = [] |
+ |
+ # TODO(GYP) Windows stuff |
+ # ['incremental_chrome_dll==1', { |
+ # 'UseLibraryDependencyInputs': "true", |
+ |
+ if (!is_ios) { |
+ deps += [ |
+ "//components/autofill/content/browser:test_support", |
+ "//components/metrics/proto", |
+ "//components/data_reduction_proxy/core/browser:test_support", |
+ "//components/webdata_services:test_support", |
+ "//components/strings", |
+ "//content/app/resources", |
+ "//gpu:test_support", |
+ "//media:test_support", |
+ |
+ #'../ppapi/ppapi_internal.gyp:ppapi_unittest_shared', TODO(GYP) |
+ "//third_party/leveldatabase", |
+ "//third_party/libaddressinput", |
+ "//third_party/libjingle", |
+ "//third_party/libphonenumber", |
+ "//tools/json_schema_compiler/test", |
+ "//ui/gl", |
+ "//v8", |
+ ] |
+ } |
+ |
+ if (is_android) { |
+ deps -= [ "//third_party/libaddressinput" ] |
+ |
+ # Some android targets still depend on --gc-sections to link. |
+ # TODO: remove --gc-sections for Debug builds (crbug.com/159847). |
+ ldflags = [ "-Wl,--gc-sections" ] |
+ deps += [ "//testing/android:native_test_native_code" ] |
+ } else { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_non_android_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ |
+ if (is_ios || is_chromeos) { |
+ sources -= |
+ [ "../browser/metrics/signin_status_metrics_provider_unittest.cc" ] |
+ } |
+ if (enable_background) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_background_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_spellcheck) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_spellchecker_sources, |
+ ".", |
+ "//chrome") |
+ if (is_mac && !is_ios) { |
+ deps += [ "//third_party/hunspell" ] |
+ } |
+ } |
+ |
+ if (enable_one_click_signin) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_one_click_signin_sources, |
+ ".", |
+ "//chrome") |
+ if (is_chromeos) { |
+ sources -= [ |
+ "../browser/ui/sync/one_click_signin_helper_unittest.cc", |
+ "../browser/ui/sync/one_click_signin_sync_starter_unittest.cc", |
+ ] |
+ } |
+ if (!toolkit_views) { |
+ sources -= [ "../browser/ui/views/sync/one_click_signin_bubble_view_unittest.cc" ] |
+ } |
+ } |
+ if (enable_nacl) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_nacl_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_extensions) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_extensions_sources, |
+ ".", |
+ "//chrome") |
+ deps += [ |
+ "//chrome/common/extensions/api", |
+ "//extensions:extensions_resources", |
+ "//extensions/strings", |
+ ] |
+ if (enable_configuration_policy) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_extensions_policy_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (!is_chromeos) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_extensions_non_chromeos_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ } |
+ if (toolkit_views) { |
+ deps += [ |
+ "//components/web_modal:test_support", |
+ "//ui/views", |
+ "//ui/views:test_support", |
+ ] |
+ if (!is_mac) { |
+ # TODO(tapted): Enable toolkit-views unit_tests on Mac when their |
+ # respective implementations are linked in. http://crbug.com/412234. |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_views_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ } |
+ if (use_ash) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_ash_sources, |
+ ".", |
+ "//chrome") |
+ deps += [ |
+ "//ash:test_support", |
+ "//ash/resources", |
+ "//ash/strings", |
+ ] |
+ |
+ # We eventually want to compile both in Win Aura builds, see |
+ # http://crbug.com/155545. |
+ if (!is_win) { |
+ sources -= [ "../browser/ui/window_sizer/window_sizer_unittest.cc" ] |
+ } |
+ } |
+ if (use_aura) { |
+ sources += [ "//ui/views/controls/webview/webview_unittest.cc" ] |
+ deps += [ |
+ "//ui/wm", |
+ "//ui/aura:test_support", |
+ "//ui/views:test_support", |
+ ] |
+ } |
+ if (!is_chromeos && is_linux) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_desktop_linux_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (!is_chromeos && !use_ozone && is_linux) { |
+ deps += [ |
+ "//chrome/browser/ui/libgtk2ui", |
+ "//build/config/linux:gio", |
+ ] |
+ if (!is_component_build) { |
+ # TODO(erg): This file does not compile in shared library mode because |
+ # it is reaching into the internals of libgtk2ui, which shouldn't be |
+ # linked with the rest of chrome. This should either be fixed by |
+ # creating a separate unit test target, or by deleting the test. |
+ sources += [ "../browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2_unittest.cc" ] |
+ } |
+ } |
+ |
+ if (enable_task_manager) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_task_manager_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_mdns) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_mdns_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_service_discovery) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_service_discovery_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_configuration_policy) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_configuration_policy_sources, |
+ ".", |
+ "//chrome") |
+ if (is_chromeos) { |
+ sources -= |
+ [ "../browser/policy/cloud/user_policy_signin_service_unittest.cc" ] |
+ } else if (is_android) { |
+ sources -= [ "../browser/policy/policy_path_parser_unittest.cc" ] |
+ } |
+ if (!is_android && !is_ios && !is_chromeos) { |
+ sources += |
+ [ "../browser/net/disk_cache_dir_policy_handler_unittest.cc" ] |
+ } |
+ if (!is_android && !is_ios) { |
+ sources += |
+ [ "../browser/download/download_dir_policy_handler_unittest.cc" ] |
+ } |
+ } |
+ if (enable_web_speech) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_speech_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_notifications) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_notifications_sources, |
+ ".", |
+ "//chrome") |
+ if (is_android) { |
+ sources -= [ |
+ # Android does not use the Message Center notification system. |
+ "../browser/notifications/message_center_notifications_unittest.cc", |
+ "../browser/notifications/message_center_settings_controller_unittest.cc", |
+ ] |
+ } |
+ } |
+ if (safe_browsing_mode == 1) { |
+ # TODO(sgurun): enable tests for safe_browsing==2. |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_full_safe_browsing_sources, |
+ ".", |
+ "//chrome") |
+ defines += [ "FULL_SAFE_BROWSING" ] |
+ if (is_chromeos) { |
+ sources -= [ "../browser/safe_browsing/download_protection_service_unittest.cc" ] |
+ } else if (is_android) { |
+ sources -= [ |
+ # Android doesn't support download feedbacks. |
+ "../browser/safe_browsing/download_feedback_unittest.cc", |
+ "../browser/safe_browsing/download_feedback_service_unittest.cc", |
+ "../browser/safe_browsing/download_protection_service_unittest.cc", |
+ "../browser/safe_browsing/two_phase_uploader_unittest.cc", |
+ ] |
+ } |
+ } |
+ if (enable_autofill_dialog && !is_android) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_autofill_dialog_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_plugins) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_plugins_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_print_preview) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_print_preview_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_captive_portal_detection) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_captive_portal_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_session_service) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_session_service_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_webrtc) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_webrtc_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (is_chromeos) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_chromeos_sources, |
+ ".", |
+ "//chrome") |
+ deps += [ |
+ "//ash/resources", |
+ "//ui/chromeos/resources", |
+ ] |
+ sources -= [ |
+ "../browser/signin/signin_global_error_unittest.cc", |
+ "../browser/signin/signin_manager_unittest.cc", |
+ "../browser/signin/signin_names_io_thread_unittest.cc", |
+ "../browser/ui/views/app_list/linux/app_list_linux_unittest.cc", |
+ "../browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc", |
+ ] |
+ } |
+ if (use_x11) { |
+ deps += [ "//ui/events/devices" ] |
+ data_deps += [ "//tools/xdisplaycheck" ] |
+ } else { |
+ sources -= [ "../browser/password_manager/password_store_x_unittest.cc" ] |
+ } |
+ if (cld_version == 0 || cld_version == 2) { |
+ # Unit tests should be independent of the CLD2 access mechanism, just use |
+ # static for simplicity. |
+ deps += [ "//third_party/cld_2:cld2_static" ] |
+ } |
+ if (is_desktop_linux && cpu_arch == "x64") { |
+ # Only add this test for 64 bit builds because otherwise we need the 32 |
+ # bit library on 64 bit systems when running this test. |
+ sources += |
+ [ "../browser/password_manager/native_backend_gnome_x_unittest.cc" ] |
+ configs += [ |
+ "//chrome/browser:gnome_keyring", |
+ "//chrome/browser:gnome_keyring_direct", |
+ ] |
+ } |
+ if (is_linux && !is_chromeos) { |
+ sources += |
+ [ "../browser/password_manager/native_backend_libsecret_unittest.cc" ] |
+ } |
+ if (is_linux && use_aura) { |
+ deps += [ |
+ "//dbus", |
+ "//dbus:test_support", |
+ "//ui/aura:test_support", |
+ ] |
+ } |
+ if (is_linux && is_chrome_branded && cpu_arch == "x86") { |
+ ldflags = [ "-Wl,--strip-debug" ] |
+ } |
+ if (is_mac) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_mac_sources, |
+ ".", |
+ "//chrome") |
+ sources -= [ |
+ "../browser/ui/tests/ui_gfx_image_unittest.cc", |
+ "../tools/convert_dict/convert_dict_unittest.cc", |
+ "../renderer/spellchecker/spellcheck_provider_hunspell_unittest.cc", |
+ ] |
+ |
+ # The test fetches resources which means Mac need the app bundle to exist |
+ # on disk so it can pull from it. |
+ deps += [ |
+ "//third_party/google_toolbox_for_mac", |
+ "//third_party/ocmock", |
+ ] |
+ |
+ # TODO(mark): We really want this for all non-static library targets, |
+ # but when we tried to pull it up to the common.gypi level, it broke |
+ # other things like the ui and startup tests. *shrug* |
+ ldflags = [ "-Wl,-ObjC" ] |
+ } |
+ if (!is_mac && !is_ios) { |
+ deps += [ |
+ "//third_party/hunspell", |
+ "//chrome:packed_extra_resources", |
+ "//chrome:packed_resources", |
+ "//chrome/tools/convert_dict:lib", |
+ ] |
+ } |
+ if (is_win || is_mac) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_win_mac_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (is_win || is_mac || is_chromeos) { |
+ sources += [ "../common/extensions/api/networking_private/networking_private_crypto_unittest.cc" ] |
+ } |
+ if (enable_rlz) { |
+ deps += [ "//rlz:test_support" ] |
+ } else { |
+ sources -= [ "../browser/rlz/rlz_unittest.cc" ] |
+ } |
+ if (is_win) { |
+ if (!is_component_build) { |
+ # Unit_tests pdb files can get too big when incremental linking is |
+ # on, disabling for this target. |
+ #'LinkIncremental': '<(msvs_debug_link_nonincremental)', TODO(GYP) |
+ } |
+ |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_win_sources, |
+ ".", |
+ "//chrome") |
+ sources += [ |
+ # TODO: It would be nice to have these pulled in |
+ # automatically from direct_dependent_settings in |
+ # their various targets (net.gyp:net_resources, etc.), |
+ # but that causes errors in other targets when |
+ # resulting .res files get referenced multiple times. |
+ #'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc', TODO(GYP) |
+ #'<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.rc', TODO(GYP) |
+ #'<(SHARED_INTERMEDIATE_DIR)/ui/resources/ui_unscaled_resources.rc', TODO(GYP) |
+ ] |
+ |
+ deps += [ |
+ #'browser/safe_browsing/verifier_test/verifier_unittest.gyp:verifier_test_dll_1', TODO(GYP) |
+ #'browser/safe_browsing/verifier_test/verifier_unittest.gyp:verifier_test_dll_2', TODO(GYP) |
+ #'chrome_version_resources', TODO(GYP) |
+ "//chrome_elf:blacklist_test_dll_1", |
+ "//third_party/iaccessible2", |
+ "//third_party/isimpledom", |
+ "//third_party/wtl", |
+ ] |
+ |
+ libs = [ |
+ "comsupp.lib", |
+ "oleacc.lib", |
+ "rpcrt4.lib", |
+ "urlmon.lib", |
+ "winmm.lib", |
+ ] |
+ } |
+ if (is_android || is_ios) { |
+ sources -= [ |
+ "../browser/devtools/device/webrtc/devtools_bridge_instances_request_unittest.cc", |
+ "../browser/ui/sync/sync_promo_ui_unittest.cc", |
+ ] |
+ } else { |
+ sources -= [ |
+ "../browser/metrics/variations/variations_request_scheduler_mobile_unittest.cc", |
+ "../browser/web_resource/promo_resource_service_mobile_ntp_unittest.cc", |
+ ] |
+ deps += [ "//chrome/tools/profile_reset:jtl_compiler_lib" ] |
+ } |
+ if (!is_android && !is_chromeos) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_non_android_or_chromeos_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (enable_themes) { |
+ sources += rebase_path(unit_gypi_values.chrome_unit_tests_themes_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (!is_android && (use_nss_certs || use_openssl_certs)) { |
+ sources += [ "../common/net/x509_certificate_model_unittest.cc" ] |
+ } |
+ if (enable_supervised_users) { |
+ sources += rebase_path( |
+ unit_gypi_values.chrome_unit_tests_supervised_user_sources, |
+ ".", |
+ "//chrome") |
+ } |
+ if (safe_browsing_mode == 1 && enable_extensions) { |
+ sources += [ "../browser/extensions/blacklist_unittest.cc" ] |
+ } |
+ if (cld_version == 1) { |
+ sources += [ "//third_party/cld/encodings/compact_lang_det/compact_lang_det_unittest_small.cc" ] |
+ defines += [ "CLD_WINDOWS" ] |
+ deps += [ "//third_party/cld" ] |
+ } |
+ if (enable_app_list) { |
+ sources += |
+ rebase_path(unit_gypi_values.chrome_unit_tests_app_list_sources, |
+ ".", |
+ "//chrome") |
+ deps += [ "//ui/app_list:test_support" ] |
+ } |
+ if (use_ozone) { |
+ # crbug.com/354036 |
+ sources -= [ "browser/chromeos/events/event_rewriter_unittest.cc" ] |
+ } |
+ if (!enable_plugin_installation) { |
+ sources -= [ "../browser/plugins/plugin_installer_unittest.cc" ] |
+ } |
+ } |
} |