Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(296)

Unified Diff: headless/BUILD.gn

Issue 2902583002: Add some closureised JS bindings for DevTools for use by headless embedder (Closed)
Patch Set: Don't run the test on windows because js_binary doesn't work Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: headless/BUILD.gn
diff --git a/headless/BUILD.gn b/headless/BUILD.gn
index d14d75181a86e01aafba61b91e41acef688b5571..1555eca4ff3a7bfa77f06ff864ce0afb25f26e1f 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")
@@ -159,7 +160,10 @@ devtools_domains = [
]
generated_devtools_api = []
+generated_devtools_api_js = []
foreach(domain, devtools_domains) {
+ generated_devtools_api_js +=
+ [ "$target_gen_dir/public/devtools/domains/" + domain + ".js" ]
Sami 2017/05/24 09:16:21 Could we put these in //headless/public/devtools_j
alex clarke (OOO till 29th) 2017/05/24 11:38:14 They need to be in the gen directory right? I can
generated_devtools_api += [
"$target_gen_dir/public/devtools/domains/" + domain + ".cc",
"$target_gen_dir/public/devtools/domains/" + domain + ".h",
@@ -181,11 +185,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",
@@ -200,6 +205,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 = [
@@ -495,6 +507,62 @@ if (is_mac) {
}
}
+js_binary("js_devtools_bindings_test") {
+ sources = [
+ "test/bindings_test.js",
+ "test/test_harness.js",
+ ]
+ deps = [
+ ":js_devtools_bindings_lib",
+ ]
+ extra_deps = []
+ 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=goog.DevTools.BindingsTest",
+ "create_renaming_reports",
Sami 2017/05/24 09:16:21 Do we need the report if we don't do renaming?
alex clarke (OOO till 29th) 2017/05/24 11:38:14 Done.
+ ]
+}
+
+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",
@@ -514,6 +582,7 @@ test("headless_browsertests") {
]
data = [
+ "$root_out_dir/headless_browser_tests.pak",
"$root_out_dir/headless_lib.pak",
"//net/tools/testserver/",
"//third_party/pyftpdlib/",
@@ -546,6 +615,12 @@ test("headless_browsertests") {
"//testing/gtest",
]
+ # The js_binary rule doesn't currently work on windows.
+ if (!is_win) {
+ sources += [ "test/headless_js_bindings_browsertest.cc" ]
+ deps += [ ":headless_browser_tests_pak" ]
+ }
+
if (enable_basic_printing) {
deps += [
"//components/printing/browser",
« no previous file with comments | « no previous file | headless/headless_browsertest_resources.grd » ('j') | headless/lib/browser/devtools_api/client_api_generator.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698