|  | # Copyright (c) 2013 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/compiled_action.gni") | 
|  | import("//build/config/ui.gni") | 
|  | import("//build/config/nacl/config.gni") | 
|  |  | 
|  | if (is_android) { | 
|  | import("//build/config/android/rules.gni") | 
|  | } | 
|  |  | 
|  | static_library("test_config") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "test_switches.cc", | 
|  | "test_switches.h", | 
|  | "test_timeouts.cc", | 
|  | "test_timeouts.h", | 
|  | ] | 
|  | deps = [ | 
|  | "//base", | 
|  | ] | 
|  | } | 
|  |  | 
|  | static_library("test_support") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "../trace_event/trace_config_memory_test_util.h", | 
|  | "android/java_handler_thread_helpers.cc", | 
|  | "android/java_handler_thread_helpers.h", | 
|  | "android/url_utils.cc", | 
|  | "android/url_utils.h", | 
|  | "bind_test_util.h", | 
|  | "copy_only_int.h", | 
|  | "fuzzed_data_provider.cc", | 
|  | "fuzzed_data_provider.h", | 
|  | "gtest_util.cc", | 
|  | "gtest_util.h", | 
|  | "gtest_xml_unittest_result_printer.cc", | 
|  | "gtest_xml_unittest_result_printer.h", | 
|  | "gtest_xml_util.cc", | 
|  | "gtest_xml_util.h", | 
|  | "histogram_tester.cc", | 
|  | "histogram_tester.h", | 
|  | "icu_test_util.cc", | 
|  | "icu_test_util.h", | 
|  | "ios/wait_util.h", | 
|  | "ios/wait_util.mm", | 
|  | "launcher/test_result.cc", | 
|  | "launcher/test_result.h", | 
|  | "launcher/test_results_tracker.h", | 
|  | "launcher/unit_test_launcher.h", | 
|  | "mock_callback.h", | 
|  | "mock_chrome_application_mac.h", | 
|  | "mock_chrome_application_mac.mm", | 
|  | "mock_devices_changed_observer.cc", | 
|  | "mock_devices_changed_observer.h", | 
|  | "mock_entropy_provider.cc", | 
|  | "mock_entropy_provider.h", | 
|  | "mock_log.cc", | 
|  | "mock_log.h", | 
|  | "move_only_int.h", | 
|  | "multiprocess_test.h", | 
|  | "multiprocess_test_android.cc", | 
|  | "null_task_runner.cc", | 
|  | "null_task_runner.h", | 
|  | "perf_log.cc", | 
|  | "perf_log.h", | 
|  | "perf_test_suite.cc", | 
|  | "perf_test_suite.h", | 
|  | "perf_time_logger.cc", | 
|  | "perf_time_logger.h", | 
|  | "power_monitor_test_base.cc", | 
|  | "power_monitor_test_base.h", | 
|  | "scoped_command_line.cc", | 
|  | "scoped_command_line.h", | 
|  | "scoped_environment_variable_override.cc", | 
|  | "scoped_environment_variable_override.h", | 
|  | "scoped_feature_list.cc", | 
|  | "scoped_feature_list.h", | 
|  | "scoped_mock_time_message_loop_task_runner.cc", | 
|  | "scoped_mock_time_message_loop_task_runner.h", | 
|  | "scoped_path_override.cc", | 
|  | "scoped_path_override.h", | 
|  | "scoped_task_environment.cc", | 
|  | "scoped_task_environment.h", | 
|  | "sequenced_task_runner_test_template.cc", | 
|  | "sequenced_task_runner_test_template.h", | 
|  | "simple_test_clock.cc", | 
|  | "simple_test_clock.h", | 
|  | "simple_test_tick_clock.cc", | 
|  | "simple_test_tick_clock.h", | 
|  | "task_runner_test_template.cc", | 
|  | "task_runner_test_template.h", | 
|  | "test_discardable_memory_allocator.cc", | 
|  | "test_discardable_memory_allocator.h", | 
|  | "test_file_util.cc", | 
|  | "test_file_util.h", | 
|  | "test_file_util_android.cc", | 
|  | "test_file_util_linux.cc", | 
|  | "test_file_util_mac.cc", | 
|  | "test_file_util_win.cc", | 
|  | "test_io_thread.cc", | 
|  | "test_io_thread.h", | 
|  | "test_listener_ios.h", | 
|  | "test_listener_ios.mm", | 
|  | "test_message_loop.cc", | 
|  | "test_message_loop.h", | 
|  | "test_mock_time_task_runner.cc", | 
|  | "test_mock_time_task_runner.h", | 
|  | "test_pending_task.cc", | 
|  | "test_pending_task.h", | 
|  | "test_reg_util_win.cc", | 
|  | "test_reg_util_win.h", | 
|  | "test_shared_memory_util.cc", | 
|  | "test_shared_memory_util.h", | 
|  | "test_shortcut_win.cc", | 
|  | "test_shortcut_win.h", | 
|  | "test_simple_task_runner.cc", | 
|  | "test_simple_task_runner.h", | 
|  | "test_suite.cc", | 
|  | "test_suite.h", | 
|  | "test_support_android.cc", | 
|  | "test_support_android.h", | 
|  | "test_support_ios.h", | 
|  | "test_support_ios.mm", | 
|  | "test_ui_thread_android.cc", | 
|  | "test_ui_thread_android.h", | 
|  | "thread_test_helper.cc", | 
|  | "thread_test_helper.h", | 
|  | "trace_event_analyzer.cc", | 
|  | "trace_event_analyzer.h", | 
|  | "trace_to_file.cc", | 
|  | "trace_to_file.h", | 
|  | "user_action_tester.cc", | 
|  | "user_action_tester.h", | 
|  | "values_test_util.cc", | 
|  | "values_test_util.h", | 
|  | ] | 
|  |  | 
|  | if (is_ios) { | 
|  | sources += [ "launcher/unit_test_launcher_ios.cc" ] | 
|  | } else if (!is_nacl_nonsfi) { | 
|  | sources += [ | 
|  | "launcher/test_launcher.cc", | 
|  | "launcher/test_launcher.h", | 
|  | "launcher/test_launcher_tracer.cc", | 
|  | "launcher/test_launcher_tracer.h", | 
|  | "launcher/test_results_tracker.cc", | 
|  | "launcher/unit_test_launcher.cc", | 
|  | "multiprocess_test.cc", | 
|  | ] | 
|  | } | 
|  |  | 
|  | configs += [ "//build/config:precompiled_headers" ] | 
|  |  | 
|  | data = [ | 
|  | # The isolate needs this script for setting up the test. It's not actually | 
|  | # needed to run this target locally. | 
|  | "//testing/test_env.py", | 
|  | ] | 
|  |  | 
|  | public_deps = [ | 
|  | ":test_config", | 
|  | "//base", | 
|  | "//base:base_static", | 
|  | "//base:i18n", | 
|  | ] | 
|  | deps = [ | 
|  | "//base/third_party/dynamic_annotations", | 
|  | "//testing/gmock", | 
|  | "//testing/gtest", | 
|  | "//third_party/icu:icuuc", | 
|  | "//third_party/libxml", | 
|  | ] | 
|  |  | 
|  | if (is_posix || is_fuchsia) { | 
|  | sources += [ | 
|  | "scoped_locale.cc", | 
|  | "scoped_locale.h", | 
|  | "test_file_util_posix.cc", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_linux) { | 
|  | public_deps += [ ":fontconfig_util_linux" ] | 
|  | data_deps = [ | 
|  | "//third_party/test_fonts", | 
|  | ] | 
|  | if (current_toolchain == host_toolchain) { | 
|  | data_deps += [ ":do_generate_fontconfig_caches" ] | 
|  | data += [ "$root_out_dir/fontconfig_caches/" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | if (is_ios) { | 
|  | set_sources_assignment_filter([]) | 
|  | sources += [ "test_file_util_mac.cc" ] | 
|  | set_sources_assignment_filter(sources_assignment_filter) | 
|  | } | 
|  |  | 
|  | if (is_mac) { | 
|  | libs = [ "AppKit.framework" ] | 
|  | } | 
|  |  | 
|  | if (is_android) { | 
|  | set_sources_assignment_filter([]) | 
|  | sources += [ "test_file_util_linux.cc" ] | 
|  | set_sources_assignment_filter(sources_assignment_filter) | 
|  | deps += [ | 
|  | ":base_unittests_jni_headers", | 
|  | ":test_support_jni_headers", | 
|  | ] | 
|  | public_deps += [ ":test_support_java" ] | 
|  | } | 
|  |  | 
|  | if (is_nacl_nonsfi) { | 
|  | sources += [ | 
|  | "launcher/test_launcher.h", | 
|  | "launcher/test_result.h", | 
|  | "launcher/unit_test_launcher.h", | 
|  | "launcher/unit_test_launcher_nacl_nonsfi.cc", | 
|  | ] | 
|  | sources -= [ | 
|  | "gtest_xml_util.cc", | 
|  | "gtest_xml_util.h", | 
|  | "icu_test_util.cc", | 
|  | "icu_test_util.h", | 
|  | "perf_test_suite.cc", | 
|  | "perf_test_suite.h", | 
|  | "scoped_path_override.cc", | 
|  | "scoped_path_override.h", | 
|  | "test_discardable_memory_allocator.cc", | 
|  | "test_discardable_memory_allocator.h", | 
|  | "test_file_util.cc", | 
|  | "test_file_util.h", | 
|  | "test_file_util_posix.cc", | 
|  | "test_suite.cc", | 
|  | "test_suite.h", | 
|  | "trace_to_file.cc", | 
|  | "trace_to_file.h", | 
|  | ] | 
|  | public_deps -= [ "//base:i18n" ] | 
|  | deps -= [ | 
|  | "//third_party/icu:icuuc", | 
|  | "//third_party/libxml", | 
|  | ] | 
|  | } | 
|  | } | 
|  |  | 
|  | config("perf_test_config") { | 
|  | defines = [ "PERF_TEST" ] | 
|  | } | 
|  |  | 
|  | # This is a source set instead of a static library because it seems like some | 
|  | # linkers get confused when "main" is in a static library, and if you link to | 
|  | # this, you always want the object file anyway. | 
|  | source_set("test_support_perf") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "run_all_perftests.cc", | 
|  | ] | 
|  | deps = [ | 
|  | ":test_support", | 
|  | "//base", | 
|  | "//testing/gtest", | 
|  | ] | 
|  |  | 
|  | public_configs = [ ":perf_test_config" ] | 
|  | } | 
|  |  | 
|  | static_library("test_launcher_nacl_nonsfi") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "launcher/test_launcher_nacl_nonsfi.cc", | 
|  | "launcher/test_launcher_nacl_nonsfi.h", | 
|  | ] | 
|  | deps = [ | 
|  | ":test_support", | 
|  | ] | 
|  | } | 
|  |  | 
|  | static_library("run_all_unittests") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "run_all_unittests.cc", | 
|  | ] | 
|  | deps = [ | 
|  | ":test_support", | 
|  | ] | 
|  | } | 
|  |  | 
|  | # These sources are linked into both the base_unittests binary and the test | 
|  | # shared library target below. | 
|  | source_set("native_library_test_utils") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "native_library_test_utils.cc", | 
|  | "native_library_test_utils.h", | 
|  | ] | 
|  | } | 
|  |  | 
|  | # This shared library is dynamically loaded by NativeLibrary unittests. | 
|  | shared_library("test_shared_library") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "test_shared_library.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":native_library_test_utils", | 
|  | ] | 
|  | } | 
|  |  | 
|  | static_library("run_all_base_unittests") { | 
|  | # Only targets in base should depend on this, targets outside base | 
|  | # should depend on run_all_unittests above. | 
|  | visibility = [ "//base/*" ] | 
|  | testonly = true | 
|  | sources = [ | 
|  | "run_all_base_unittests.cc", | 
|  | ] | 
|  | deps = [ | 
|  | ":test_support", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_linux) { | 
|  | source_set("fontconfig_util_linux") { | 
|  | sources = [ | 
|  | "fontconfig_util_linux.cc", | 
|  | "fontconfig_util_linux.h", | 
|  | ] | 
|  | deps = [ | 
|  | "//base", | 
|  | "//third_party/fontconfig", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (current_toolchain == host_toolchain) { | 
|  | executable("generate_fontconfig_caches") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "generate_fontconfig_caches.cc", | 
|  | ] | 
|  | deps = [ | 
|  | ":fontconfig_util_linux", | 
|  | "//base", | 
|  | "//build/config:exe_and_shlib_deps", | 
|  | ] | 
|  | } | 
|  |  | 
|  | compiled_action("do_generate_fontconfig_caches") { | 
|  | testonly = true | 
|  | tool = ":generate_fontconfig_caches" | 
|  | data_deps = [ | 
|  | "//third_party/test_fonts", | 
|  | ] | 
|  | args = [] | 
|  | outputs = [ | 
|  | "$root_out_dir/fontconfig_caches/STAMP", | 
|  | ] | 
|  | } | 
|  | } | 
|  |  | 
|  | shared_library("malloc_wrapper") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "malloc_wrapper.cc", | 
|  | ] | 
|  | deps = [ | 
|  | "//base", | 
|  | "//build/config:exe_and_shlib_deps", | 
|  | ] | 
|  | } | 
|  | } | 
|  |  | 
|  | if (is_android) { | 
|  | generate_jni("base_unittests_jni_headers") { | 
|  | sources = [ | 
|  | "android/java/src/org/chromium/base/ContentUriTestUtils.java", | 
|  | "android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java", | 
|  | "android/java/src/org/chromium/base/TestUiThread.java", | 
|  | ] | 
|  | jni_package = "base" | 
|  | } | 
|  |  | 
|  | generate_jni("test_support_jni_headers") { | 
|  | sources = [ | 
|  | "android/java/src/org/chromium/base/MainReturnCodeResult.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java", | 
|  | "android/javatests/src/org/chromium/base/test/util/UrlUtils.java", | 
|  | ] | 
|  | jni_package = "base" | 
|  | } | 
|  |  | 
|  | android_library("test_support_java") { | 
|  | testonly = true | 
|  | deps = [ | 
|  | "//base:base_java", | 
|  | "//testing/android/native_test:native_main_runner_java", | 
|  | "//third_party/android_tools:android_support_annotations_java", | 
|  | "//third_party/jsr-305:jsr_305_javalib", | 
|  | ] | 
|  | srcjar_deps = [ ":test_support_java_aidl" ] | 
|  | java_files = [ | 
|  | "android/java/src/org/chromium/base/MainReturnCodeResult.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientService.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientService0.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientService1.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientService2.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientService3.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientService4.java", | 
|  | "android/java/src/org/chromium/base/MultiprocessTestClientServiceDelegate.java", | 
|  | ] | 
|  | } | 
|  |  | 
|  | android_aidl("test_support_java_aidl") { | 
|  | testonly = true | 
|  | import_include = [ | 
|  | "android/java/src", | 
|  | "//base/android/java/src", | 
|  | ] | 
|  | sources = [ | 
|  | "android/java/src/org/chromium/base/ITestCallback.aidl", | 
|  | "android/java/src/org/chromium/base/ITestController.aidl", | 
|  | ] | 
|  | } | 
|  | } | 
|  |  | 
|  | # Trivial executable which outputs space-delimited argv to stdout, | 
|  | # used for testing. | 
|  | executable("test_child_process") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "test_child_process.cc", | 
|  | ] | 
|  | deps = [ | 
|  | "//build/config:exe_and_shlib_deps", | 
|  | ] | 
|  | } |