blob: 84049c5df8172a51c961187b1131799e2b571d07 [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")
altimin6ed1a702017-02-09 11:59:376import("//headless/headless.gni")
alexclarkea50533ee2016-07-29 11:34:487import("//mojo/public/tools/bindings/mojom.gni")
skyostilfe116162016-02-26 20:53:338import("//testing/test.gni")
skyostil85c6b562016-03-02 16:13:059import("//tools/grit/grit_rule.gni")
skyostilfe116162016-02-26 20:53:3310import("//tools/grit/repack.gni")
11
altimin3156ebc2016-06-09 11:43:1512config("headless_implementation") {
13 defines = [ "HEADLESS_IMPLEMENTATION" ]
altimin6ed1a702017-02-09 11:59:3714
15 if (headless_use_embedded_resources) {
16 defines += [ "HEADLESS_USE_EMBEDDED_RESOURCES" ]
17 }
altimin3156ebc2016-06-09 11:43:1518}
19
altimin168fe2a2015-12-02 15:35:2120group("headless") {
21 deps = [
22 "//headless:headless_lib",
23 ]
24}
25
skyostilfe116162016-02-26 20:53:3326repack("pak") {
altimin168fe2a2015-12-02 15:35:2127 sources = [
skyostilfe116162016-02-26 20:53:3328 "$root_gen_dir/blink/devtools_resources.pak",
29 "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
30 "$root_gen_dir/blink/public/resources/blink_resources.pak",
esecklerf2531a52016-11-17 20:20:5231 "$root_gen_dir/components/strings/components_strings_en-US.pak",
skyostilfe116162016-02-26 20:53:3332 "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
33 "$root_gen_dir/content/app/strings/content_strings_en-US.pak",
34 "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
35 "$root_gen_dir/content/content_resources.pak",
skyostil85c6b562016-03-02 16:13:0536 "$root_gen_dir/headless/headless_lib_resources.pak",
skyostilfe116162016-02-26 20:53:3337 "$root_gen_dir/net/net_resources.pak",
38 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
39 "$root_gen_dir/ui/resources/webui_resources.pak",
40 "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
41 "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
altimin168fe2a2015-12-02 15:35:2142 ]
43
esecklerf2531a52016-11-17 20:20:5244 if (is_chrome_branded) {
45 sources += [ "${root_gen_dir}/components/strings/components_google_chrome_strings_en-US.pak" ]
46 } else {
47 sources += [ "${root_gen_dir}/components/strings/components_chromium_strings_en-US.pak" ]
48 }
49
altimin168fe2a2015-12-02 15:35:2150 deps = [
skyostilc05be0b2016-12-16 15:36:1051 ":resources",
esecklerf2531a52016-11-17 20:20:5252 "//components/strings",
skyostilfe116162016-02-26 20:53:3353 "//content:resources",
54 "//content/app/resources",
55 "//content/app/strings",
56 "//content/browser/devtools:resources",
57 "//content/browser/tracing:resources",
58 "//net:net_resources",
59 "//third_party/WebKit/public:image_resources",
60 "//third_party/WebKit/public:resources",
61 "//ui/resources",
62 "//ui/strings",
63 ]
64
65 output = "$root_out_dir/headless_lib.pak"
66}
67
altimin6ed1a702017-02-09 11:59:3768action("embed_resources") {
69 # TODO(altimin): Consider zipping file here, it can reduce size up to 80%.
70 script = "//headless/lib/embed_data.py"
71
72 inputs = [
73 "$root_out_dir/headless_lib.pak",
74 ]
75
76 outputs = [
77 "$root_gen_dir/headless/embedded_resource_pak.cc",
78 "$root_gen_dir/headless/embedded_resource_pak.h",
79 ]
80
81 args = [
82 "--data_file",
83 rebase_path("$root_out_dir/headless_lib.pak"),
84 "--gendir",
85 rebase_path("$root_gen_dir"),
86 "--header_file",
87 "headless/embedded_resource_pak.h",
88 "--source_file",
89 "headless/embedded_resource_pak.cc",
90 "--namespace",
91 "headless",
92 "--variable_name",
93 "kHeadlessResourcePak",
94 ]
95
96 deps = [
97 ":pak",
98 ]
99}
100
skyostilc05be0b2016-12-16 15:36:10101grit("resources") {
skyostil85c6b562016-03-02 16:13:05102 source = "lib/resources/headless_lib_resources.grd"
103 outputs = [
104 "grit/headless_lib_resources.h",
105 "$root_gen_dir/headless/headless_lib_resources.pak",
106 ]
107}
108
altimineaffa8e02016-11-08 23:56:31109devtools_domains = [
110 "accessibility",
111 "animation",
112 "application_cache",
113 "cache_storage",
114 "console",
115 "css",
116 "database",
117 "debugger",
118 "device_orientation",
119 "dom",
120 "dom_debugger",
121 "dom_storage",
122 "emulation",
123 "heap_profiler",
124 "indexeddb",
125 "input",
126 "inspector",
127 "io",
128 "layer_tree",
129 "log",
130 "memory",
131 "network",
132 "page",
133 "profiler",
134 "rendering",
135 "runtime",
136 "security",
137 "service_worker",
138 "target",
139 "tracing",
altimin93a02402016-08-03 16:26:43140]
141
altimineaffa8e02016-11-08 23:56:31142generated_devtools_api = [
143 "$target_gen_dir/public/domains/types.h",
144 "$target_gen_dir/public/domains/type_conversions.h",
145]
146foreach(domain, devtools_domains) {
147 generated_devtools_api += [
148 "$target_gen_dir/public/domains/" + domain + ".h",
149 "$target_gen_dir/public/devtools/domains/" + domain + ".cc",
150 "$target_gen_dir/public/devtools/domains/" + domain + ".h",
151 "$target_gen_dir/public/devtools/domains/types_" + domain + ".h",
152 "$target_gen_dir/public/devtools/domains/types_" + domain + ".cc",
153 "$target_gen_dir/public/devtools/internal/type_conversions_" + domain +
154 ".h",
155 "$target_gen_dir/public/devtools/internal/" +
156 "types_forward_declarations_" + domain + ".h",
157 ]
158}
159
skyostil564a1232016-04-20 13:45:18160action("gen_devtools_client_api") {
altimineaffa8e02016-11-08 23:56:31161 script = "//headless/lib/browser/devtools_api/client_api_generator.py"
pfeldmanb34642152016-06-04 01:28:42162 deps = [
163 "//third_party/WebKit/Source/core/inspector:protocol_version",
164 ]
skyostil564a1232016-04-20 13:45:18165 inputs = [
pfeldmanb34642152016-06-04 01:28:42166 "$root_gen_dir/blink/core/inspector/protocol.json",
skyostil564a1232016-04-20 13:45:18167 ]
168
altimin93a02402016-08-03 16:26:43169 outputs = generated_devtools_api
skyostil564a1232016-04-20 13:45:18170
171 sources = [
altimineaffa8e02016-11-08 23:56:31172 "lib/browser/devtools_api/deprecated_type_conversions_h.template",
173 "lib/browser/devtools_api/deprecated_types_h.template",
174 "lib/browser/devtools_api/domain_cc.template",
175 "lib/browser/devtools_api/domain_h.template",
176 "lib/browser/devtools_api/domain_type_conversions_h.template",
177 "lib/browser/devtools_api/domain_types_cc.template",
skyostilfa434b62016-11-28 18:28:21178 "lib/browser/devtools_api/domain_types_forward_declarations_h.template",
altimineaffa8e02016-11-08 23:56:31179 "lib/browser/devtools_api/domain_types_h.template",
skyostil564a1232016-04-20 13:45:18180 ]
181
182 args = [
183 "--protocol",
184 rebase_path(inputs[0], root_build_dir),
185 "--output_dir",
altimineaffa8e02016-11-08 23:56:31186 rebase_path(target_gen_dir) + "/public",
skyostil564a1232016-04-20 13:45:18187 ]
188}
189
skyostilfe116162016-02-26 20:53:33190static_library("headless_lib") {
altimin93a02402016-08-03 16:26:43191 sources = generated_devtools_api + [
192 "lib/browser/headless_browser_context_impl.cc",
193 "lib/browser/headless_browser_context_impl.h",
194 "lib/browser/headless_browser_context_options.cc",
195 "lib/browser/headless_browser_context_options.h",
196 "lib/browser/headless_browser_impl.cc",
197 "lib/browser/headless_browser_impl.h",
198 "lib/browser/headless_browser_main_parts.cc",
199 "lib/browser/headless_browser_main_parts.h",
200 "lib/browser/headless_content_browser_client.cc",
201 "lib/browser/headless_content_browser_client.h",
202 "lib/browser/headless_devtools.cc",
203 "lib/browser/headless_devtools.h",
204 "lib/browser/headless_devtools_client_impl.cc",
205 "lib/browser/headless_devtools_client_impl.h",
206 "lib/browser/headless_devtools_manager_delegate.cc",
207 "lib/browser/headless_devtools_manager_delegate.h",
skyostilb354f882016-12-13 18:42:45208 "lib/browser/headless_platform_event_source.cc",
209 "lib/browser/headless_platform_event_source.h",
altimin93a02402016-08-03 16:26:43210 "lib/browser/headless_screen.cc",
211 "lib/browser/headless_screen.h",
212 "lib/browser/headless_url_request_context_getter.cc",
213 "lib/browser/headless_url_request_context_getter.h",
214 "lib/browser/headless_web_contents_impl.cc",
215 "lib/browser/headless_web_contents_impl.h",
sky28f20d62016-10-20 23:21:59216 "lib/browser/headless_window_parenting_client.cc",
217 "lib/browser/headless_window_parenting_client.h",
skyostilb354f882016-12-13 18:42:45218 "lib/browser/headless_window_tree_host.cc",
219 "lib/browser/headless_window_tree_host.h",
altimin93a02402016-08-03 16:26:43220 "lib/headless_content_client.cc",
221 "lib/headless_content_client.h",
222 "lib/headless_content_main_delegate.cc",
223 "lib/headless_content_main_delegate.h",
altimin93a02402016-08-03 16:26:43224 "public/headless_browser.cc",
225 "public/headless_browser.h",
226 "public/headless_browser_context.h",
227 "public/headless_devtools_client.h",
228 "public/headless_devtools_host.h",
229 "public/headless_devtools_target.h",
230 "public/headless_export.h",
231 "public/headless_web_contents.h",
232 "public/internal/message_dispatcher.h",
233 "public/internal/value_conversions.h",
234 "public/util/black_hole_protocol_handler.cc",
235 "public/util/black_hole_protocol_handler.h",
alexclarke1660df52016-08-19 14:02:49236 "public/util/deterministic_dispatcher.cc",
237 "public/util/deterministic_dispatcher.h",
alexclarkead540542016-09-23 18:03:37238 "public/util/deterministic_http_protocol_handler.cc",
239 "public/util/deterministic_http_protocol_handler.h",
alexclarke03139e4a2016-10-20 10:15:40240 "public/util/dom_tree_extractor.cc",
241 "public/util/dom_tree_extractor.h",
altimin93a02402016-08-03 16:26:43242 "public/util/error_reporter.cc",
243 "public/util/error_reporter.h",
alexclarke1660df52016-08-19 14:02:49244 "public/util/expedited_dispatcher.cc",
245 "public/util/expedited_dispatcher.h",
246 "public/util/generic_url_request_job.cc",
247 "public/util/generic_url_request_job.h",
alexclarke601573062017-02-03 03:39:20248 "public/util/flat_dom_tree_extractor.cc",
249 "public/util/flat_dom_tree_extractor.h",
alexclarkead540542016-09-23 18:03:37250 "public/util/http_url_fetcher.cc",
251 "public/util/http_url_fetcher.h",
altimin93a02402016-08-03 16:26:43252 "public/util/in_memory_protocol_handler.cc",
253 "public/util/in_memory_protocol_handler.h",
254 "public/util/in_memory_request_job.cc",
255 "public/util/in_memory_request_job.h",
alexclarke1660df52016-08-19 14:02:49256 "public/util/managed_dispatch_url_request_job.cc",
257 "public/util/managed_dispatch_url_request_job.h",
alexclarke4cf935f2017-02-09 17:06:22258 "public/util/navigation_request.h",
altimineb2571972016-09-30 11:54:27259 "public/util/testing/generic_url_request_mocks.cc",
260 "public/util/testing/generic_url_request_mocks.h",
alexclarke1660df52016-08-19 14:02:49261 "public/util/url_fetcher.cc",
262 "public/util/url_fetcher.h",
263 "public/util/url_request_dispatcher.h",
altimineb2571972016-09-30 11:54:27264 "public/util/user_agent.cc",
265 "public/util/user_agent.h",
altimin93a02402016-08-03 16:26:43266 ]
skyostilfe116162016-02-26 20:53:33267
268 deps = [
skyostil564a1232016-04-20 13:45:18269 ":gen_devtools_client_api",
altimin168fe2a2015-12-02 15:35:21270 "//base",
esecklerf2531a52016-11-17 20:20:52271 "//components/security_state/content",
272 "//components/security_state/core",
skyostil185d8aa2016-04-05 11:36:32273 "//content/public/app:both",
skyostilfe116162016-02-26 20:53:33274 "//content/public/browser",
275 "//content/public/common",
ben51bb6c62016-11-17 20:15:57276 "//content/public/common:service_names",
skyostilfe116162016-02-26 20:53:33277 "//net",
rockot734fb662016-10-15 16:41:30278 "//services/service_manager/public/cpp",
skyostilebfd86842016-07-28 18:43:42279 "//third_party/mesa:osmesa",
skyostilfe116162016-02-26 20:53:33280 "//ui/aura",
281 "//ui/base",
282 "//ui/compositor",
oshimafa4fba02016-05-03 12:56:54283 "//ui/display",
skyostilb354f882016-12-13 18:42:45284 "//ui/events/devices",
skyostilfe116162016-02-26 20:53:33285 "//url",
286 ]
altimin3156ebc2016-06-09 11:43:15287
altimin6ed1a702017-02-09 11:59:37288 if (headless_use_embedded_resources) {
289 deps += [ ":embed_resources" ]
290 sources += [
291 "$root_gen_dir/headless/embedded_resource_pak.cc",
292 "$root_gen_dir/headless/embedded_resource_pak.h",
293 ]
294 } else {
295 deps += [ ":pak" ]
296 }
297
skyostilb354f882016-12-13 18:42:45298 if (use_ozone) {
299 deps += [ "//ui/ozone" ]
300 }
301
altimin3156ebc2016-06-09 11:43:15302 configs += [ ":headless_implementation" ]
skyostilfe116162016-02-26 20:53:33303}
304
305group("headless_tests") {
306 testonly = true
307
308 deps = [
309 ":headless_browsertests",
skyostild79e1512016-04-07 17:50:58310 ":headless_unittests",
311 ]
312}
313
314test("headless_unittests") {
315 sources = [
skyostil564a1232016-04-20 13:45:18316 "public/domains/types_unittest.cc",
alexclarke1660df52016-08-19 14:02:49317 "public/util/deterministic_dispatcher_test.cc",
skyostil8ad264e2016-04-11 16:23:06318 "public/util/error_reporter_unittest.cc",
alexclarke1660df52016-08-19 14:02:49319 "public/util/expedited_dispatcher_test.cc",
320 "public/util/generic_url_request_job_test.cc",
321 "public/util/testing/fake_managed_dispatch_url_request_job.cc",
322 "public/util/testing/fake_managed_dispatch_url_request_job.h",
skyostild79e1512016-04-07 17:50:58323 ]
324
325 deps = [
skyostil8ad264e2016-04-11 16:23:06326 ":headless_lib",
skyostild79e1512016-04-07 17:50:58327 "//base/test:run_all_unittests",
328 "//base/test:test_support",
alexclarke1660df52016-08-19 14:02:49329 "//testing/gmock",
skyostild79e1512016-04-07 17:50:58330 "//testing/gtest",
skyostilfe116162016-02-26 20:53:33331 ]
332}
333
alexclarkea50533ee2016-07-29 11:34:48334mojom("embedder_mojo_for_testing") {
335 sources = [
336 "lib/embedder_test.mojom",
337 ]
338}
339
340grit("headless_browsertest_resources_grit") {
341 source = "lib/headless_browsertest_resources.grd"
342 outputs = [
343 "grit/headless_browsertest_resources.h",
344 "$root_gen_dir/headless/headless_browsertest_resources.pak",
345 ]
346 grit_flags = [
347 "-E",
348 "mojom_root=" + rebase_path(root_gen_dir),
349 ]
350 deps = [
351 ":embedder_mojo_for_testing__generator",
352 ]
353 resource_ids = "lib/headless_browsertest_resource_ids"
354}
355
356repack("headless_browser_tests_pak") {
357 sources = [
358 "$root_gen_dir/headless/headless_browsertest_resources.pak",
359 ]
360 output = "$root_out_dir/headless_browser_tests.pak"
361 deps = [
362 ":headless_browsertest_resources_grit",
363 ]
364}
365
skyostilfe116162016-02-26 20:53:33366test("headless_browsertests") {
367 sources = [
alexclarkea50533ee2016-07-29 11:34:48368 "lib/embedder_mojo_browsertest.cc",
skyostilfe116162016-02-26 20:53:33369 "lib/headless_browser_browsertest.cc",
skyostild34af142016-06-23 17:19:45370 "lib/headless_browser_context_browsertest.cc",
skyostil564a1232016-04-20 13:45:18371 "lib/headless_devtools_client_browsertest.cc",
skyostilfe116162016-02-26 20:53:33372 "lib/headless_web_contents_browsertest.cc",
alexclarke03139e4a2016-10-20 10:15:40373 "public/util/dom_tree_extractor_browsertest.cc",
alexclarke601573062017-02-03 03:39:20374 "public/util/flat_dom_tree_extractor_browsertest.cc",
skyostilfe116162016-02-26 20:53:33375 "test/headless_browser_test.cc",
376 "test/headless_browser_test.h",
377 "test/headless_test_launcher.cc",
skyostild34af142016-06-23 17:19:45378 "test/test_protocol_handler.cc",
379 "test/test_protocol_handler.h",
380 "test/test_url_request_job.cc",
381 "test/test_url_request_job.h",
skyostilfe116162016-02-26 20:53:33382 ]
383
alexclarkea50533ee2016-07-29 11:34:48384 data = [
385 "$root_out_dir/headless_browser_tests.pak",
skyostil2f8c758c2016-12-21 19:33:53386 "$root_out_dir/headless_lib.pak",
387 "//net/tools/testserver/",
388 "//third_party/pyftpdlib/",
389 "//third_party/pywebsocket/",
esecklerd2869ff2017-01-19 14:46:21390 "//third_party/skia/",
skyostil2f8c758c2016-12-21 19:33:53391 "//third_party/tlslite/",
392 "test/data/",
alexclarkea50533ee2016-07-29 11:34:48393 ]
394
skyostilfe116162016-02-26 20:53:33395 defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
396
397 deps = [
alexclarkea50533ee2016-07-29 11:34:48398 ":embedder_mojo_for_testing",
399 ":headless_browser_tests_pak",
skyostilfe116162016-02-26 20:53:33400 "//base",
skyostilfe116162016-02-26 20:53:33401 "//content/test:test_support",
402 "//headless:headless_lib",
403 "//testing/gmock",
404 "//testing/gtest",
405 ]
406}
407
skyostila270240b2016-11-03 14:13:30408static_library("headless_shell_lib") {
skyostilfe116162016-02-26 20:53:33409 sources = [
410 "app/headless_shell.cc",
alexclarke4cf935f2017-02-09 17:06:22411 "app/headless_shell.h",
skyostilf52fa5b2016-03-15 11:38:45412 "app/headless_shell_switches.cc",
413 "app/headless_shell_switches.h",
alexclarke4cf935f2017-02-09 17:06:22414 "app/shell_navigation_request.cc",
415 "app/shell_navigation_request.h",
skyostila270240b2016-11-03 14:13:30416 "public/headless_shell.h",
skyostilfe116162016-02-26 20:53:33417 ]
418
419 deps = [
420 "//headless:headless_lib",
altimin168fe2a2015-12-02 15:35:21421 ]
422}
skyostila270240b2016-11-03 14:13:30423
424executable("headless_shell") {
425 sources = [
426 "app/headless_shell_main.cc",
427 ]
428
429 deps = [
430 "//headless:headless_shell_lib",
431 ]
432}