1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063 |
- # Copyright 2015 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/c++/c++.gni")
- import("//build/config/chrome_build.gni")
- import("//build/config/python.gni")
- import("//build/util/lastchange.gni")
- import("//build/util/process_version.gni")
- import("//headless/headless.gni")
- import("//mojo/public/tools/bindings/mojom.gni")
- import("//pdf/features.gni")
- import("//printing/buildflags/buildflags.gni")
- import("//testing/test.gni")
- import("//third_party/closure_compiler/compile_js.gni")
- import("//third_party/inspector_protocol/inspector_protocol.gni")
- import("//tools/grit/grit_rule.gni")
- import("//tools/grit/repack.gni")
- import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
- if (headless_use_policy) {
- assert(headless_use_prefs,
- "'headless_use_policy' requires 'headless_use_prefs'.")
- }
- # Headless defines config applied to every target below.
- config("headless_defines_config") {
- defines = []
- if (headless_use_prefs) {
- defines += [ "HEADLESS_USE_PREFS" ]
- }
- if (headless_use_policy) {
- defines += [ "HEADLESS_USE_POLICY" ]
- }
- if (headless_mode_policy_supported) {
- defines += [ "HEADLESS_MODE_POLICY_SUPPORTED" ]
- }
- }
- # For code inside the build component "headless".
- config("inside_headless_component") {
- defines = [ "HEADLESS_IMPLEMENTATION" ]
- }
- group("headless_lib") {
- deps = [ ":headless_non_renderer" ]
- }
- repack("resource_pack_data") {
- sources = [
- "$root_gen_dir/components/components_resources.pak",
- "$root_gen_dir/content/content_resources.pak",
- "$root_gen_dir/content/dev_ui_content_resources.pak",
- "$root_gen_dir/net/net_resources.pak",
- "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
- "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
- "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
- "$root_gen_dir/ui/resources/webui_generated_resources.pak",
- ]
- deps = [
- "//components/resources:components_resources",
- "//content:content_resources",
- "//content:dev_ui_content_resources",
- "//net:net_resources",
- "//third_party/blink/public:resources",
- "//third_party/blink/public:scaled_resources_100_percent",
- "//ui/resources",
- ]
- output = "$root_out_dir/headless_lib_data.pak"
- }
- repack("resource_pack_strings") {
- sources = [
- "$root_gen_dir/components/strings/components_strings_en-US.pak",
- "$root_gen_dir/third_party/blink/public/strings/blink_strings_en-US.pak",
- "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
- "$root_gen_dir/ui/strings/ax_strings_en-US.pak",
- "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
- ]
- 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" ]
- }
- deps = [
- "//components/strings",
- "//third_party/blink/public/strings",
- "//ui/strings",
- ]
- if (!is_fuchsia) {
- sources +=
- [ "$root_gen_dir/content/browser/devtools/devtools_resources.pak" ]
- deps += [ "//content/browser/devtools:devtools_resources" ]
- }
- output = "$root_out_dir/headless_lib_strings.pak"
- }
- action("embedded_resource_pack_data") {
- # TODO(altimin): Consider zipping file here, it can reduce size up to 80%.
- script = "lib/embed_data.py"
- inputs = [ "$root_out_dir/headless_lib_data.pak" ]
- outputs = [
- "$root_gen_dir/headless/embedded_resource_pack_data.cc",
- "$root_gen_dir/headless/embedded_resource_pack_data.h",
- ]
- args = [
- "--data_file",
- rebase_path("$root_out_dir/headless_lib_data.pak", root_build_dir),
- "--gendir",
- rebase_path("$root_gen_dir", root_build_dir),
- "--header_file",
- "headless/embedded_resource_pack_data.h",
- "--source_file",
- "headless/embedded_resource_pack_data.cc",
- "--namespace",
- "headless",
- "--variable_name",
- "kHeadlessResourcePackData",
- ]
- deps = [ ":resource_pack_data" ]
- }
- action("embedded_resource_pack_strings") {
- # TODO(altimin): Consider zipping file here, it can reduce size up to 80%.
- script = "lib/embed_data.py"
- inputs = [ "$root_out_dir/headless_lib_strings.pak" ]
- outputs = [
- "$root_gen_dir/headless/embedded_resource_pack_strings.cc",
- "$root_gen_dir/headless/embedded_resource_pack_strings.h",
- ]
- args = [
- "--data_file",
- rebase_path("$root_out_dir/headless_lib_strings.pak", root_build_dir),
- "--gendir",
- rebase_path("$root_gen_dir", root_build_dir),
- "--header_file",
- "headless/embedded_resource_pack_strings.h",
- "--source_file",
- "headless/embedded_resource_pack_strings.cc",
- "--namespace",
- "headless",
- "--variable_name",
- "kHeadlessResourcePackStrings",
- ]
- deps = [ ":resource_pack_strings" ]
- }
- devtools_domains = [
- "accessibility",
- "animation",
- "browser",
- "cache_storage",
- "console",
- "css",
- "database",
- "debugger",
- "device_orientation",
- "dom",
- "dom_debugger",
- "dom_snapshot",
- "dom_storage",
- "emulation",
- "fetch",
- "headless_experimental",
- "heap_profiler",
- "indexeddb",
- "input",
- "inspector",
- "io",
- "layer_tree",
- "log",
- "memory",
- "network",
- "page",
- "performance",
- "profiler",
- "runtime",
- "security",
- "service_worker",
- "target",
- "tracing",
- ]
- generated_devtools_api_sources = []
- generated_devtools_api_headers = []
- foreach(domain, devtools_domains) {
- generated_devtools_api_headers += [
- "$target_gen_dir/public/devtools/domains/" + domain + ".h",
- "$target_gen_dir/public/devtools/domains/types_" + domain + ".h",
- "$target_gen_dir/public/devtools/internal/type_conversions_" + domain +
- ".h",
- "$target_gen_dir/public/devtools/internal/" +
- "types_forward_declarations_" + domain + ".h",
- ]
- generated_devtools_api_sources += [
- "$target_gen_dir/public/devtools/domains/" + domain + ".cc",
- "$target_gen_dir/public/devtools/domains/types_" + domain + ".cc",
- ]
- }
- action("gen_devtools_client_api") {
- script = "lib/browser/devtools_api/client_api_generator.py"
- deps = [
- ":protocol_sources",
- "//third_party/blink/public/devtools_protocol:protocol_version",
- ]
- inputs = [
- "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json",
- ]
- outputs = generated_devtools_api_headers + generated_devtools_api_sources
- sources = [
- "lib/browser/devtools_api/domain_cc.template",
- "lib/browser/devtools_api/domain_h.template",
- "lib/browser/devtools_api/domain_type_conversions_h.template",
- "lib/browser/devtools_api/domain_types_cc.template",
- "lib/browser/devtools_api/domain_types_forward_declarations_h.template",
- "lib/browser/devtools_api/domain_types_h.template",
- ]
- args = [
- "--protocol",
- rebase_path(inputs[0], root_build_dir),
- "--output_dir",
- rebase_path(target_gen_dir, root_build_dir) + "/public",
- ]
- }
- inspector_protocol_generate("protocol_sources") {
- visibility = [
- ":backend_cdp_bindings",
- ":gen_devtools_client_api",
- ]
- deps = [ "//third_party/blink/public/devtools_protocol:protocol_version" ]
- _blink_protocol_path = rebase_path(
- "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json",
- root_build_dir)
- inspector_protocol_dir = "//third_party/inspector_protocol"
- out_dir = target_gen_dir
- config_file = "protocol_config.json"
- config_values = [ "protocol.path=$_blink_protocol_path" ]
- use_embedder_types = true
- inputs = [
- "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json",
- config_file,
- ]
- # These are relative to $target_gen_dir.
- outputs = [
- "lib/browser/protocol/browser.cc",
- "lib/browser/protocol/browser.h",
- "lib/browser/protocol/headless_experimental.cc",
- "lib/browser/protocol/headless_experimental.h",
- "lib/browser/protocol/page.cc",
- "lib/browser/protocol/page.h",
- "lib/browser/protocol/target.cc",
- "lib/browser/protocol/target.h",
- "lib/browser/protocol/protocol.h",
- ]
- }
- static_library("backend_cdp_bindings") {
- deps = [
- ":protocol_sources",
- "//base",
- "//third_party/inspector_protocol:crdtp",
- ]
- sources = get_target_outputs(":protocol_sources")
- visibility = [ ":headless_non_renderer" ]
- configs += [
- ":headless_defines_config",
- ":inside_headless_component",
- ]
- }
- # Code needed in both processes. Only exposed through the |headless_renderer|
- # target and the |headless_non_renderer| component.
- source_set("headless_shared_sources") {
- visibility = [
- ":headless_non_renderer",
- ":headless_renderer",
- ]
- defines = []
- sources = [
- "app/headless_shell_switches.cc",
- "app/headless_shell_switches.h",
- "lib/headless_content_client.cc",
- "lib/headless_content_client.h",
- "public/headless_browser.cc",
- "public/headless_browser.h",
- "public/headless_export.h",
- "public/internal/headless_devtools_client_impl.h",
- "public/internal/message_dispatcher.h",
- "public/internal/value_conversions.h",
- "public/util/error_reporter.cc",
- "public/util/error_reporter.h",
- "public/util/user_agent.cc",
- "public/util/user_agent.h",
- ]
- sources += generated_devtools_api_headers + generated_devtools_api_sources
- if (!is_fuchsia) {
- sources += [
- "lib/headless_crash_reporter_client.cc",
- "lib/headless_crash_reporter_client.h",
- ]
- }
- deps = [
- ":gen_devtools_client_api",
- ":version_header",
- "//base:base_static",
- "//components/embedder_support/origin_trials",
- "//content/public/common",
- "//ui/base",
- "//url",
- ]
- if (!is_fuchsia) {
- deps += [
- "//components/crash/content/browser",
- "//components/crash/core/app",
- ]
- }
- if (is_win) {
- deps += [ "//sandbox" ]
- }
- configs += [ ":inside_headless_component" ]
- configs += [ ":headless_defines_config" ]
- }
- # Code that is not needed in a renderer process.
- component("headless_non_renderer") {
- sources = [
- "lib/browser/headless_browser_context_impl.cc",
- "lib/browser/headless_browser_context_impl.h",
- "lib/browser/headless_browser_context_options.cc",
- "lib/browser/headless_browser_context_options.h",
- "lib/browser/headless_browser_impl.cc",
- "lib/browser/headless_browser_impl.h",
- "lib/browser/headless_browser_main_parts.cc",
- "lib/browser/headless_browser_main_parts.h",
- "lib/browser/headless_devtools.cc",
- "lib/browser/headless_devtools.h",
- "lib/browser/headless_devtools_agent_host_client.cc",
- "lib/browser/headless_devtools_agent_host_client.h",
- "lib/browser/headless_devtools_client_impl.cc",
- "lib/browser/headless_devtools_manager_delegate.cc",
- "lib/browser/headless_devtools_manager_delegate.h",
- "lib/browser/headless_permission_manager.cc",
- "lib/browser/headless_permission_manager.h",
- "lib/browser/headless_platform_event_source.cc",
- "lib/browser/headless_platform_event_source.h",
- "lib/browser/headless_quota_permission_context.cc",
- "lib/browser/headless_quota_permission_context.h",
- "lib/browser/headless_request_context_manager.cc",
- "lib/browser/headless_request_context_manager.h",
- "lib/browser/headless_select_file_dialog_factory.cc",
- "lib/browser/headless_select_file_dialog_factory.h",
- "lib/browser/headless_web_contents_impl.cc",
- "lib/browser/headless_web_contents_impl.h",
- "lib/browser/headless_window_tree_host.h",
- "lib/browser/protocol/browser_handler.cc",
- "lib/browser/protocol/browser_handler.h",
- "lib/browser/protocol/domain_handler.h",
- "lib/browser/protocol/headless_devtools_session.cc",
- "lib/browser/protocol/headless_devtools_session.h",
- "lib/browser/protocol/headless_handler.cc",
- "lib/browser/protocol/headless_handler.h",
- "lib/browser/protocol/page_handler.cc",
- "lib/browser/protocol/page_handler.h",
- "lib/browser/protocol/target_handler.cc",
- "lib/browser/protocol/target_handler.h",
- "public/headless_browser_context.h",
- "public/headless_devtools_channel.h",
- "public/headless_devtools_client.h",
- "public/headless_devtools_target.h",
- "public/headless_web_contents.h",
- ]
- if (is_mac) {
- sources += [
- "lib/browser/headless_browser_impl_mac.mm",
- "lib/browser/headless_browser_main_parts_mac.mm",
- "lib/browser/headless_shell_application_mac.h",
- "lib/browser/headless_shell_application_mac.mm",
- ]
- }
- if (is_linux || is_chromeos) {
- sources += [ "lib/browser/headless_browser_main_parts_linux.cc" ]
- }
- if (headless_use_policy) {
- sources += [
- "lib/browser/headless_pref_names.cc",
- "lib/browser/headless_pref_names.h",
- "lib/browser/policy/headless_browser_policy_connector.cc",
- "lib/browser/policy/headless_browser_policy_connector.h",
- "lib/browser/policy/headless_mode_policy.cc",
- "lib/browser/policy/headless_mode_policy.h",
- "lib/browser/policy/headless_policies.cc",
- "lib/browser/policy/headless_policies.h",
- ]
- }
- if (use_aura) {
- sources += [
- "lib/browser/headless_browser_impl_aura.cc",
- "lib/browser/headless_clipboard.cc",
- "lib/browser/headless_clipboard.h",
- "lib/browser/headless_focus_client.cc",
- "lib/browser/headless_focus_client.h",
- "lib/browser/headless_screen.cc",
- "lib/browser/headless_screen.h",
- "lib/browser/headless_window_parenting_client.cc",
- "lib/browser/headless_window_parenting_client.h",
- "lib/browser/headless_window_tree_host.cc",
- ]
- }
- public_deps = [
- ":headless_shared_sources",
- "//base",
- "//net",
- ]
- data_deps = []
- data = []
- defines = []
- if (enable_basic_printing) {
- public_deps += [ "//skia" ]
- }
- deps = [
- ":backend_cdp_bindings",
- ":version_header",
- "//base:base_static",
- "//build:branding_buildflags",
- "//build:chromeos_buildflags",
- "//components/cookie_config",
- "//components/embedder_support",
- "//components/keyed_service/content",
- "//components/os_crypt:os_crypt",
- "//components/policy:generated",
- "//components/policy/core/browser",
- "//components/policy/core/common:common_constants",
- "//components/pref_registry",
- "//components/prefs",
- "//components/profile_metrics",
- "//components/security_state/core",
- "//content/public/app",
- "//content/public/browser",
- "//content/public/common",
- "//printing/buildflags",
- "//services/cert_verifier/public/mojom",
- "//services/device/public/cpp/geolocation",
- "//services/service_manager/public/cpp",
- "//third_party/inspector_protocol:crdtp",
- "//ui/base",
- "//ui/base/clipboard",
- "//ui/compositor",
- "//ui/display",
- "//ui/events/devices",
- "//ui/gfx",
- "//ui/shell_dialogs",
- "//url",
- ]
- if (enable_basic_printing) {
- deps += [
- "//components/printing/browser",
- "//components/printing/browser/headless",
- "//components/printing/browser/print_to_pdf:print_to_pdf",
- "//components/printing/common:mojo_interfaces",
- "//printing",
- "//printing/mojom",
- ]
- }
- if (is_component_build) {
- sources += [
- "lib/browser/headless_content_browser_client.cc",
- "lib/browser/headless_content_browser_client.h",
- "lib/headless_content_main_delegate.cc",
- "lib/headless_content_main_delegate.h",
- "lib/renderer/headless_content_renderer_client.cc",
- "lib/renderer/headless_content_renderer_client.h",
- "lib/utility/headless_content_utility_client.cc",
- "lib/utility/headless_content_utility_client.h",
- ]
- if (is_mac) {
- sources += [ "lib/headless_content_main_delegate_mac.mm" ]
- }
- if (enable_basic_printing) {
- sources += [
- "lib/renderer/headless_print_render_frame_helper_delegate.cc",
- "lib/renderer/headless_print_render_frame_helper_delegate.h",
- ]
- }
- deps += [
- "//components/crash/core/common",
- "//components/security_state/content",
- "//gin",
- "//third_party/blink/public:blink",
- "//ui/gl",
- "//v8",
- ]
- if (!is_fuchsia) {
- deps += [
- "//components/crash/content/browser",
- "//components/crash/core/app",
- ]
- }
- if (enable_basic_printing) {
- deps += [
- "//components/printing/browser",
- "//components/printing/renderer",
- "//components/services/print_compositor",
- "//components/services/print_compositor/public/mojom",
- ]
- }
- if (headless_use_prefs) {
- deps += [ "//components/os_crypt" ]
- }
- if (headless_use_policy) {
- deps += [
- "//components/policy/content",
- "//components/user_prefs",
- ]
- }
- }
- if (is_linux || is_chromeos) {
- data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
- }
- # Normally set to false (see build/args/headless.gn), but we can optionally
- # use external v8 startup data too.
- if ((!is_win || is_component_build) && v8_use_external_startup_data) {
- public_deps += [ "//v8" ]
- if (use_v8_context_snapshot) {
- data += [ "$root_out_dir/$v8_context_snapshot_filename" ]
- data_deps += [ "//tools/v8_context_snapshot" ]
- } else {
- data += [ "$root_out_dir/snapshot_blob.bin" ]
- }
- }
- if (is_mac) {
- deps += [ ":mac_helpers" ]
- frameworks = [
- "AppKit.framework",
- "CoreFoundation.framework",
- ]
- } else {
- deps += [ "//ui/aura" ]
- }
- if (headless_use_embedded_resources) {
- defines += [ "HEADLESS_USE_EMBEDDED_RESOURCES" ]
- deps += [
- ":embedded_resource_pack_data",
- ":embedded_resource_pack_strings",
- ]
- sources += [
- "$root_gen_dir/headless/embedded_resource_pack_data.cc",
- "$root_gen_dir/headless/embedded_resource_pack_data.h",
- "$root_gen_dir/headless/embedded_resource_pack_strings.cc",
- "$root_gen_dir/headless/embedded_resource_pack_strings.h",
- ]
- } else {
- deps += [
- ":resource_pack_data",
- ":resource_pack_strings",
- ]
- }
- if (use_ozone) {
- deps += [ "//ui/ozone" ]
- }
- if (use_dbus) {
- defines += [ "USE_DBUS" ]
- deps += [ "//device/bluetooth" ]
- }
- configs += [ ":inside_headless_component" ]
- configs += [ ":headless_defines_config" ]
- }
- # Headless renderer is a convenience library for non component builds that
- # includes headless classes that depend on the renderer.
- if (!is_component_build) {
- static_library("headless_renderer") {
- defines = []
- sources = [
- "lib/browser/headless_web_contents_impl.cc",
- "lib/browser/headless_web_contents_impl.h",
- "lib/headless_content_main_delegate.cc",
- "lib/headless_content_main_delegate.h",
- "lib/renderer/headless_content_renderer_client.cc",
- "lib/renderer/headless_content_renderer_client.h",
- "lib/utility/headless_content_utility_client.cc",
- "lib/utility/headless_content_utility_client.h",
- ]
- if (is_mac) {
- sources += [ "lib/headless_content_main_delegate_mac.mm" ]
- }
- if (enable_basic_printing) {
- sources += [
- "lib/renderer/headless_print_render_frame_helper_delegate.cc",
- "lib/renderer/headless_print_render_frame_helper_delegate.h",
- ]
- }
- public_deps = [ ":headless_shared_sources" ]
- deps = [
- "//build:chromeos_buildflags",
- "//components/crash/core/common",
- "//components/security_state/content",
- "//components/security_state/core",
- "//content/public/app",
- "//content/public/browser",
- "//content/public/common",
- "//content/public/renderer",
- "//content/public/utility",
- "//printing/buildflags",
- "//third_party/blink/public:blink_headers",
- "//ui/base",
- "//ui/compositor",
- "//v8",
- ]
- if (use_ozone) {
- deps += [ "//ui/ozone" ]
- }
- if (enable_basic_printing) {
- deps += [
- "//components/printing/browser/headless:headless",
- "//components/printing/renderer",
- "//components/services/print_compositor",
- "//components/services/print_compositor/public/mojom",
- ]
- }
- configs += [ ":headless_defines_config" ]
- if (is_mac || is_win || is_linux || is_chromeos) {
- deps += [ "//components/crash/core/app" ]
- }
- # TODO(caseq): this is only here because we build headless_content_main_delegate.cc in renderer.
- # Move it to the browser-specific part.
- if (headless_use_embedded_resources) {
- defines += [ "HEADLESS_USE_EMBEDDED_RESOURCES" ]
- deps += [
- ":embedded_resource_pack_data",
- ":embedded_resource_pack_strings",
- ]
- sources += [
- "$root_gen_dir/headless/embedded_resource_pack_data.cc",
- "$root_gen_dir/headless/embedded_resource_pack_data.h",
- "$root_gen_dir/headless/embedded_resource_pack_strings.cc",
- "$root_gen_dir/headless/embedded_resource_pack_strings.h",
- ]
- }
- }
- } else {
- # For component builds all dependencies are already included in the headless
- # component.
- group("headless_renderer") {
- public_deps = [ ":headless_non_renderer" ]
- }
- }
- group("headless_tests") {
- testonly = true
- deps = [
- ":headless_browsertests",
- ":headless_example",
- ":headless_unittests",
- ]
- }
- test("headless_unittests") {
- sources = [
- "public/domains/types_unittest.cc",
- "public/util/error_reporter_unittest.cc",
- # Headers for code under test that aren't normally exposed.
- "public/headless_export.h",
- "public/util/error_reporter.h",
- ]
- # Headers for generated API code under test.
- sources += generated_devtools_api_headers
- defines = []
- deps = [
- ":gen_devtools_client_api",
- ":headless_non_renderer",
- ":headless_shell_lib",
- "//base/test:run_all_unittests",
- "//base/test:test_support",
- "//components/security_state/content",
- "//content/public/app",
- "//content/public/child:child",
- "//content/public/common",
- "//testing/gmock",
- "//testing/gtest",
- ]
- if (is_win) {
- deps += [ "//components/crash/core/app:crash_export_thunks" ]
- }
- if (enable_basic_printing) {
- deps += [
- "//components/printing/browser",
- "//components/printing/browser/headless",
- "//printing",
- "//printing/buildflags",
- "//third_party/blink/public:blink",
- ]
- }
- configs += [ ":headless_defines_config" ]
- }
- if (is_mac) {
- copy("mac_helpers") {
- sources = [ "$root_out_dir/chrome_crashpad_handler" ]
- deps = [ "//components/crash/core/app:chrome_crashpad_handler" ]
- outputs = [ "$root_out_dir/Helpers/{{source_file_part}}" ]
- }
- }
- test("headless_browsertests") {
- configs += [
- "//net:net_test_config",
- "//tools/v8_context_snapshot:use_v8_context_snapshot",
- "//v8:external_startup_data",
- ]
- sources = [
- "test/headless_browser_browsertest.cc",
- "test/headless_browser_context_browsertest.cc",
- "test/headless_browser_test.cc",
- "test/headless_browser_test.h",
- "test/headless_client_browsertest.cc",
- "test/headless_devtools_client_browsertest.cc",
- "test/headless_origin_trials_browsertest.cc",
- "test/headless_test_launcher.cc",
- "test/headless_web_contents_browsertest.cc",
- "test/test_network_interceptor.cc",
- "test/test_network_interceptor.h",
- ]
- if (enable_basic_printing && enable_pdf) {
- sources += [ "test/headless_printtopdf_browsertest.cc" ]
- }
- if (headless_use_policy) {
- sources += [
- "test/headless_policy_browsertest.cc",
- "test/headless_policy_browsertest.h",
- ]
- }
- # TODO(crbug.com/1318548): Enable on Fuchsia when no longer flakily timeout.
- if (!is_fuchsia) {
- sources += [
- "test/headless_compositor_browsertest.cc",
- "test/headless_protocol_browsertest.cc",
- "test/headless_protocol_browsertest.h",
- ]
- }
- data = [
- "test/data/",
- "test/dom_tree_extraction_expected_nodes.txt",
- "test/dom_tree_extraction_expected_styles.txt",
- "$root_out_dir/headless_lib_data.pak",
- "$root_out_dir/headless_lib_strings.pak",
- "//net/tools/testserver/",
- "//third_party/blink/web_tests/http/tests/inspector-protocol/",
- "//third_party/pywebsocket3/",
- ]
- data_deps = []
- if (is_fuchsia) {
- use_cfv1 = false
- # TODO(https://crbug.com/1185811): Investigate removing the requirement for
- # job_policy_ambient_mark_vmo_exec for the sake of V8's allocator in tests.
- test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml"
- additional_manifest_fragments = [
- "//build/config/fuchsia/test/fonts.shard.test-cml",
- "//build/config/fuchsia/test/network.shard.test-cml",
- "//third_party/fuchsia-sdk/sdk/pkg/vulkan/client.shard.cml",
- ]
- }
- if (is_mac) {
- data_deps += [ ":mac_helpers" ]
- }
- defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
- deps = [
- ":headless_shell_lib",
- "//base",
- "//cc:test_support",
- "//components/policy/core/browser",
- "//components/security_state/content",
- "//content/test:browsertest_support",
- "//content/test:test_support",
- "//gin",
- "//net:test_support",
- "//pdf:buildflags",
- "//printing/buildflags",
- "//services/device/public/cpp:test_support",
- "//services/network/public/mojom",
- "//testing/gmock",
- "//testing/gtest",
- "//ui/base/clipboard",
- "//ui/shell_dialogs",
- ]
- if (is_mac) {
- deps += [ "//services/device/public/cpp:test_support" ]
- }
- if (!is_fuchsia) {
- deps += [ "//third_party/crashpad/crashpad/client" ]
- }
- if (enable_basic_printing) {
- deps += [
- "//components/printing/browser",
- "//printing",
- ]
- if (enable_pdf) {
- deps += [ "//pdf" ]
- }
- }
- if (headless_use_policy) {
- deps += [ "//components/policy/core/common:test_support" ]
- }
- configs += [ ":headless_defines_config" ]
- }
- if (is_win) {
- # Headless library with only browser dependencies. This is used when no child
- # dependencies are needed in the target (e.g. chrome:main_dll).
- static_library("headless_shell_browser_lib") {
- sources = [
- "app/headless_shell.cc",
- "app/headless_shell.h",
- "app/headless_shell_switches.h",
- "lib/browser/headless_content_browser_client.cc",
- "lib/browser/headless_content_browser_client.h",
- "public/headless_shell.h",
- ]
- deps = [
- ":headless_non_renderer",
- "//build:branding_buildflags",
- "//components/crash/core/app:app",
- "//components/crash/core/app:run_as_crashpad_handler",
- "//components/embedder_support",
- "//content:sandbox_helper_win",
- "//content/public/app",
- "//content/public/browser",
- "//content/public/common",
- "//net",
- "//printing/buildflags",
- "//sandbox",
- ]
- if (headless_use_policy) {
- deps += [ "//components/policy/content" ]
- }
- if (enable_basic_printing) {
- deps += [ "//components/printing/browser/headless:headless" ]
- }
- configs += [ ":headless_defines_config" ]
- }
- }
- # Headless library with all included dependencies. Use this library unless you
- # have browser/child dependencies restrictions.
- static_library("headless_shell_lib") {
- sources = [
- "app/headless_shell.cc",
- "app/headless_shell.h",
- "app/headless_shell_switches.h",
- "public/headless_shell.h",
- ]
- defines = []
- if (!is_component_build) {
- sources += [
- "lib/browser/headless_content_browser_client.cc",
- "lib/browser/headless_content_browser_client.h",
- "lib/utility/headless_content_utility_client.cc",
- "lib/utility/headless_content_utility_client.h",
- ]
- }
- deps = [
- "//build:branding_buildflags",
- "//components/embedder_support",
- "//components/security_state/content",
- "//content",
- "//content/public/app",
- "//content/public/browser",
- "//content/public/child:child",
- "//content/public/common",
- "//content/public/utility",
- "//printing/buildflags",
- ]
- public_deps = [
- ":headless_renderer",
- "//base",
- "//third_party/inspector_protocol:crdtp",
- ]
- if (!is_component_build) {
- public_deps += [ ":headless_non_renderer" ]
- }
- if (!is_fuchsia) {
- deps += [ "//components/crash/content/browser" ]
- }
- if (enable_basic_printing) {
- deps += [
- "//components/printing/browser",
- "//components/printing/browser/headless:headless",
- "//components/printing/renderer",
- "//components/services/print_compositor",
- "//components/services/print_compositor/public/mojom",
- ]
- }
- if (headless_use_policy && !is_component_build) {
- deps += [ "//components/policy/content" ]
- }
- if (is_win) {
- defines = [ "HEADLESS_USE_CRASHPAD" ]
- deps += [
- "//components/crash/core/app:run_as_crashpad_handler",
- "//content:sandbox_helper_win",
- "//sandbox",
- ]
- }
- if (is_mac) {
- deps += [ "//components/os_crypt" ]
- }
- if (is_win || (is_posix && !is_mac)) {
- deps += [ "//components/crash/core/app" ]
- }
- configs += [ ":headless_defines_config" ]
- }
- executable("headless_shell") {
- sources = [ "app/headless_shell_main.cc" ]
- defines = []
- deps = [ ":headless_shell_lib" ]
- if (!headless_use_embedded_resources) {
- data = [
- "$root_out_dir/headless_lib_data.pak",
- "$root_out_dir/headless_lib_strings.pak",
- ]
- }
- if (is_win) {
- deps += [
- "//build/win:default_exe_manifest",
- "//content/public/app",
- ]
- }
- if (is_mac) {
- deps += [ "//sandbox/mac:seatbelt" ]
- }
- configs += [ ":headless_defines_config" ]
- }
- process_version("version_header") {
- template_file = "public/version.h.in"
- sources = [
- "//chrome/VERSION",
- lastchange_file,
- ]
- output = "$target_gen_dir/public/version.h"
- }
- executable("headless_example") {
- sources = [ "app/headless_example.cc" ]
- defines = []
- deps = [
- ":headless_shell_lib",
- "//content",
- "//sandbox",
- "//skia", # we need this to override font render hinting in headless build
- "//ui/gfx/geometry",
- ]
- if (is_win) {
- deps += [ "//content/public/app" ]
- }
- configs += [ ":headless_defines_config" ]
- }
|