Index: headless/BUILD.gn |
diff --git a/headless/BUILD.gn b/headless/BUILD.gn |
index d74479a5ad78aecbbedcb0dbac3a49fbb38c3af6..719ee27900f1b89619513e535d12b2ca94dfdc20 100644 |
--- a/headless/BUILD.gn |
+++ b/headless/BUILD.gn |
@@ -19,9 +19,9 @@ config("headless_implementation") { |
} |
} |
-group("headless") { |
+group("headless_lib") { |
deps = [ |
- ":headless_lib", |
+ ":headless", |
] |
} |
@@ -200,7 +200,7 @@ action("gen_devtools_client_api") { |
] |
} |
-static_library("headless_lib") { |
+component("headless") { |
sources = [ |
"app/headless_shell_switches.cc", |
"app/headless_shell_switches.h", |
@@ -214,8 +214,6 @@ static_library("headless_lib") { |
"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_content_browser_client.cc", |
- "lib/browser/headless_content_browser_client.h", |
"lib/browser/headless_devtools.cc", |
"lib/browser/headless_devtools.h", |
"lib/browser/headless_devtools_client_impl.cc", |
@@ -238,17 +236,11 @@ static_library("headless_lib") { |
"lib/browser/headless_tab_socket_impl.h", |
"lib/browser/headless_url_request_context_getter.cc", |
"lib/browser/headless_url_request_context_getter.h", |
- "lib/browser/headless_web_contents_impl.cc", |
- "lib/browser/headless_web_contents_impl.h", |
"lib/browser/headless_window_tree_host.h", |
"lib/headless_content_client.cc", |
"lib/headless_content_client.h", |
- "lib/headless_content_main_delegate.cc", |
- "lib/headless_content_main_delegate.h", |
"lib/headless_crash_reporter_client.cc", |
"lib/headless_crash_reporter_client.h", |
- "lib/renderer/headless_content_renderer_client.cc", |
- "lib/renderer/headless_content_renderer_client.h", |
"public/headless_browser.cc", |
"public/headless_browser.h", |
"public/headless_browser_context.h", |
@@ -324,19 +316,14 @@ static_library("headless_lib") { |
] |
if (enable_basic_printing) { |
- public_deps += [ "//components/printing/browser" ] |
+ public_deps += [ "//skia" ] |
} |
deps = [ |
":gen_devtools_client_api", |
":tab_socket", |
":version_header", |
- "//components/crash/content/browser", |
- "//components/security_state/content", |
"//components/security_state/core", |
- "//content/public/app:both", |
- "//content/public/browser", |
- "//content/public/child:child", |
"//content/public/common", |
"//content/public/common:service_names", |
"//services/service_manager/public/cpp", |
@@ -348,16 +335,37 @@ static_library("headless_lib") { |
"//url", |
] |
+ if (is_component_build) { |
+ sources += [ |
+ "lib/browser/headless_content_browser_client.cc", |
+ "lib/browser/headless_content_browser_client.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/renderer/headless_content_renderer_client.cc", |
+ "lib/renderer/headless_content_renderer_client.h", |
+ ] |
+ |
+ deps += [ |
+ "//components/crash/content/browser", |
+ "//components/security_state/content", |
+ ] |
+ |
+ if (enable_basic_printing) { |
+ deps += [ |
+ "//components/printing/browser", |
+ "//components/printing/renderer", |
+ ] |
+ } |
+ } |
+ |
if (is_mac) { |
deps += [ ":mac_helpers" ] |
} else { |
deps += [ "//ui/aura" ] |
} |
- if (enable_basic_printing) { |
- deps += [ "//components/printing/renderer" ] |
- } |
- |
if (headless_use_embedded_resources) { |
deps += [ ":embed_resources" ] |
sources += [ |
@@ -375,6 +383,30 @@ static_library("headless_lib") { |
configs += [ ":headless_implementation" ] |
} |
+# Headless renderer is a convenience library that includes headless classes |
+# that depend on the renderer. These are not added in case of a component build |
+# since in that case they are already included in the headless component. |
+static_library("headless_renderer") { |
+ deps = [ |
+ ":headless", |
+ ] |
+ if (!is_component_build) { |
+ 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", |
+ ] |
+ deps += [ "//ui/base" ] |
+ if (enable_basic_printing) { |
+ deps += [ "//components/printing/renderer" ] |
+ } |
+ configs += [ ":headless_implementation" ] |
+ } |
+} |
+ |
group("headless_tests") { |
testonly = true |
@@ -396,17 +428,37 @@ test("headless_unittests") { |
"public/util/testing/fake_managed_dispatch_url_request_job.h", |
] |
- if (enable_basic_printing) { |
- sources += [ "lib/browser/headless_printing_unittest.cc" ] |
+ if (is_component_build) { |
+ deps = [ |
+ ":headless", |
+ ] |
+ } else { |
+ sources += [ |
+ "lib/browser/headless_content_browser_client.cc", |
+ "lib/browser/headless_content_browser_client.h", |
+ ] |
+ |
+ deps = [ |
+ ":headless_renderer", |
+ ] |
} |
- deps = [ |
- ":headless_lib", |
+ deps += [ |
"//base/test:run_all_unittests", |
"//base/test:test_support", |
+ "//components/crash/content/browser", |
+ "//components/security_state/content", |
+ "//content/public/app:both", |
+ "//content/public/child:child", |
+ "//content/public/common", |
"//testing/gmock", |
"//testing/gtest", |
] |
+ |
+ if (enable_basic_printing) { |
+ sources += [ "lib/browser/headless_printing_unittest.cc" ] |
+ deps += [ "//components/printing/browser" ] |
+ } |
} |
if (is_mac) { |
@@ -459,19 +511,117 @@ test("headless_browsertests") { |
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
- deps = [ |
- ":headless_lib", |
+ if (is_component_build) { |
+ deps = [ |
+ ":headless", |
+ ] |
+ } else { |
+ sources += [ |
+ "lib/browser/headless_content_browser_client.cc", |
+ "lib/browser/headless_content_browser_client.h", |
+ ] |
+ |
+ deps = [ |
+ ":headless_renderer", |
+ ] |
+ } |
+ |
+ deps += [ |
"//base", |
+ "//components/crash/content/browser", |
+ "//components/security_state/content", |
"//content/test:test_support", |
"//testing/gmock", |
"//testing/gtest", |
] |
if (enable_basic_printing) { |
- deps += [ "//pdf" ] |
+ deps += [ |
+ "//components/printing/browser", |
+ "//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_switches.cc", |
+ "app/headless_shell_switches.h", |
+ "app/shell_navigation_request.cc", |
+ "app/shell_navigation_request.h", |
+ "lib/browser/headless_content_browser_client.cc", |
+ "lib/browser/headless_content_browser_client.h", |
+ "public/headless_shell.h", |
+ ] |
+ |
+ 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", |
+ ] |
+ } |
+ |
+ deps = [ |
+ ":headless", |
+ "//content/public/browser", |
+ "//content/public/common", |
+ "//net", |
+ ] |
+ |
+ if (is_win) { |
+ deps += [ |
+ "//content:sandbox_helper_win", |
+ "//sandbox", |
+ ] |
+ } |
+ |
+ configs += [ ":headless_implementation" ] |
+ } |
+ |
+ # 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_switches.cc", |
+ "app/headless_shell_switches.h", |
+ "app/shell_navigation_request.cc", |
+ "app/shell_navigation_request.h", |
+ "public/headless_shell.h", |
+ ] |
+ |
+ 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", |
+ ] |
+ } |
+ |
+ deps = [ |
+ ":headless_renderer", |
+ "//content/public/child:child", |
+ "//net", |
+ "//ui/base", |
+ ] |
+ |
+ configs += [ ":headless_implementation" ] |
+ } |
+} |
+ |
+# 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", |
@@ -480,14 +630,43 @@ static_library("headless_shell_lib") { |
"app/headless_shell_switches.h", |
"app/shell_navigation_request.cc", |
"app/shell_navigation_request.h", |
+ "lib/browser/headless_content_browser_client.cc", |
+ "lib/browser/headless_content_browser_client.h", |
"public/headless_shell.h", |
] |
- deps = [ |
- ":headless_lib", |
+ if (is_component_build) { |
+ deps = [ |
+ ":headless", |
+ ] |
+ } else { |
+ deps = [ |
+ ":headless_renderer", |
+ ] |
+ } |
+ |
+ deps += [ |
+ "//components/crash/content/browser", |
+ "//components/security_state/content", |
+ "//content/public/app:both", |
+ "//content/public/browser", |
+ "//content/public/child:child", |
+ "//content/public/common", |
] |
- configs += [ ":headless_implementation" ] |
+ if (enable_basic_printing) { |
+ deps += [ |
+ "//components/printing/browser", |
+ "//components/printing/renderer", |
+ ] |
+ } |
+ |
+ if (is_win) { |
+ deps += [ |
+ "//content:sandbox_helper_win", |
+ "//sandbox", |
+ ] |
+ } |
} |
executable("headless_shell") { |
@@ -500,14 +679,8 @@ executable("headless_shell") { |
] |
if (is_win) { |
- deps += [ |
- "//build/win:default_exe_manifest", |
- "//content:sandbox_helper_win", |
- "//sandbox", |
- ] |
+ deps += [ "//build/win:default_exe_manifest" ] |
} |
- |
- configs += [ ":headless_implementation" ] |
} |
process_version("version_header") { |