# 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.

# This is the root build file for GN. GN will start processing by loading this
# file, and recursively load all dependencies until all dependencies are either
# resolved or known not to exist (which will cause the build to fail). So if
# you add a new build file, there must be some path of dependencies from this
# file to your new one or GN won't know about it.

import("//build/config/compiler/compiler.gni")
import("//build/config/features.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni")
import("//build/util/generate_wrapper.gni")
import("//components/nacl/features.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//extensions/buildflags/buildflags.gni")
import("//gpu/vulkan/features.gni")
import("//media/gpu/args.gni")
import("//media/media_options.gni")
import("//remoting/remoting_enable.gni")
import("//third_party/openh264/openh264_args.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")
import("//ui/base/ui_features.gni")
import("//ui/ozone/ozone.gni")
import("//ui/webui/webui_features.gni")
import("//v8/gni/snapshot_toolchain.gni")
import("//v8/gni/v8.gni")

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

declare_args() {
  # A list of extra dependencies to add to the root target. This allows a
  # checkout to add additional targets without explicitly changing any checked-
  # in files.
  root_extra_deps = []
}

if (is_official_build) {
  # An official (maximally optimized!) component (optimized for build times)
  # build doesn't make sense and usually doesn't work.
  assert(!is_component_build)
}

# This file defines the following two main targets:
#
# "gn_all" is used to create explicit dependencies from the root BUILD.gn to
# each top-level component that we wish to include when building everything via
# "all". This is required since the set of targets built by "all" is determined
# automatically based on reachability from the root BUILD.gn (for details, see
# crbug.com/503241). Builders should typically use "all", or list targets
# explicitly, rather than relying on "gn_all".
#
# "gn_visibility": targets that are normally not visible to top-level targets,
# but are built anyway by "all". Since we don't want any such targets, we have
# this placeholder to make sure hidden targets that aren't otherwise depended
# on yet are accounted for.

group("gn_all") {
  testonly = true

  deps = [
    ":gn_visibility",
    "//base:base_perftests",
    "//base:base_unittests",
    "//base/util:base_util_unittests",
    "//chrome/installer",
    "//chrome/updater",
    "//components/gwp_asan:gwp_asan_unittests",
    "//net:net_unittests",
    "//services:services_unittests",
    "//services/service_manager/public/cpp",
    "//skia:skia_unittests",
    "//sql:sql_unittests",
    "//third_party/flatbuffers:flatbuffers_unittests",
    "//tools/binary_size:binary_size_trybot_py",
    "//tools/ipc_fuzzer:ipc_fuzzer_all",
    "//tools/metrics:metrics_metadata",
    "//ui/base:ui_base_unittests",
    "//ui/gfx:gfx_unittests",
    "//url:url_unittests",
  ]

  if (!is_android && !is_chromecast) {
    deps += [
      "//crypto:crypto_unittests",
      "//google_apis/gcm:gcm_unit_tests",
    ]
  }

  if (!is_fuchsia) {
    deps += [ "//components:components_unittests" ]
  }

  if (closure_compile) {
    deps += [ ":webui_closure_compile" ]
  }

  if (!is_ios && !is_android && !is_chromecast && !is_fuchsia) {
    deps += [
      "//chrome",
      "//chrome/test:browser_tests",
      "//chrome/test:interactive_ui_tests",
      "//chrome/test:sync_integration_tests",
      "//chrome/test/chromedriver:chromedriver_unittests",
      "//components/subresource_filter/tools:subresource_filter_tools",
      "//components/zucchini:zucchini",
      "//components/zucchini:zucchini_unittests",
      "//gpu/gles2_conform_support:gles2_conform_test",
      "//gpu/khronos_glcts_support:khronos_glcts_test",
      "//jingle:jingle_unittests",
      "//net:hpack_example_generator",
      "//ppapi:ppapi_unittests",
      "//ppapi/examples/2d",
      "//ppapi/examples/audio",
      "//ppapi/examples/audio_input",
      "//ppapi/examples/crxfs",
      "//ppapi/examples/enumerate_devices",
      "//ppapi/examples/file_chooser",
      "//ppapi/examples/flash_topmost",
      "//ppapi/examples/font",
      "//ppapi/examples/gamepad",
      "//ppapi/examples/gles2",
      "//ppapi/examples/gles2_spinning_cube",
      "//ppapi/examples/ime",
      "//ppapi/examples/input",
      "//ppapi/examples/media_stream_audio",
      "//ppapi/examples/media_stream_video",
      "//ppapi/examples/mouse_cursor",
      "//ppapi/examples/mouse_lock",
      "//ppapi/examples/printing",
      "//ppapi/examples/scaling",
      "//ppapi/examples/scripting",
      "//ppapi/examples/stub",
      "//ppapi/examples/threading",
      "//ppapi/examples/url_loader",
      "//ppapi/examples/video_capture",
      "//ppapi/examples/video_decode",
      "//ppapi/examples/video_encode",
      "//printing:printing_unittests",
      "//third_party/SPIRV-Tools/src:SPIRV-Tools",
      "//third_party/SPIRV-Tools/src/test/fuzzers",
      "//third_party/cacheinvalidation:cacheinvalidation_unittests",
      "//third_party/dawn:dawn_end2end_tests_temp_group",
      "//third_party/dawn:dawn_unittests_temp_group",
      "//third_party/pdfium/samples:pdfium_test",
      "//third_party/webrtc/rtc_tools:frame_analyzer",
      "//tools/perf/clear_system_cache",
      "//tools/polymer:polymer_tools_python_unittests",
      "//ui/accessibility:accessibility_unittests",
      "//ui/accessibility/extensions",
    ]
  }

  if (!is_ios) {
    deps += [
      "//cc:cc_unittests",
      "//components/policy:policy_templates",
      "//components/ui_devtools/viz",
      "//components/url_formatter/tools:format_url",
      "//components/viz:viz_perftests",
      "//components/viz:viz_unittests",
      "//components/viz/common:viz_benchmark",
      "//content/shell:content_shell",
      "//content/test:content_browsertests",
      "//content/test:content_perftests",
      "//content/test:content_unittests",
      "//gpu:gpu_unittests",
      "//ipc:ipc_tests",
      "//media:media_unittests",
      "//media/midi:midi_unittests",
      "//media/mojo:media_mojo_unittests",
      "//mojo",
      "//mojo:mojo_unittests",
      "//net:net_perftests",
      "//storage:storage_unittests",
      "//third_party/angle/src/tests:angle_end2end_tests",
      "//third_party/angle/src/tests:angle_unittests",
      "//third_party/blink/common:blink_common_unittests",
      "//third_party/blink/renderer/controller:blink_unittests",
      "//third_party/blink/renderer/platform:blink_platform_unittests",
      "//third_party/blink/renderer/platform/heap:blink_heap_unittests",
      "//third_party/blink/renderer/platform/wtf:wtf_unittests",
      "//tools/imagediff",
      "//ui/display:display_unittests",
      "//ui/events:events_unittests",
      "//ui/gl:gl_unittests",
      "//ui/latency:latency_unittests",
      "//ui/touch_selection:ui_touch_selection_unittests",
      "//url/ipc:url_ipc_unittests",
      "//v8:gn_all",
    ]
  }

  if (!is_ios && !is_android) {
    deps += [
      "//components/cronet:cronet_tests",
      "//components/cronet:cronet_unittests",
      "//components/viz/demo:viz_demo",
    ]
  }

  if (!is_ios && !is_fuchsia) {
    deps += [
      "//chrome/test:telemetry_perf_unittests",
      "//chrome/test:unit_tests",
      "//components:components_browsertests",
      "//device:device_unittests",
      "//google_apis/gcm:mcs_probe",
      "//media/capture:capture_unittests",
      "//media/cast:cast_unittests",
      "//third_party/angle/src/tests:angle_white_box_tests",
      "//third_party/catapult/telemetry:bitmaptools($host_toolchain)",
      "//third_party/smhasher:pmurhash",
    ]
  } else if (is_ios) {
    deps += [ "//ios:all" ]
  } else if (is_fuchsia) {
    deps += [
      ":d8_fuchsia",
      "//build/fuchsia/fidlgen_js:fidlgen_js_unittests",
      "//fuchsia:gn_all",
      "//headless:headless_non_renderer",
    ]
  }

  deps += root_extra_deps

  if (enable_extensions) {
    deps += [
      "//extensions:extensions_browsertests",
      "//extensions:extensions_unittests",
      "//extensions/shell:app_shell_unittests",
    ]

    # TODO(crbug.com/981112): This target is failing to compile consistently in
    # coverage build, remove this condition when the bug is fixed.
    if (!use_clang_coverage) {
      deps += [ "//extensions/browser/api/declarative_net_request/filter_list_converter" ]
    }
  }

  if (enable_remoting) {
    deps += [ "//remoting:remoting_all" ]
  }

  if (toolkit_views) {
    deps += [
      "//ui/views:views_unittests",
      "//ui/views/examples:views_examples_exe",
      "//ui/views/examples:views_examples_with_content_exe",
    ]
  }

  if (use_aura) {
    deps += [
      "//ui/aura:aura_unittests",
      "//ui/aura:demo",
      "//ui/wm:wm_unittests",
    ]
  }

  if (use_ozone) {
    deps += [
      "//ui/ozone",
      "//ui/ozone:ozone_unittests",
      "//ui/ozone/demo",
      "//ui/ozone/gl:ozone_gl_unittests",
    ]

    if (ozone_platform_x11) {
      deps += [ "//ui/ozone:ozone_x11_unittests" ]
    }
  }

  if (use_x11 || ozone_platform_x11) {
    deps += [ "//tools/xdisplaycheck" ]
  }

  if (is_win) {
    deps += [
      "//chrome/credential_provider",
      "//chrome/credential_provider/test:gcp_unittests",
    ]
  }

  if (is_win && (target_cpu == "x86" || target_cpu == "x64")) {
    deps += [ "//chrome/browser/browser_switcher/bho:browser_switcher_dlls" ]
  }

  if (is_win || is_linux) {
    deps += [
      "//tools/traffic_annotation/auditor:traffic_annotation_auditor",
      "//tools/traffic_annotation/auditor:traffic_annotation_auditor_unittests",
    ]
  }

  if (is_mac) {
    deps += [ "//chrome/installer/gcapi_mac:gcapi_example" ]
  }

  if (is_android) {
    deps += [
      "//base:base_junit_tests",
      "//base/android/jni_generator:jni_generator_tests",
      "//base/android/linker:chromium_android_linker",
      "//build/android/gyp/test:hello_world",
      "//build/android/stacktrace:java_deobfuscate",
      "//chrome/android/webapk/shell_apk:maps_go_webapk",
      "//chrome/android/webapk/shell_apk:webapk",
      "//chrome/android/webapk/shell_apk/prepare_upload_dir:prepare_webapk_shell_upload_dir",
      "//chrome/test:android_browsertests",
      "//chrome/test/vr/perf:motopho_latency_test",
      "//components/invalidation/impl:components_invalidation_impl_junit_tests",
      "//components/policy/android:components_policy_junit_tests",
      "//components/signin/core/browser/android:components_signin_junit_tests",
      "//content/public/android:content_junit_tests",
      "//content/shell/android:content_shell_apk",
      "//device:device_junit_tests",

      # TODO(https://crbug.com/879065): remove once tests have been migrated to
      # the video_decode_accelerator_tests target.
      "//media/gpu:video_decode_accelerator_unittest",
      "//net/android:net_junit_tests",
      "//services:service_junit_tests",
      "//testing/android/junit:junit_unit_tests",
      "//third_party/catapult/devil",
      "//third_party/errorprone:errorprone_java",
      "//third_party/smhasher:murmurhash3",
      "//tools/android:android_tools",
      "//tools/android:memconsumer",
      "//tools/android:push_apps_to_background",
      "//tools/android/audio_focus_grabber:audio_focus_grabber_apk",
      "//tools/android/customtabs_benchmark:customtabs_benchmark_apk",
      "//tools/android/errorprone_plugin:errorprone_plugin_java",
      "//tools/android/kerberos/SpnegoAuthenticator:spnego_authenticator_apk",
      "//ui/android:ui_junit_tests",
    ]
    deps -= [
      "//net:net_perftests",
      "//url:url_unittests",
    ]

    if (!is_component_build) {
      deps += [
        "//components/cronet/android:cronet_package_android",
        "//components/cronet/android:cronet_perf_test_apk",
        "//components/cronet/android:cronet_sample_apk",
        "//components/cronet/android:cronet_sample_test_apk",
        "//components/cronet/android:cronet_test_instrumentation_apk",
        "//components/cronet/android:cronet_unittests_android",
      ]
    }

    if (!is_chromecast) {
      deps += [
        "//android_webview",
        "//android_webview/test",
        "//android_webview/tools/automated_ui_tests:webview_ui_test_app",
        "//android_webview/tools/system_webview_shell",
        "//android_webview/tools/webview_log_verbosifier:webview_log_verbosifier_apk",
        "//chrome/android:chrome_junit_tests",
        "//chrome/android:chrome_public_apk",
        "//chrome/android:chrome_public_test_apk",
        "//chrome/android/features/media_router:media_router_junit_tests",
        "//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_shell_apk",
        "//content/shell/android:content_shell_test_apk",
        "//third_party/custom_tabs_client:custom_tabs_client_example_apk",
      ]
    }

    if (target_cpu != "x64") {
      deps += [ "//content/shell/android:chromium_linker_test_apk" ]
    }

    if (enable_chrome_android_internal) {
      deps += [ "//clank" ]
    }
  }

  # NOTE: The following should really be 'is_android', but the fuzzing build
  #       seems currently broken for this platform at the moment, and the
  #       corresponding code build and works on Linux unmodified.
  #       See instructions in the corresponding BUILD.gn.
  if (is_linux) {
    deps +=
        [ "//third_party/android_crazy_linker:android_crazy_linker_zip_fuzzer" ]
  }

  if (is_linux || is_chromeos) {
    # This is only used by ChromeOS, but we want maximal fuzzer coverage, so
    # run it under linux too.
    deps += [
      "//third_party/minizip:minizip_compress_fuzzer",
      "//third_party/minizip:minizip_uncompress_fuzzer",
    ]
  }

  if (is_linux || is_android) {
    deps += [
      "//third_party/breakpad:breakpad_unittests",
      "//third_party/breakpad:core-2-minidump",
      "//third_party/breakpad:generate_test_dump",
      "//third_party/breakpad:minidump-2-core",
      "//tools/dump_process_memory:dump_process",
    ]
  }

  if (is_chromeos) {
    deps += [
      "//ash:ash_shell_with_content",
      "//ash:ash_unittests",
      "//ash/app_list:app_list_demo",
      "//ash/app_list:app_list_unittests",
      "//ash/keyboard/ui:keyboard_unittests",
      "//chrome/test:usage_time_limit_unittests",
      "//chromeos:chromeos_unittests",
      "//chromeos/components:chromeos_components_unittests",
      "//chromeos/components/proximity_auth:proximity_auth_unittests",
      "//components/session_manager/core",
      "//ui/chromeos:ui_chromeos_unittests",
    ]
  }

  if (is_chromeos || is_mac || is_win) {
    deps += [
      "//rlz:rlz_id",
      "//rlz:rlz_lib",
      "//rlz:rlz_unittests",
    ]
  }

  if (is_linux) {
    # The following are definitely linux-only.
    deps += [
      "//chrome:xdg_mime",
      "//net:disk_cache_memory_test",
      "//net:quic_client",
      "//net:quic_server",
      "//sandbox/linux:chrome_sandbox",
      "//sandbox/linux:sandbox_linux_unittests",
      "//testing:empty_main",
    ]

    if (use_dbus) {
      deps += [
        "//dbus:dbus_test_server",
        "//dbus:dbus_unittests",
      ]
    }

    if (is_chrome_branded && is_official_build) {
      # TODO(dpranke): add the linux_dump_symbols flag?
      deps += [ "//chrome:linux_symbols" ]
    }
  }

  if (is_ios || is_win || (is_linux && !is_chromeos)) {
    deps += [
      "//base:base_i18n_perftests",
      "//google_apis:google_apis_unittests",
    ]
  }

  if ((is_win || is_mac || is_linux || is_chromeos || is_fuchsia) &&
      (target_cpu == "x86" || target_cpu == "x64")) {
    deps += [ "//third_party/swiftshader" ]
  }

  # TODO(GYP): Figure out which of these should (and can) build
  # for chromeos/ios.
  if (!is_chromeos && !is_ios && !is_fuchsia) {
    deps += [
      "//base:build_utf8_validator_tables",
      "//base:check_example",
      "//cc:cc_perftests",
      "//components:components_perftests",
      "//device:device_unittests",
      "//gin:gin_shell",
      "//gin:gin_unittests",
      "//gpu:command_buffer_perftests",
      "//gpu:gl_tests",
      "//gpu:gpu_perftests",
      "//ipc:ipc_perftests",
      "//media:media_perftests",
      "//net:dump_cache",
      "//third_party/libphonenumber:libphonenumber_unittests",
      "//ui/compositor:compositor_unittests",
    ]

    if (!is_android) {
      deps += [
        "//chrome/test:load_library_perf_tests",
        "//chrome/test:sync_performance_tests",
        "//chrome/test/chromedriver:chromedriver",
        "//courgette:courgette",
        "//courgette:courgette_fuzz",
        "//courgette:courgette_minimal_tool",
        "//courgette:courgette_unittests",
        "//media/cast:generate_barcode_video",
        "//media/cast:generate_timecode_audio",
        "//net:crash_cache",
        "//net:dns_fuzz_stub",
        "//net:net_watcher",  # TODO(GYP): This should be conditional on use_v8_in_net
        "//net:run_testserver",
        "//net:stress_cache",
        "//net:tld_cleanup",
        "//ppapi:pepper_hash_for_uma",
        "//ppapi:ppapi_perftests",
        "//third_party/leveldatabase:env_chromium_unittests",
        "//third_party/libaddressinput:libaddressinput_unittests",
      ]
    }

    if (enable_extensions) {
      deps += [ "//extensions/shell:app_shell" ]
      if (is_desktop_linux && is_official_build) {
        deps += [ "//extensions/shell:app_shell_linux_symbols" ]
      }
    }

    if (enable_nacl) {
      deps += [ "//components/nacl/loader:nacl_loader_unittests" ]

      if (is_linux) {
        # TODO(dpranke): Figure out what platforms should actually have this.
        deps += [ "//components/nacl/loader:nacl_helper" ]

        if (enable_nacl_nonsfi) {
          deps += [
            "//components/nacl/loader:helper_nonsfi",
            "//components/nacl/loader:nacl_helper_nonsfi_unittests",
          ]
        }
      }
    }

    if (media_use_ffmpeg && !is_android) {
      deps += [ "//media:ffmpeg_regression_tests" ]
    }
  }

  if (is_fuchsia) {
    deps += [ "//chrome/test/chromedriver:chromedriver($host_toolchain)" ]
  }

  if (is_android || (is_linux && !is_chromeos)) {
    deps += [
      "//components/network_hints/browser",
      "//content/public/app:browser",
      "//content/public/app:child",
      "//mojo:mojo_perftests",
      "//services/service_manager/public/cpp",
      "//testing/gmock:gmock_main",
      "//third_party/breakpad:dump_syms($host_toolchain)",
      "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
      "//third_party/breakpad:minidump_dump($host_toolchain)",
      "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
    ]

    if (!is_android) {
      deps += [
        "//chrome/test:chrome_app_unittests",
        "//gpu/khronos_glcts_support:khronos_glcts_test",
        "//media/cast:cast_benchmarks",
        "//media/cast:tap_proxy",
        "//skia:filter_fuzz_stub",
        "//skia:image_operations_bench",
        "//ui/snapshot:snapshot_unittests",
      ]

      if (!is_debug && !is_component_build) {
        deps += [ "//chrome/tools/service_discovery_sniffer" ]
      }
    }

    if (use_x11) {
      if (target_cpu != "arm") {
        deps += [ "//gpu/tools/compositor_model_bench" ]
      }
    }
  }

  if (is_mac) {
    deps += [
      "//third_party/breakpad:crash_inspector",
      "//third_party/breakpad:dump_syms",
    ]
    deps -= [
      # Mojo in GN contains some things which are never compiled in GYP on Mac,
      # so compilation fails on Mac. They need porting.
      "//mojo",
    ]
  }

  if (is_win) {
    deps += [
      "//base:pe_image_test",
      "//chrome/chrome_cleaner:chrome_cleaner_unittests",
      "//chrome/chrome_elf:chrome_elf_unittests",
      "//chrome/chrome_elf:dll_hash_main",
      "//chrome/elevation_service:elevation_service_unittests",
      "//chrome/install_static:install_static_unittests",
      "//chrome/installer/gcapi",
      "//chrome/installer/setup:setup_unittests",
      "//chrome/notification_helper:notification_helper_unittests",
      "//chrome/test:delayloads_unittests",
      "//cloud_print:cloud_print_unittests",
      "//components/wifi:wifi_test",
      "//components/zucchini",
      "//net:quic_client",
      "//net:quic_server",
      "//sandbox/win:pocdll",
      "//sandbox/win:sandbox_poc",
      "//sandbox/win:sbox_integration_tests",
      "//sandbox/win:sbox_unittests",
      "//sandbox/win:sbox_validation_tests",
      "//testing/gtest:gtest_main",
      "//third_party/tcmalloc:addr2line-pdb",

      # The following two are accessibility API debugging tools.
      "//tools/accessibility/inspect:ax_dump_events",
      "//tools/accessibility/inspect:ax_dump_tree",
      "//tools/win/chromeexts:chromeexts",
    ]

    # TODO(thakis): Enable this in cross builds, https://crbug.com/799827
    if (!(is_component_build && is_debug && target_cpu == "x86") &&
        host_os == "win") {
      deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
    }
  } else if (!is_android && !is_ios && !is_fuchsia) {
    deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
  }

  if (is_chromecast) {
    deps += [ "//chromecast:cast_shell" ]
    if (enable_extensions && use_aura) {
      deps += [ "//chrome/browser/resources/chromeos/chromevox" ]
    }
  }

  if (is_mac || is_win || is_android || (is_linux && !is_chromeos)) {
    deps += [
      "//third_party/crashpad/crashpad:crashpad_tests",
      "//third_party/crashpad/crashpad/handler:crashpad_handler",
      "//third_party/crashpad/crashpad/tools:crashpad_database_util",
    ]
  }

  if (use_openh264) {
    deps += [
      "//third_party/openh264:common",
      "//third_party/openh264:encoder",
      "//third_party/openh264:processing",
    ]
  }

  if (enable_message_center) {
    deps += [ "//ui/message_center:message_center_unittests" ]
  }

  if (!is_android && !is_ios && !is_fuchsia) {
    deps += [ "//content/browser/bluetooth/tools:bluetooth_metrics_hash" ]
  }

  if (is_win || is_linux) {
    deps += [
      "//media/mojo/services:media_service_unittests",
      "//mojo",
    ]

    # crbug.com/676055: media_service_unittests fails to link under Windows
    # component builds, due to duplicate symbol definitions.
    if (is_win && is_component_build) {
      deps -= [ "//media/mojo/services:media_service_unittests" ]
    }
  }

  if (is_mac || is_linux || is_android || is_fuchsia) {
    deps += [ "//third_party/perfetto:all" ]
  }

  if (is_win || is_mac || is_linux) {
    deps += [ "//third_party/sqlite:sqlite_shell" ]
  }

  if (is_linux && !is_chromeos && !is_chromecast) {
    # TODO(GYP): Figure out if any of these should be in gn_all
    # and figure out how cross-platform they are
    deps += [
      "//chrome/installer/util:strings",
      "//chrome/tools/convert_dict",
      "//components/constrained_window:unit_tests",
      "//components/metrics:serialization",
      "//components/rappor:unit_tests",
      "//components/services/filesystem:filesystem_service_unittests",
      "//components/services/leveldb:leveldb_service_unittests",
      "//components/sessions:unit_tests",
      "//media/blink:media_blink_unittests",
      "//media/cast:udp_proxy",
      "//storage/browser:dump_file_system",
      "//third_party/angle:libANGLE",
      "//third_party/angle:libEGL",
      "//third_party/angle:libGLESv2",
      "//third_party/leveldatabase:leveldb_test_targets",
      "//third_party/libjpeg_turbo:simd",
      "//third_party/opus:opus_compare",
      "//third_party/opus:opus_demo",
      "//third_party/opus:test_opus_api",
      "//third_party/opus:test_opus_decode",
      "//third_party/opus:test_opus_encode",
      "//third_party/opus:test_opus_padding",
      "//ui/display/types",
      "//ui/shell_dialogs:shell_dialogs_unittests",
    ]

    if (enable_nacl) {
      deps += [ "//native_client/src/trusted/debug_stub:gdb_rsp_unittest" ]
    }

    if (target_cpu == "x86" || target_cpu == "x64") {
      if (!is_android) {
        deps += [ "//chrome/test:load_library_perf_tests" ]
      }
      if (enable_nacl) {
        deps += [ "//native_client/src/trusted/platform_qualify:vcpuid" ]
      }
      deps += [ "//third_party/libjpeg_turbo:simd_asm" ]
    }
    if (is_linux && current_toolchain == host_toolchain) {
      deps += [ "//v8:v8_shell" ]
    }
  }

  if ((is_linux && !is_chromecast) || (is_win && use_libfuzzer) ||
      (use_libfuzzer && is_mac)) {
    deps += [
      "//chrome/services/ipp_parser/public/cpp:fuzzers",
      "//testing/libfuzzer/fuzzers",
      "//third_party/grpc:fuzzers",
      "//third_party/icu/fuzzers",
      "//third_party/qcms:fuzzers",
      "//third_party/zlib/contrib/tests/fuzzers",
    ]

    # TODO(crbug.com/906751): Get the libFuzzer tests working on Windows.
    # Disable them for now becaue they cause the Windows clang ToT builder to
    # fail.
    if (!is_win) {
      deps += [ "//testing/libfuzzer/tests:libfuzzer_tests" ]
    }
  }

  if (enable_nacl) {
    deps += [ "//native_client_sdk/src:nacl_core_sdk" ]
  }

  if (is_linux && use_ozone) {
    deps += [
      "//headless:headless_non_renderer",
      "//headless:headless_tests",
    ]
  }

  if (enable_vr) {
    deps += [
      "//chrome/browser/vr:vr_common_perftests",
      "//chrome/browser/vr:vr_common_unittests",
      "//chrome/browser/vr:vr_pixeltests",
      "//tools/perf/contrib/vr_benchmarks:vr_perf_tests",
    ]
    if (is_desktop_linux && use_ozone) {
      deps += [ "//chrome/browser/vr/testapp:vr_testapp" ]
    }
    if (is_android) {
      deps += [ "//chrome/browser/android/vr:vr_android_unittests" ]
    }
  }

  if (enable_vulkan) {
    deps += [ "//gpu/vulkan/demo" ]
  }

  if (use_atk) {
    deps += [
      "//tools/accessibility/inspect:ax_dump_events",
      "//tools/accessibility/inspect:ax_dump_tree",
    ]
  }

  # PFFFT.
  deps += [
    "//third_party/pffft:fuzzers",
    "//third_party/pffft:pffft_benchmark",
    "//third_party/pffft:pffft_unittest",
  ]
}

if ((is_linux || is_win) && enable_remoting && !use_ozone) {
  # This group is used for network annotation check test.
  group("shipped_binaries") {
    deps = [
      "//chrome:chrome",
      "//remoting/host:host",
    ]
  }
}

if (is_fuchsia) {
  # TODO(https://crbug.com/731217): This can't practically be in //v8 without
  # duplicating all the Fuchsia running infrastructure there.
  fuchsia_package("d8_fuchsia_pkg") {
    testonly = true
    binary = "//v8:d8"
    package_name_override = "d8"
  }

  fuchsia_package_runner("d8_fuchsia") {
    testonly = true
    package = ":d8_fuchsia_pkg"
    package_name_override = "d8"
  }
}

# TODO(GYP_GONE): Figure out if we really need this target or if there's
# some better way to specify things.
if (is_win) {
  group("chrome_official_builder_no_unittests") {
    deps = [
      "//chrome/common/win:eventlog_provider",
      "//chrome/credential_provider",
      "//chrome/installer/gcapi",
      "//chrome/installer/mini_installer",
      "//cloud_print",
      "//cloud_print/virtual_driver/win/port_monitor:copy_gcp_portmon_binaries",
      "//components/policy:pack_policy_templates",
      "//components/zucchini",
      "//courgette",
      "//courgette:copy_courgette_binaries",
      "//remoting/webapp",
      "//tools/metrics:metrics_metadata",
    ]

    if (target_cpu == "x86") {
      if (is_clang) {
        deps += [ "//courgette(//build/toolchain/win:win_clang_x64)" ]
      } else {
        deps += [ "//courgette(//build/toolchain/win:x64)" ]
      }
    }
    if (is_chrome_branded) {
      deps += [ "//remoting/host:remoting_host_installation" ]
    }
  }

  group("chrome_official_builder") {
    testonly = true

    deps = [
      ":chrome_official_builder_no_unittests",
      "//base:base_unittests",
      "//chrome/test:browser_tests",
      "//ipc:ipc_tests",
      "//media:media_unittests",
      "//media/midi:midi_unittests",
      "//net:net_unittests",
      "//printing:printing_unittests",
      "//sql:sql_unittests",
      "//ui/base:ui_base_unittests",
      "//ui/gfx:gfx_unittests",
      "//ui/touch_selection:ui_touch_selection_unittests",
      "//ui/views:views_unittests",
      "//url:url_unittests",
    ]
  }
}

if (is_chromeos) {
  group("chromiumos_preflight") {
    testonly = true
    deps = [
      "//chrome",
      "//chrome/test/chromedriver",
      "//components/chromeos_camera:jpeg_decode_accelerator_unittest",
      "//media:media_unittests",
      "//ppapi/examples/video_decode",
      "//sandbox/linux:chrome_sandbox",
      "//sandbox/linux:sandbox_linux_unittests",
      "//third_party/breakpad:minidump_stackwalk($host_toolchain)",

      # Blocked on https://github.com/catapult-project/catapult/issues/2297
      #"//third_party/catapult/telemetry:bitmaptools",
      "//tools/perf/clear_system_cache",
    ]

    if (use_v4l2_codec || use_vaapi) {
      deps += [
        "//components/chromeos_camera:jpeg_encode_accelerator_unittest",
        "//media/gpu:video_decode_accelerator_perf_tests",
        "//media/gpu:video_decode_accelerator_tests",

        # TODO(https://crbug.com/879065): remove once tests have been migrated
        # to the above target.
        "//media/gpu:video_decode_accelerator_unittest",
        "//media/gpu:video_encode_accelerator_unittest",
      ]
    }
  }
}

group("gn_visibility") {
  deps = [
    "//build/config/sanitizers:options_sources",
    # "//third_party/pdfium:pdfium_embeddertests",  # TODO(GYP): visibility?
    # "//third_party/pdfium:pdfium_unittests",  # TODO(GYP): visibility?
  ]

  if (!is_ios) {
    deps += [ "//v8:postmortem-metadata" ]
    if (v8_use_snapshot && !v8_use_external_startup_data) {
      deps += [ "//v8:v8_snapshot" ]
    }
  }
}

if (!is_ios) {
  # This group includes all of the targets needed to build and test Blink,
  # including running the layout tests (see below).
  group("blink_tests") {
    testonly = true

    deps = [
      ":blink_web_tests",
      "//third_party/blink/public:all_blink",
    ]
  }

  # Web tests runner
  # third_party/blink/tools/run_web_tests.py
  group("run_web_tests") {
    testonly = true
    deps = [
      ":blink_web_tests",
    ]
  }

  if (!is_chromeos && !is_ios && !is_fuchsia && !is_android) {
    # WPT Webdriver tests runner
    # chrome/test/chromedriver/test/run_webdriver_tests.py
    group("webdriver_wpt_tests") {
      testonly = true
      data = [
        "//chrome/test/chromedriver/chrome_paths.py",
        "//chrome/test/chromedriver/server/server.py",
        "//chrome/test/chromedriver/test/run_webdriver_tests.py",
        "//chrome/test/chromedriver/util.py",
        "//testing/xvfb.py",
        "//third_party/blink/tools/blinkpy/",
        "//third_party/blink/web_tests/external/wpt/webdriver/",
        "//third_party/blink/web_tests/VirtualTestSuites",
        "//third_party/blink/web_tests/WebDriverExpectations",
        "//third_party/pywebsocket/src/mod_pywebsocket/",
      ]
      data_deps = [
        "//chrome:chrome",
        "//chrome/test/chromedriver",
      ]
    }
    group("wpt_tests_isolate") {
      testonly = true
      data_deps = [
        "//chrome:chrome",
        "//chrome/test/chromedriver",
      ]
      deps = [
        "//third_party/blink/tools:wpt_tests_isolate",
      ]
    }
  }

  # https://www.chromium.org/developers/testing/webkit-layout-tests

  # The _exparchive at the end of the name indicates to the isolate recipe
  # that the isolate should be archived separately using the `exparchive`
  # command, rather than as part of the normal `batcharchive` command.
  group("blink_web_tests_exparchive") {
    testonly = true
    deps = [
      ":blink_web_tests",
    ]
    data_deps = [
      ":blink_web_tests",
    ]
  }

  # This target contains only a small subset of the web tests,
  # and is useful for testing with the regular isolate mechanism.
  # To run the full web test suite you need to use
  # :blink_web_tests_exparchive, above, instead.
  generate_wrapper("blink_web_tests") {
    testonly = true
    wrapper_script = "${root_build_dir}/bin/run_blink_web_tests"
    executable = "//third_party/blink/tools/run_web_tests.py"
    executable_args = []

    if (is_debug) {
      executable_args += [ "--debug" ]
    } else {
      executable_args += [ "--release" ]
    }

    if (is_android) {
      executable_args += [
        "--platform",
        "android",
      ]
    }

    data_deps = [
      ":layout_test_data_mojo_bindings",
      ":layout_test_data_mojo_bindings_lite",
      "//content/shell:content_shell",
      "//content/test:mojo_web_test_bindings_js_data_deps",
      "//content/test:mojo_web_test_old_names_bindings_js_data_deps",
      "//content/shell:mojo_bindings_js_data_deps",
      "//device/bluetooth/public/mojom:fake_bluetooth_interfaces_js_data_deps",
      "//device/vr/public/mojom:mojom_js_data_deps",
      "//media/capture/mojom:image_capture_js_data_deps",
      "//media/midi:mojo_js_data_deps",
      "//mojo/public/interfaces/bindings/tests:test_data_deps",
      "//mojo/public/mojom/base:base_js_data_deps",
      "//services/shape_detection/public/mojom:mojom_js_data_deps",
      "//services/device/public/mojom:mojom_js_data_deps",
      "//services/device/public/mojom:generic_sensor_js_data_deps",
      "//services/device/public/mojom:usb_js_data_deps",
      "//skia/public/mojom:mojom_js_data_deps",
      "//testing/buildbot/filters:blink_web_tests_filter",
      "//third_party/blink/public:blink_devtools_frontend_resources_files",
      "//third_party/blink/public/mojom:mojom_platform_js_data_deps",
      "//third_party/blink/renderer/core/html:js_files_for_form_controls_web_tests",
      "//third_party/blink/renderer/core/script:js_files_for_web_tests",
      "//third_party/mesa_headers",
      "//tools/imagediff",
    ]

    if (is_android) {
      data_deps += [
        "//third_party/breakpad:breakpad_unittests",
        "//third_party/breakpad:dump_syms",
        "//third_party/breakpad:microdump_stackwalk",
        "//third_party/breakpad:minidump_dump",
        "//third_party/breakpad:minidump_stackwalk",
        "//third_party/breakpad:symupload",
        "//tools/android/forwarder2",
      ]
    }

    if (!is_win && !is_android) {
      data_deps +=
          [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
    }

    if (is_mac) {
      data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
    }

    if (is_linux) {
      data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
    }

    if (is_fuchsia) {
      data_deps += [
        "//content/shell:content_shell_fuchsia",
        "//build/fuchsia/layout_test_proxy:layout_test_proxy_runner",
      ]
    }

    data = [
      "//testing/scripts/common.py",
      "//testing/scripts/run_isolated_script_test.py",
      "//testing/xvfb.py",
      "//third_party/blink/perf_tests/",
      "//third_party/blink/tools/",
      "//third_party/blink/web_tests/",
      "//third_party/pywebsocket/src/mod_pywebsocket/",
    ]

    if (is_win) {
      data += [
        "//third_party/apache-win32/",
        "//third_party/perl/perl/",
      ]
    }

    if (is_mac) {
      data += [ "//third_party/apache-mac/" ]
    }

    if (is_android) {
      data += [
        "//third_party/catapult/",
        "//build/android/",
      ]
    }
  }

  copy("layout_test_data_mojo_bindings") {
    testonly = true

    sources = [
      "$root_gen_dir/mojo/public/js/mojo_bindings.js",
    ]

    outputs = [
      "$root_gen_dir/layout_test_data/mojo/public/js/mojo_bindings.js",
    ]

    deps = [
      "//mojo/public/js:bindings",
    ]
  }

  copy("layout_test_data_mojo_bindings_lite") {
    testonly = true

    sources = [
      "$root_gen_dir/mojo/public/js/mojo_bindings_lite.js",
    ]

    outputs = [
      "$root_gen_dir/layout_test_data/mojo/public/js/mojo_bindings_lite.js",
    ]

    deps = [
      "//mojo/public/js:bindings_lite",
    ]
  }

  group("blink_python_tests") {
    data = [
      "//build/android/",
      "//components/crash/content/tools/generate_breakpad_symbols.py",
      "//testing/scripts/common.py",
      "//testing/scripts/run_isolated_script_test.py",
      "//testing/test_env.py",
      "//testing/xvfb.py",
      "//third_party/blink/renderer/bindings/scripts/",
      "//third_party/blink/renderer/build/scripts/",
      "//third_party/blink/tools/",
      "//third_party/blink/web_tests/ASANExpectations",
      "//third_party/blink/web_tests/LeakExpectations",
      "//third_party/blink/web_tests/MSANExpectations",
      "//third_party/blink/web_tests/NeverFixTests",
      "//third_party/blink/web_tests/SlowTests",
      "//third_party/blink/web_tests/StaleTestExpectations",
      "//third_party/blink/web_tests/TestExpectations",
      "//third_party/blink/web_tests/VirtualTestSuites",
      "//third_party/catapult/common/py_utils/",
      "//third_party/catapult/devil/",
      "//third_party/catapult/dependency_manager/",
      "//third_party/catapult/third_party/zipfile/",
      "//third_party/catapult/third_party/typ/",
      "//third_party/depot_tools/pylint.py",
      "//third_party/depot_tools/pylintrc",
      "//third_party/depot_tools/third_party/logilab/",
      "//third_party/depot_tools/third_party/pylint/",
      "//third_party/depot_tools/third_party/pylint.py",
      "//third_party/ply/",
      "//third_party/pymock/",
      "//tools/idl_parser/",
    ]
  }
}

group("chromium_builder_perf") {
  testonly = true

  if (!is_ios && !is_android && !is_chromecast && !is_fuchsia) {
    data_deps = [
      "//cc:cc_perftests",
      "//chrome/test:load_library_perf_tests",
      "//chrome/test:performance_test_suite",
      "//components/tracing:tracing_perftests",
      "//gpu:command_buffer_perftests",
      "//gpu:gpu_perftests",
      "//media:media_perftests",
      "//tools/perf/chrome_telemetry_build:telemetry_chrome_test",
    ]

    if (is_android) {
      data += [ "//third_party/android_sdk/public/platform-tools/adb" ]
    }

    if (!is_chromeos) {
      data_deps += [ "//chrome/test:performance_browser_tests" ]
    }
    if (is_linux && !is_chromeos) {
      if (is_official_build) {
        # In GN builds, this is controlled by the 'linux_dump_symbols'
        # flag, which defaults to 1 for official builds. For now,
        # we skip the separate flag and just key off of is_official_build.
        data_deps += [ "//chrome:linux_symbols" ]
      }

      data_deps += [ "//tools/perf/clear_system_cache" ]
    }

    if (is_win) {
      data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
    } else {
      data_deps +=
          [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
    }
    if (is_win || is_android) {
      data_deps += [
        "//components:components_perftests",
        "//chrome/test:angle_perftests",
      ]
    }
  }
}

if (!is_ios && !is_android && !is_chromecast && !is_fuchsia) {
  group("chromium_builder_asan") {
    testonly = true

    deps = [
      "//chrome:chrome",
      "//content/shell:content_shell",
      "//v8:d8",
    ]
    if (!is_win) {
      deps += [
        "//net:dns_fuzz_stub",
        "//skia:filter_fuzz_stub",
      ]
    }
    if (enable_ipc_fuzzer && !is_component_build) {
      deps += [ "//tools/ipc_fuzzer:ipc_fuzzer_all" ]
    }
    if (!is_chromeos) {
      deps += [
        "//third_party/pdfium/samples:pdfium_test",
        "//v8:v8_shell($v8_snapshot_toolchain)",
      ]
    }
  }
}

if (is_android) {
  group("optimize_gn_gen") {
    deps = [
      # These run expensive scripts in non-default toolchains. Generally, host
      # toolchain targets are loaded in the later part of the run, and the
      # result is they push out the end of generation. By preloading these, the
      # scripts can be parallelized with the rest of the load.
      "//build/config/linux(//build/toolchain/linux:clang_x64)",
      "//build/config/posix(//build/toolchain/linux:clang_x64)",

      # Include x86 toolchains as well since V8 uses them for 32-bit snapshot
      # generation.
      "//build/config/linux(//build/toolchain/linux:clang_x86)",
      "//build/config/posix(//build/toolchain/linux:clang_x86)",
    ]
  }
}

# Because of the source assignment filter, many targets end up over-filtering
# their sources if the output directory contains a platform name. Assert that
# this doesn't happen. http://crbug.com/548283
template("assert_valid_out_dir") {
  # List copied from //build/config/BUILDCONFIG.gn.
  set_sources_assignment_filter([
                                  "*\bandroid/*",
                                  "*\bchromeos/*",
                                  "*\bcocoa/*",
                                  "*\bios/*",
                                  "*\blinux/*",
                                  "*\bmac/*",
                                  "*\bposix/*",
                                  "*\bwin/*",
                                ])
  assert(target_name != "")  # Mark as used.
  sources = invoker.actual_sources
  assert(
      sources == invoker.actual_sources,
      "Do not use a platform name in your output directory (found \"$root_build_dir\"). http://crbug.com/548283")
}

if (closure_compile) {
  group("webui_closure_compile") {
    testonly = true
    data_deps = [
      "chrome/browser/resources:closure_compile",
      "components/sync/driver/resources:closure_compile",
      "components/ukm/debug:closure_compile",
      "content/browser/resources:closure_compile",
      "mojo/public/tools/bindings/generators/js_templates/lite/test:closure_compile",
      "ui/webui/resources:closure_compile",
    ]
    if (is_chromeos) {
      data_deps += [ "ui/file_manager:closure_compile" ]
    }
    if (is_android) {
      data_deps += [ "components/offline_pages/resources:closure_compile" ]
    }
  }
}

assert_valid_out_dir("_unused") {
  actual_sources = [ "$root_build_dir/foo" ]
}
