blob: 9c9d392f436b0d91c16679eb3c0cda4d70470a79 [file] [log] [blame]
altimin168fe2a2015-12-02 15:35:211# Copyright 2015 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
esecklerf2531a52016-11-17 20:20:525import("//build/config/chrome_build.gni")
alexclarkea50533ee2016-07-29 11:34:486import("//mojo/public/tools/bindings/mojom.gni")
skyostilfe116162016-02-26 20:53:337import("//testing/test.gni")
skyostil85c6b562016-03-02 16:13:058import("//tools/grit/grit_rule.gni")
skyostilfe116162016-02-26 20:53:339import("//tools/grit/repack.gni")
10
altimin3156ebc2016-06-09 11:43:1511config("headless_implementation") {
12 defines = [ "HEADLESS_IMPLEMENTATION" ]
13}
14
altimin168fe2a2015-12-02 15:35:2115group("headless") {
16 deps = [
17 "//headless:headless_lib",
18 ]
19}
20
skyostilfe116162016-02-26 20:53:3321repack("pak") {
altimin168fe2a2015-12-02 15:35:2122 sources = [
skyostilfe116162016-02-26 20:53:3323 "$root_gen_dir/blink/devtools_resources.pak",
24 "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
25 "$root_gen_dir/blink/public/resources/blink_resources.pak",
esecklerf2531a52016-11-17 20:20:5226 "$root_gen_dir/components/strings/components_strings_en-US.pak",
skyostilfe116162016-02-26 20:53:3327 "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
28 "$root_gen_dir/content/app/strings/content_strings_en-US.pak",
29 "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
30 "$root_gen_dir/content/content_resources.pak",
skyostil85c6b562016-03-02 16:13:0531 "$root_gen_dir/headless/headless_lib_resources.pak",
skyostilfe116162016-02-26 20:53:3332 "$root_gen_dir/net/net_resources.pak",
33 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
34 "$root_gen_dir/ui/resources/webui_resources.pak",
35 "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
36 "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
altimin168fe2a2015-12-02 15:35:2137 ]
38
esecklerf2531a52016-11-17 20:20:5239 if (is_chrome_branded) {
40 sources += [ "${root_gen_dir}/components/strings/components_google_chrome_strings_en-US.pak" ]
41 } else {
42 sources += [ "${root_gen_dir}/components/strings/components_chromium_strings_en-US.pak" ]
43 }
44
altimin168fe2a2015-12-02 15:35:2145 deps = [
skyostil85c6b562016-03-02 16:13:0546 ":headless_lib_resources_grit",
esecklerf2531a52016-11-17 20:20:5247 "//components/strings",
skyostilfe116162016-02-26 20:53:3348 "//content:resources",
49 "//content/app/resources",
50 "//content/app/strings",
51 "//content/browser/devtools:resources",
52 "//content/browser/tracing:resources",
53 "//net:net_resources",
54 "//third_party/WebKit/public:image_resources",
55 "//third_party/WebKit/public:resources",
56 "//ui/resources",
57 "//ui/strings",
58 ]
59
60 output = "$root_out_dir/headless_lib.pak"
61}
62
skyostil85c6b562016-03-02 16:13:0563grit("headless_lib_resources_grit") {
64 source = "lib/resources/headless_lib_resources.grd"
65 outputs = [
66 "grit/headless_lib_resources.h",
67 "$root_gen_dir/headless/headless_lib_resources.pak",
68 ]
69}
70
altimineaffa8e02016-11-08 23:56:3171devtools_domains = [
72 "accessibility",
73 "animation",
74 "application_cache",
75 "cache_storage",
76 "console",
77 "css",
78 "database",
79 "debugger",
80 "device_orientation",
81 "dom",
82 "dom_debugger",
83 "dom_storage",
84 "emulation",
85 "heap_profiler",
86 "indexeddb",
87 "input",
88 "inspector",
89 "io",
90 "layer_tree",
91 "log",
92 "memory",
93 "network",
94 "page",
95 "profiler",
96 "rendering",
97 "runtime",
98 "security",
99 "service_worker",
100 "target",
101 "tracing",
altimin93a02402016-08-03 16:26:43102]
103
altimineaffa8e02016-11-08 23:56:31104generated_devtools_api = [
105 "$target_gen_dir/public/domains/types.h",
106 "$target_gen_dir/public/domains/type_conversions.h",
107]
108foreach(domain, devtools_domains) {
109 generated_devtools_api += [
110 "$target_gen_dir/public/domains/" + domain + ".h",
111 "$target_gen_dir/public/devtools/domains/" + domain + ".cc",
112 "$target_gen_dir/public/devtools/domains/" + domain + ".h",
113 "$target_gen_dir/public/devtools/domains/types_" + domain + ".h",
114 "$target_gen_dir/public/devtools/domains/types_" + domain + ".cc",
115 "$target_gen_dir/public/devtools/internal/type_conversions_" + domain +
116 ".h",
117 "$target_gen_dir/public/devtools/internal/" +
118 "types_forward_declarations_" + domain + ".h",
119 ]
120}
121
skyostil564a1232016-04-20 13:45:18122action("gen_devtools_client_api") {
altimineaffa8e02016-11-08 23:56:31123 script = "//headless/lib/browser/devtools_api/client_api_generator.py"
pfeldmanb34642152016-06-04 01:28:42124 deps = [
125 "//third_party/WebKit/Source/core/inspector:protocol_version",
126 ]
skyostil564a1232016-04-20 13:45:18127 inputs = [
pfeldmanb34642152016-06-04 01:28:42128 "$root_gen_dir/blink/core/inspector/protocol.json",
skyostil564a1232016-04-20 13:45:18129 ]
130
altimin93a02402016-08-03 16:26:43131 outputs = generated_devtools_api
skyostil564a1232016-04-20 13:45:18132
133 sources = [
altimineaffa8e02016-11-08 23:56:31134 "lib/browser/devtools_api/deprecated_type_conversions_h.template",
135 "lib/browser/devtools_api/deprecated_types_h.template",
136 "lib/browser/devtools_api/domain_cc.template",
137 "lib/browser/devtools_api/domain_h.template",
138 "lib/browser/devtools_api/domain_type_conversions_h.template",
139 "lib/browser/devtools_api/domain_types_cc.template",
140 "lib/browser/devtools_api/domain_types_forward_declaration_h.template",
141 "lib/browser/devtools_api/domain_types_h.template",
skyostil564a1232016-04-20 13:45:18142 ]
143
144 args = [
145 "--protocol",
146 rebase_path(inputs[0], root_build_dir),
147 "--output_dir",
altimineaffa8e02016-11-08 23:56:31148 rebase_path(target_gen_dir) + "/public",
skyostil564a1232016-04-20 13:45:18149 ]
150}
151
skyostilfe116162016-02-26 20:53:33152static_library("headless_lib") {
altimin93a02402016-08-03 16:26:43153 sources = generated_devtools_api + [
154 "lib/browser/headless_browser_context_impl.cc",
155 "lib/browser/headless_browser_context_impl.h",
156 "lib/browser/headless_browser_context_options.cc",
157 "lib/browser/headless_browser_context_options.h",
158 "lib/browser/headless_browser_impl.cc",
159 "lib/browser/headless_browser_impl.h",
160 "lib/browser/headless_browser_main_parts.cc",
161 "lib/browser/headless_browser_main_parts.h",
162 "lib/browser/headless_content_browser_client.cc",
163 "lib/browser/headless_content_browser_client.h",
164 "lib/browser/headless_devtools.cc",
165 "lib/browser/headless_devtools.h",
166 "lib/browser/headless_devtools_client_impl.cc",
167 "lib/browser/headless_devtools_client_impl.h",
168 "lib/browser/headless_devtools_manager_delegate.cc",
169 "lib/browser/headless_devtools_manager_delegate.h",
170 "lib/browser/headless_screen.cc",
171 "lib/browser/headless_screen.h",
172 "lib/browser/headless_url_request_context_getter.cc",
173 "lib/browser/headless_url_request_context_getter.h",
174 "lib/browser/headless_web_contents_impl.cc",
175 "lib/browser/headless_web_contents_impl.h",
sky28f20d62016-10-20 23:21:59176 "lib/browser/headless_window_parenting_client.cc",
177 "lib/browser/headless_window_parenting_client.h",
altimin93a02402016-08-03 16:26:43178 "lib/headless_content_client.cc",
179 "lib/headless_content_client.h",
180 "lib/headless_content_main_delegate.cc",
181 "lib/headless_content_main_delegate.h",
182 "lib/renderer/headless_content_renderer_client.cc",
183 "lib/renderer/headless_content_renderer_client.h",
184 "lib/utility/headless_content_utility_client.cc",
185 "lib/utility/headless_content_utility_client.h",
186 "public/headless_browser.cc",
187 "public/headless_browser.h",
188 "public/headless_browser_context.h",
189 "public/headless_devtools_client.h",
190 "public/headless_devtools_host.h",
191 "public/headless_devtools_target.h",
192 "public/headless_export.h",
193 "public/headless_web_contents.h",
194 "public/internal/message_dispatcher.h",
195 "public/internal/value_conversions.h",
196 "public/util/black_hole_protocol_handler.cc",
197 "public/util/black_hole_protocol_handler.h",
alexclarke1660df52016-08-19 14:02:49198 "public/util/deterministic_dispatcher.cc",
199 "public/util/deterministic_dispatcher.h",
alexclarkead540542016-09-23 18:03:37200 "public/util/deterministic_http_protocol_handler.cc",
201 "public/util/deterministic_http_protocol_handler.h",
alexclarke03139e4a2016-10-20 10:15:40202 "public/util/dom_tree_extractor.cc",
203 "public/util/dom_tree_extractor.h",
altimin93a02402016-08-03 16:26:43204 "public/util/error_reporter.cc",
205 "public/util/error_reporter.h",
alexclarke1660df52016-08-19 14:02:49206 "public/util/expedited_dispatcher.cc",
207 "public/util/expedited_dispatcher.h",
208 "public/util/generic_url_request_job.cc",
209 "public/util/generic_url_request_job.h",
alexclarkead540542016-09-23 18:03:37210 "public/util/http_url_fetcher.cc",
211 "public/util/http_url_fetcher.h",
altimin93a02402016-08-03 16:26:43212 "public/util/in_memory_protocol_handler.cc",
213 "public/util/in_memory_protocol_handler.h",
214 "public/util/in_memory_request_job.cc",
215 "public/util/in_memory_request_job.h",
alexclarke1660df52016-08-19 14:02:49216 "public/util/managed_dispatch_url_request_job.cc",
217 "public/util/managed_dispatch_url_request_job.h",
altimineb2571972016-09-30 11:54:27218 "public/util/testing/generic_url_request_mocks.cc",
219 "public/util/testing/generic_url_request_mocks.h",
alexclarke1660df52016-08-19 14:02:49220 "public/util/url_fetcher.cc",
221 "public/util/url_fetcher.h",
222 "public/util/url_request_dispatcher.h",
altimineb2571972016-09-30 11:54:27223 "public/util/user_agent.cc",
224 "public/util/user_agent.h",
altimin93a02402016-08-03 16:26:43225 ]
skyostilfe116162016-02-26 20:53:33226
227 deps = [
skyostil564a1232016-04-20 13:45:18228 ":gen_devtools_client_api",
skyostilfe116162016-02-26 20:53:33229 ":pak",
altimin168fe2a2015-12-02 15:35:21230 "//base",
esecklerf2531a52016-11-17 20:20:52231 "//components/security_state/content",
232 "//components/security_state/core",
skyostil185d8aa2016-04-05 11:36:32233 "//content/public/app:both",
skyostilfe116162016-02-26 20:53:33234 "//content/public/browser",
skyostil185d8aa2016-04-05 11:36:32235 "//content/public/child",
skyostilfe116162016-02-26 20:53:33236 "//content/public/common",
ben51bb6c62016-11-17 20:15:57237 "//content/public/common:service_names",
skyostilfe116162016-02-26 20:53:33238 "//content/public/renderer",
239 "//content/public/utility",
240 "//net",
rockot734fb662016-10-15 16:41:30241 "//services/service_manager/public/cpp",
skyostilebfd86842016-07-28 18:43:42242 "//third_party/mesa:osmesa",
skyostilfe116162016-02-26 20:53:33243 "//ui/aura",
244 "//ui/base",
245 "//ui/compositor",
oshimafa4fba02016-05-03 12:56:54246 "//ui/display",
skyostilfe116162016-02-26 20:53:33247 "//ui/ozone",
248 "//url",
249 ]
altimin3156ebc2016-06-09 11:43:15250
251 configs += [ ":headless_implementation" ]
skyostilfe116162016-02-26 20:53:33252}
253
254group("headless_tests") {
255 testonly = true
256
257 deps = [
258 ":headless_browsertests",
skyostild79e1512016-04-07 17:50:58259 ":headless_unittests",
260 ]
261}
262
263test("headless_unittests") {
264 sources = [
skyostil564a1232016-04-20 13:45:18265 "public/domains/types_unittest.cc",
alexclarke1660df52016-08-19 14:02:49266 "public/util/deterministic_dispatcher_test.cc",
skyostil8ad264e2016-04-11 16:23:06267 "public/util/error_reporter_unittest.cc",
alexclarke1660df52016-08-19 14:02:49268 "public/util/expedited_dispatcher_test.cc",
269 "public/util/generic_url_request_job_test.cc",
270 "public/util/testing/fake_managed_dispatch_url_request_job.cc",
271 "public/util/testing/fake_managed_dispatch_url_request_job.h",
skyostild79e1512016-04-07 17:50:58272 ]
273
274 deps = [
skyostil8ad264e2016-04-11 16:23:06275 ":headless_lib",
skyostild79e1512016-04-07 17:50:58276 "//base/test:run_all_unittests",
277 "//base/test:test_support",
alexclarke1660df52016-08-19 14:02:49278 "//testing/gmock",
skyostild79e1512016-04-07 17:50:58279 "//testing/gtest",
skyostilfe116162016-02-26 20:53:33280 ]
281}
282
alexclarkea50533ee2016-07-29 11:34:48283mojom("embedder_mojo_for_testing") {
284 sources = [
285 "lib/embedder_test.mojom",
286 ]
287}
288
289grit("headless_browsertest_resources_grit") {
290 source = "lib/headless_browsertest_resources.grd"
291 outputs = [
292 "grit/headless_browsertest_resources.h",
293 "$root_gen_dir/headless/headless_browsertest_resources.pak",
294 ]
295 grit_flags = [
296 "-E",
297 "mojom_root=" + rebase_path(root_gen_dir),
298 ]
299 deps = [
300 ":embedder_mojo_for_testing__generator",
301 ]
302 resource_ids = "lib/headless_browsertest_resource_ids"
303}
304
305repack("headless_browser_tests_pak") {
306 sources = [
307 "$root_gen_dir/headless/headless_browsertest_resources.pak",
308 ]
309 output = "$root_out_dir/headless_browser_tests.pak"
310 deps = [
311 ":headless_browsertest_resources_grit",
312 ]
313}
314
skyostilfe116162016-02-26 20:53:33315test("headless_browsertests") {
316 sources = [
alexclarkea50533ee2016-07-29 11:34:48317 "lib/embedder_mojo_browsertest.cc",
skyostilfe116162016-02-26 20:53:33318 "lib/headless_browser_browsertest.cc",
skyostild34af142016-06-23 17:19:45319 "lib/headless_browser_context_browsertest.cc",
skyostil564a1232016-04-20 13:45:18320 "lib/headless_devtools_client_browsertest.cc",
skyostilfe116162016-02-26 20:53:33321 "lib/headless_web_contents_browsertest.cc",
alexclarke03139e4a2016-10-20 10:15:40322 "public/util/dom_tree_extractor_browsertest.cc",
skyostilfe116162016-02-26 20:53:33323 "test/headless_browser_test.cc",
324 "test/headless_browser_test.h",
325 "test/headless_test_launcher.cc",
skyostild34af142016-06-23 17:19:45326 "test/test_protocol_handler.cc",
327 "test/test_protocol_handler.h",
328 "test/test_url_request_job.cc",
329 "test/test_url_request_job.h",
skyostilfe116162016-02-26 20:53:33330 ]
331
alexclarkea50533ee2016-07-29 11:34:48332 data = [
333 "$root_out_dir/headless_browser_tests.pak",
334 ]
335
skyostilfe116162016-02-26 20:53:33336 defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
337
338 deps = [
alexclarkea50533ee2016-07-29 11:34:48339 ":embedder_mojo_for_testing",
340 ":headless_browser_tests_pak",
skyostilfe116162016-02-26 20:53:33341 "//base",
skyostilfe116162016-02-26 20:53:33342 "//content/test:test_support",
343 "//headless:headless_lib",
344 "//testing/gmock",
345 "//testing/gtest",
346 ]
347}
348
skyostila270240b2016-11-03 14:13:30349static_library("headless_shell_lib") {
skyostilfe116162016-02-26 20:53:33350 sources = [
351 "app/headless_shell.cc",
skyostilf52fa5b2016-03-15 11:38:45352 "app/headless_shell_switches.cc",
353 "app/headless_shell_switches.h",
skyostila270240b2016-11-03 14:13:30354 "public/headless_shell.h",
skyostilfe116162016-02-26 20:53:33355 ]
356
357 deps = [
358 "//headless:headless_lib",
altimin168fe2a2015-12-02 15:35:21359 ]
360}
skyostila270240b2016-11-03 14:13:30361
362executable("headless_shell") {
363 sources = [
364 "app/headless_shell_main.cc",
365 ]
366
367 deps = [
368 "//headless:headless_shell_lib",
369 ]
370}