Index: headless/BUILD.gn |
diff --git a/headless/BUILD.gn b/headless/BUILD.gn |
index 1313ee56e76943d8e75b442b572dc56e44dc7732..ff51e83b3e3100fa9ffb12eaf6c473a65d1d906d 100644 |
--- a/headless/BUILD.gn |
+++ b/headless/BUILD.gn |
@@ -8,6 +8,7 @@ import("//headless/headless.gni") |
import("//mojo/public/tools/bindings/mojom.gni") |
import("//printing/features/features.gni") |
import("//testing/test.gni") |
+import("//third_party/closure_compiler/compile_js.gni") |
import("//tools/grit/grit_rule.gni") |
import("//tools/grit/repack.gni") |
@@ -160,7 +161,10 @@ devtools_domains = [ |
] |
generated_devtools_api = [] |
+generated_devtools_api_js = [] |
foreach(domain, devtools_domains) { |
+ generated_devtools_api_js += |
+ [ "$target_gen_dir/public/devtools_js/" + domain + ".js" ] |
generated_devtools_api += [ |
"$target_gen_dir/public/devtools/domains/" + domain + ".cc", |
"$target_gen_dir/public/devtools/domains/" + domain + ".h", |
@@ -182,11 +186,12 @@ action("gen_devtools_client_api") { |
"$root_gen_dir/blink/core/inspector/protocol.json", |
] |
- outputs = generated_devtools_api |
+ outputs = generated_devtools_api + generated_devtools_api_js |
sources = [ |
"lib/browser/devtools_api/domain_cc.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", |
@@ -201,6 +206,13 @@ action("gen_devtools_client_api") { |
] |
} |
+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) { |
static_library("headless_fontconfig_utils") { |
sources = [ |
@@ -507,6 +519,61 @@ if (is_mac) { |
} |
} |
+if (!is_win) { |
+ 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), |
+ ] |
+ 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") { |
sources = [ |
"lib/frame_id_browsertest.cc", |
@@ -560,6 +627,13 @@ test("headless_browsertests") { |
"//testing/gtest", |
] |
+ # The js_binary rule doesn't currently work on windows. |
+ if (!is_win) { |
+ data += [ "$root_out_dir/headless_browser_tests.pak" ] |
+ sources += [ "test/headless_js_bindings_browsertest.cc" ] |
+ deps += [ ":headless_browser_tests_pak" ] |
+ } |
+ |
if (enable_basic_printing) { |
deps += [ |
"//components/printing/browser", |