| # 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/jumbo.gni") |
| import("//build/util/lastchange.gni") |
| import("//build/util/process_version.gni") |
| import("//headless/headless.gni") |
| import("//mojo/public/tools/bindings/mojom.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") |
| |
| # For code inside the build component "headless". |
| config("inside_headless_component") { |
| defines = [ "HEADLESS_IMPLEMENTATION" ] |
| } |
| |
| group("headless_lib") { |
| deps = [ |
| ":headless", |
| ] |
| } |
| |
| repack("pak") { |
| sources = [ |
| "$root_gen_dir/components/components_resources.pak", |
| "$root_gen_dir/components/strings/components_strings_en-US.pak", |
| "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", |
| "$root_gen_dir/content/app/strings/content_strings_en-US.pak", |
| "$root_gen_dir/content/browser/devtools/devtools_resources.pak", |
| "$root_gen_dir/content/browser/tracing/tracing_resources.pak", |
| "$root_gen_dir/content/content_resources.pak", |
| "$root_gen_dir/headless/headless_lib_resources.pak", |
| "$root_gen_dir/mojo/public/js/mojo_bindings_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_resources.pak", |
| "$root_gen_dir/ui/strings/app_locale_settings_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 = [ |
| ":resources", |
| "//components/resources:components_resources", |
| "//components/strings", |
| "//content:resources", |
| "//content/app/resources", |
| "//content/app/strings", |
| "//content/browser/devtools:resources", |
| "//content/browser/tracing:resources", |
| "//mojo/public/js:resources", |
| "//net:net_resources", |
| "//third_party/blink/public:resources", |
| "//third_party/blink/public:scaled_resources_100_percent", |
| "//ui/resources", |
| "//ui/strings", |
| ] |
| |
| output = "$root_out_dir/headless_lib.pak" |
| } |
| |
| action("embed_resources") { |
| # TODO(altimin): Consider zipping file here, it can reduce size up to 80%. |
| script = "lib/embed_data.py" |
| |
| inputs = [ |
| "$root_out_dir/headless_lib.pak", |
| ] |
| |
| outputs = [ |
| "$root_gen_dir/headless/embedded_resource_pak.cc", |
| "$root_gen_dir/headless/embedded_resource_pak.h", |
| ] |
| |
| args = [ |
| "--data_file", |
| rebase_path("$root_out_dir/headless_lib.pak", root_build_dir), |
| "--gendir", |
| rebase_path("$root_gen_dir", root_build_dir), |
| "--header_file", |
| "headless/embedded_resource_pak.h", |
| "--source_file", |
| "headless/embedded_resource_pak.cc", |
| "--namespace", |
| "headless", |
| "--variable_name", |
| "kHeadlessResourcePak", |
| ] |
| |
| deps = [ |
| ":pak", |
| ] |
| } |
| |
| grit("resources") { |
| source = "lib/resources/headless_lib_resources.grd" |
| outputs = [ |
| "grit/headless_lib_resources.h", |
| "$root_gen_dir/headless/headless_lib_resources.pak", |
| ] |
| source_is_generated = true |
| } |
| |
| devtools_domains = [ |
| "accessibility", |
| "animation", |
| "application_cache", |
| "browser", |
| "cache_storage", |
| "console", |
| "css", |
| "database", |
| "debugger", |
| "device_orientation", |
| "dom", |
| "dom_debugger", |
| "dom_snapshot", |
| "dom_storage", |
| "emulation", |
| "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 = [] |
| generated_devtools_api_js = [] |
| generated_devtools_api_js_externs = [] |
| foreach(domain, devtools_domains) { |
| generated_devtools_api_js += |
| [ "$target_gen_dir/public/devtools_js/" + domain + ".js" ] |
| generated_devtools_api_js_externs += |
| [ "$target_gen_dir/public/devtools_js/externs/externs_" + domain + ".js" ] |
| generated_devtools_api += [ |
| "$target_gen_dir/public/devtools/domains/" + domain + ".cc", |
| "$target_gen_dir/public/devtools/domains/" + domain + ".h", |
| "$target_gen_dir/public/devtools/domains/types_" + domain + ".h", |
| "$target_gen_dir/public/devtools/domains/types_" + domain + ".cc", |
| "$target_gen_dir/public/devtools/internal/type_conversions_" + domain + |
| ".h", |
| "$target_gen_dir/public/devtools/internal/" + |
| "types_forward_declarations_" + domain + ".h", |
| ] |
| } |
| |
| action("gen_devtools_client_api") { |
| script = "lib/browser/devtools_api/client_api_generator.py" |
| deps = [ |
| "//third_party/blink/renderer/core/inspector:protocol_version", |
| ] |
| inputs = [ |
| "$root_gen_dir/third_party/blink/renderer/core/inspector/protocol.json", |
| ] |
| |
| outputs = generated_devtools_api + generated_devtools_api_js + |
| generated_devtools_api_js_externs |
| |
| sources = [ |
| "lib/browser/devtools_api/domain_cc.template", |
| "lib/browser/devtools_api/domain_externs_js.template", |
| "lib/browser/devtools_api/domain_h.template", |
| "lib/browser/devtools_api/domain_js.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", |
| ] |
| } |
| |
| js_library("js_devtools_bindings_lib") { |
| sources = [ "lib/browser/devtools_api/devtools_connection.js" ] + |
| generated_devtools_api_js |
| deps = [] |
| extra_deps = [ ":gen_devtools_client_api" ] |
| } |
| |
| if (headless_fontconfig_utils && !is_fuchsia) { |
| static_library("headless_fontconfig_utils") { |
| sources = [ |
| "public/util/fontconfig.cc", |
| "public/util/fontconfig.h", |
| ] |
| |
| deps = [ |
| "//build/config/freetype", |
| "//third_party/fontconfig", |
| ] |
| |
| configs += [ ":inside_headless_component" ] |
| } |
| } |
| |
| inspector_protocol_generate("protocol_sources") { |
| visibility = [ "//headless" ] |
| deps = [ |
| "//third_party/blink/renderer/core/inspector:protocol_version", |
| ] |
| _blink_protocol_path = rebase_path( |
| "$root_gen_dir/third_party/blink/renderer/core/inspector/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" ] |
| |
| inputs = [ |
| "$root_gen_dir/third_party/blink/renderer/core/inspector/protocol.json", |
| config_file, |
| ] |
| |
| # These are relative to $target_gen_dir. |
| outputs = [ |
| "lib/browser/protocol/base_string_adapter.cc", |
| "lib/browser/protocol/base_string_adapter.h", |
| "lib/browser/protocol/dp_browser.cc", |
| "lib/browser/protocol/dp_browser.h", |
| "lib/browser/protocol/dp_headless_experimental.cc", |
| "lib/browser/protocol/dp_headless_experimental.h", |
| "lib/browser/protocol/dp_page.cc", |
| "lib/browser/protocol/dp_page.h", |
| "lib/browser/protocol/dp_target.cc", |
| "lib/browser/protocol/dp_target.h", |
| "lib/browser/protocol/protocol.cc", |
| "lib/browser/protocol/protocol.h", |
| ] |
| } |
| |
| jumbo_component("headless") { |
| sources = [ |
| "app/headless_shell_switches.cc", |
| "app/headless_shell_switches.h", |
| "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_impl_mac.mm", |
| "lib/browser/headless_browser_main_parts.cc", |
| "lib/browser/headless_browser_main_parts.h", |
| "lib/browser/headless_browser_main_parts_mac.mm", |
| "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_resource_dispatcher_host_delegate.cc", |
| "lib/browser/headless_resource_dispatcher_host_delegate.h", |
| "lib/browser/headless_shell_application_mac.h", |
| "lib/browser/headless_shell_application_mac.mm", |
| "lib/browser/headless_window_tree_host.h", |
| "lib/browser/protocol/browser_handler.cc", |
| "lib/browser/protocol/browser_handler.h", |
| "lib/browser/protocol/domain_handler.cc", |
| "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", |
| "lib/headless_content_client.cc", |
| "lib/headless_content_client.h", |
| "public/headless_browser.cc", |
| "public/headless_browser.h", |
| "public/headless_browser_context.h", |
| "public/headless_devtools_channel.h", |
| "public/headless_devtools_client.h", |
| "public/headless_devtools_target.h", |
| "public/headless_export.h", |
| "public/headless_web_contents.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", |
| ] |
| |
| if (!is_fuchsia) { |
| sources += [ |
| "lib/headless_crash_reporter_client.cc", |
| "lib/headless_crash_reporter_client.h", |
| ] |
| } |
| |
| sources += generated_devtools_api |
| sources += get_target_outputs(":protocol_sources") |
| |
| 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", |
| ] |
| } |
| |
| if (enable_basic_printing) { |
| sources += [ |
| "lib/browser/headless_print_manager.cc", |
| "lib/browser/headless_print_manager.h", |
| ] |
| } |
| |
| public_deps = [ |
| "//base", |
| "//net", |
| ] |
| |
| data_deps = [] |
| data = [] |
| |
| if (enable_basic_printing) { |
| public_deps += [ "//skia" ] |
| } |
| |
| deps = [ |
| ":gen_devtools_client_api", |
| ":protocol_sources", |
| ":version_header", |
| "//base:base_static", |
| "//components/cookie_config", |
| "//components/security_state/core", |
| "//content/public/common", |
| "//content/public/common:service_names", |
| "//services/service_manager/public/cpp", |
| "//ui/base", |
| "//ui/base/clipboard", |
| "//ui/compositor", |
| "//ui/display", |
| "//ui/events/devices", |
| "//url", |
| ] |
| |
| if (is_linux && !is_chromeos) { |
| deps += [ "//components/os_crypt" ] |
| } |
| |
| if (enable_basic_printing) { |
| deps += [ "//components/printing/browser" ] |
| } |
| |
| if (is_component_build) { |
| sources += [ |
| "lib/browser/headless_content_browser_client.cc", |
| "lib/browser/headless_content_browser_client.h", |
| "lib/browser/headless_overlay_manifests.cc", |
| "lib/browser/headless_overlay_manifests.h", |
| "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/headless_content_main_delegate_mac.mm", |
| "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 (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:crash_key", |
| "//components/security_state/content", |
| "//components/services/pdf_compositor/public/cpp:manifest", |
| "//components/services/pdf_compositor/public/interfaces", |
| "//gin", |
| "//third_party/blink/public:blink", |
| "//third_party/blink/public:blink_headers", |
| "//ui/gl", |
| "//v8", |
| ] |
| |
| if (!is_fuchsia) { |
| deps += [ "//components/crash/content/browser" ] |
| } |
| if (is_win) { |
| deps += [ "//components/crash/content/app:crash_export_thunks" ] |
| } |
| |
| if (enable_basic_printing) { |
| deps += [ |
| "//components/printing/browser", |
| "//components/printing/renderer", |
| "//components/services/pdf_compositor/public/cpp:factory", |
| "//components/services/pdf_compositor/public/interfaces", |
| ] |
| } |
| } |
| |
| # 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) || !is_win) { |
| if (v8_use_external_startup_data) { |
| sources += [ "$root_out_dir/natives_blob.bin" ] |
| public_deps += [ "//v8" ] |
| if (use_v8_context_snapshot) { |
| data += [ "$root_out_dir/v8_context_snapshot.bin" ] |
| data_deps += [ "//tools/v8_context_snapshot" ] |
| } else { |
| data += [ "$root_out_dir/snapshot_blob.bin" ] |
| } |
| } |
| } |
| |
| if (is_mac) { |
| deps += [ ":mac_helpers" ] |
| } else { |
| deps += [ "//ui/aura" ] |
| } |
| |
| if (headless_use_embedded_resources) { |
| defines = [ "HEADLESS_USE_EMBEDDED_RESOURCES" ] |
| deps += [ ":embed_resources" ] |
| sources += [ |
| "$root_gen_dir/headless/embedded_resource_pak.cc", |
| "$root_gen_dir/headless/embedded_resource_pak.h", |
| ] |
| } else { |
| deps += [ ":pak" ] |
| } |
| |
| if (use_ozone) { |
| deps += [ "//ui/ozone" ] |
| } |
| |
| if (headless_fontconfig_utils && !is_fuchsia) { |
| deps += [ ":headless_fontconfig_utils" ] |
| } |
| |
| configs += [ ":inside_headless_component" ] |
| } |
| |
| # 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") { |
| 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/headless_content_main_delegate_mac.mm", |
| "lib/renderer/headless_content_renderer_client.cc", |
| "lib/renderer/headless_content_renderer_client.h", |
| ] |
| |
| if (headless_use_embedded_resources) { |
| defines = [ "HEADLESS_USE_EMBEDDED_RESOURCES" ] |
| } |
| |
| if (enable_basic_printing) { |
| sources += [ |
| "lib/renderer/headless_print_render_frame_helper_delegate.cc", |
| "lib/renderer/headless_print_render_frame_helper_delegate.h", |
| ] |
| } |
| |
| deps = [ |
| ":headless", |
| "//components/crash/core/common:crash_key", |
| "//third_party/blink/public:blink_headers", |
| "//ui/base", |
| "//v8", |
| ] |
| if (enable_basic_printing) { |
| deps += [ "//components/printing/renderer" ] |
| } |
| } |
| } else { |
| # For component builds all dependencies are already included in the headless |
| # component. |
| group("headless_renderer") { |
| deps = [ |
| ":headless", |
| ] |
| } |
| } |
| |
| 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", |
| ] |
| |
| if (!is_component_build) { |
| sources += [ |
| "lib/browser/headless_content_browser_client.cc", |
| "lib/browser/headless_content_browser_client.h", |
| "lib/browser/headless_overlay_manifests.cc", |
| "lib/browser/headless_overlay_manifests.h", |
| "lib/utility/headless_content_utility_client.cc", |
| "lib/utility/headless_content_utility_client.h", |
| ] |
| } |
| |
| deps = [ |
| ":headless_renderer", |
| "//base/test:run_all_unittests", |
| "//base/test:test_support", |
| "//components/security_state/content", |
| "//components/services/pdf_compositor/public/cpp:manifest", |
| "//components/services/pdf_compositor/public/interfaces", |
| "//content/public/app:both", |
| "//content/public/child:child", |
| "//content/public/common", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| |
| if (!is_fuchsia) { |
| deps += [ "//components/crash/content/browser" ] |
| } |
| |
| if (is_win) { |
| deps += [ "//components/crash/content/app:crash_export_thunks" ] |
| } |
| |
| if (enable_basic_printing) { |
| sources += [ "lib/browser/headless_printing_unittest.cc" ] |
| deps += [ |
| "//components/printing/browser", |
| "//components/services/pdf_compositor/public/cpp:factory", |
| "//third_party/blink/public:blink", |
| ] |
| } |
| } |
| |
| if (is_mac) { |
| copy("mac_helpers") { |
| sources = [ |
| "$root_out_dir/chrome_crashpad_handler", |
| ] |
| |
| deps = [ |
| "//components/crash/content/app:chrome_crashpad_handler", |
| ] |
| |
| outputs = [ |
| "$root_out_dir/Helpers/{{source_file_part}}", |
| ] |
| } |
| } |
| |
| # The js_binary rule doesn't currently work on windows. Apparently there are |
| # problems on mac too where java isn't necessarily installed. |
| if (is_linux) { |
| js_binary("js_devtools_bindings_test") { |
| sources = [ |
| "test/bindings_test.js", |
| ] |
| deps = [ |
| ":js_devtools_bindings_lib", |
| ] |
| externs_list = [ "lib/tab_socket_externs.js" ] |
| outputs = [ |
| "$target_gen_dir/devtools_bindings_test.js", |
| ] |
| config_files = [] |
| closure_flags = [ |
| "jscomp_error=checkTypes", |
| "dependency_mode=STRICT", |
| |
| # Currently the bindings do not support property renaming so we can't use |
| # ADVANCED_OPTIMIZATIONS here. We could add support via either moving all |
| # the types to externs, or via applying the same renaming to the json |
| # dictionaries sent between C++ and JS. The closure compiler can produce |
| # files which contain those mappings with the appropriate flag. |
| "compilation_level=SIMPLE", |
| "language_out=ES5_STRICT", |
| "entry_point=chromium.BindingsTest", |
| ] |
| } |
| |
| grit("headless_browsertest_resources_grit") { |
| source = "headless_browsertest_resources.grd" |
| outputs = [ |
| "grit/headless_browsertest_resources.h", |
| "$root_gen_dir/headless/headless_browsertest_resources.pak", |
| ] |
| grit_flags = [ |
| "-E", |
| "gen_root=" + rebase_path(root_gen_dir, root_build_dir), |
| ] |
| deps = [ |
| ":js_devtools_bindings_test", |
| ] |
| resource_ids = "lib/headless_browsertest_resource_ids" |
| } |
| |
| repack("headless_browser_tests_pak") { |
| sources = [ |
| "$root_gen_dir/headless/headless_browsertest_resources.pak", |
| ] |
| output = "$root_out_dir/headless_browser_tests.pak" |
| deps = [ |
| ":headless_browsertest_resources_grit", |
| ] |
| } |
| } |
| |
| test("headless_browsertests") { |
| configs += [ "//net:net_test_config" ] |
| sources = [ |
| "lib/headless_browser_browsertest.cc", |
| "lib/headless_browser_context_browsertest.cc", |
| "lib/headless_devtools_client_browsertest.cc", |
| "lib/headless_web_contents_browsertest.cc", |
| "test/headless_browser_test.cc", |
| "test/headless_browser_test.h", |
| "test/headless_client_browsertest.cc", |
| "test/headless_protocol_browsertest.cc", |
| "test/headless_test_launcher.cc", |
| "test/test_network_interceptor.cc", |
| "test/test_network_interceptor.h", |
| ] |
| |
| data = [ |
| "lib/dom_tree_extraction_expected_nodes.txt", |
| "lib/dom_tree_extraction_expected_styles.txt", |
| "$root_out_dir/headless_lib.pak", |
| "//net/tools/testserver/", |
| "//third_party/blink/web_tests/http/tests/inspector-protocol/", |
| "//third_party/pyftpdlib/", |
| "//third_party/pywebsocket/", |
| "//third_party/tlslite/", |
| "test/data/", |
| ] |
| |
| if (is_mac) { |
| data_deps = [ |
| ":mac_helpers", |
| ] |
| } |
| |
| defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| |
| if (!is_component_build) { |
| sources += [ |
| "lib/browser/headless_content_browser_client.cc", |
| "lib/browser/headless_content_browser_client.h", |
| "lib/browser/headless_overlay_manifests.cc", |
| "lib/browser/headless_overlay_manifests.h", |
| "lib/utility/headless_content_utility_client.cc", |
| "lib/utility/headless_content_utility_client.h", |
| ] |
| } |
| |
| deps = [ |
| ":headless_renderer", |
| "//base", |
| "//components/security_state/content", |
| "//components/services/pdf_compositor/public/cpp:manifest", |
| "//components/services/pdf_compositor/public/interfaces", |
| "//content/test:test_support", |
| "//services/network/public/mojom", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//ui/base/clipboard", |
| ] |
| |
| if (!is_fuchsia) { |
| deps += [ |
| "//components/crash/content/app:test_support", |
| "//components/crash/content/browser", |
| ] |
| } |
| |
| if (is_linux) { |
| # Only include this if we built the js_binary |
| data += [ "$root_out_dir/headless_browser_tests.pak" ] |
| sources += [ "test/headless_js_bindings_browsertest.cc" ] |
| deps += [ |
| ":headless_browser_tests_pak", |
| "//ui/gfx:geometry_skia", |
| "//ui/gfx/codec", |
| "//ui/gfx/geometry", |
| ] |
| } |
| |
| if (enable_basic_printing) { |
| deps += [ |
| "//components/printing/browser", |
| "//components/services/pdf_compositor/public/cpp:factory", |
| "//pdf", |
| ] |
| } |
| } |
| |
| 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_win.cc", |
| "lib/browser/headless_content_browser_client.cc", |
| "lib/browser/headless_content_browser_client.h", |
| "lib/browser/headless_overlay_manifests.cc", |
| "lib/browser/headless_overlay_manifests.h", |
| "public/headless_shell.h", |
| ] |
| deps = [ |
| ":headless", |
| "//components/services/pdf_compositor/public/cpp:manifest", |
| "//components/services/pdf_compositor/public/interfaces", |
| "//content:sandbox_helper_win", |
| "//content/public/browser", |
| "//content/public/common", |
| "//net", |
| "//sandbox", |
| ] |
| |
| if (is_multi_dll_chrome) { |
| defines = [ "CHROME_MULTIPLE_DLL_BROWSER" ] |
| 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/headless_content_main_delegate_win.cc", |
| ] |
| deps += [ |
| "//components/crash/core/common:crash_key", |
| "//third_party/blink/public:blink_headers", |
| ] |
| } |
| } |
| |
| # Headless library with child specific dependencies (e.g., renderer). This |
| # is used when no browser depencendies are needed (e.g. chrome:child_dll). |
| static_library("headless_shell_child_lib") { |
| sources = [ |
| "app/headless_shell.cc", |
| "app/headless_shell.h", |
| "app/headless_shell_win.cc", |
| "public/headless_shell.h", |
| ] |
| deps = [ |
| ":headless_renderer", |
| "//content/public/child:child", |
| "//net", |
| "//ui/base", |
| ] |
| |
| if (is_multi_dll_chrome) { |
| defines = [ "CHROME_MULTIPLE_DLL_CHILD" ] |
| 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/headless_content_main_delegate_win.cc", |
| "lib/utility/headless_content_utility_client.cc", |
| "lib/utility/headless_content_utility_client.h", |
| ] |
| deps += [ |
| "//components/crash/core/common:crash_key", |
| "//third_party/blink/public:blink_headers", |
| ] |
| } |
| } |
| } |
| |
| # Headless library with all included dependencies. Use this library unless you |
| # have browser/child dependencies restrictions. |
| jumbo_static_library("headless_shell_lib") { |
| sources = [ |
| "app/headless_shell.cc", |
| "app/headless_shell.h", |
| "public/headless_shell.h", |
| ] |
| |
| if (!is_component_build) { |
| sources += [ |
| "lib/browser/headless_content_browser_client.cc", |
| "lib/browser/headless_content_browser_client.h", |
| "lib/browser/headless_overlay_manifests.cc", |
| "lib/browser/headless_overlay_manifests.h", |
| "lib/utility/headless_content_utility_client.cc", |
| "lib/utility/headless_content_utility_client.h", |
| ] |
| } |
| |
| deps = [ |
| ":headless_renderer", |
| "//components/os_crypt", |
| "//components/security_state/content", |
| "//components/services/pdf_compositor/public/cpp:manifest", |
| "//components/services/pdf_compositor/public/interfaces", |
| "//content/public/app:both", |
| "//content/public/browser", |
| "//content/public/child:child", |
| "//content/public/common", |
| ] |
| |
| public_deps = [ |
| "//base", |
| ] |
| |
| if (!is_fuchsia) { |
| deps += [ "//components/crash/content/browser" ] |
| } |
| |
| if (enable_basic_printing) { |
| deps += [ |
| "//components/printing/browser", |
| "//components/printing/renderer", |
| "//components/services/pdf_compositor/public/cpp:factory", |
| ] |
| } |
| |
| if (is_win) { |
| defines = [ "HEADLESS_USE_CRASPHAD" ] |
| |
| deps += [ |
| "//components/crash/content/app:crash_export_thunks", |
| "//components/crash/content/app:run_as_crashpad_handler", |
| "//content:sandbox_helper_win", |
| "//sandbox", |
| ] |
| } |
| } |
| |
| if (is_fuchsia) { |
| fuchsia_package("headless_shell_pkg") { |
| binary = ":headless_shell" |
| package_name_override = "headless_shell" |
| sandbox_policy = "//build/config/fuchsia/testing_sandbox_policy" |
| } |
| |
| fuchsia_package_runner("headless_shell_fuchsia") { |
| package = ":headless_shell_pkg" |
| package_name_override = "headless_shell" |
| } |
| } |
| |
| executable("headless_shell") { |
| sources = [ |
| "app/headless_shell_main.cc", |
| ] |
| |
| deps = [ |
| ":headless_shell_lib", |
| ] |
| |
| if (!headless_use_embedded_resources) { |
| data = [ |
| "$root_out_dir/headless_lib.pak", |
| ] |
| } |
| |
| if (is_win) { |
| deps += [ "//build/win:default_exe_manifest" ] |
| } |
| |
| if (is_mac) { |
| deps += [ "//sandbox/mac:seatbelt" ] |
| } |
| } |
| |
| 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", |
| ] |
| |
| deps = [ |
| ":headless_shell_lib", |
| "//skia", # we need this to override font render hinting in headless build |
| ] |
| } |