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

Unified Diff: mojo/public/tools/bindings/mojom.gni

Issue 2944153002: Mojo JS bindings: introduce new targets "foo_js"/"foo_js_data_deps" for mojom("foo"). (Closed)
Patch Set: . Created 3 years, 6 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
« no previous file with comments | « mojo/public/js/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/tools/bindings/mojom.gni
diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni
index 05d1f5226cf953b11f17fae0138a7be627886a1b..b0bcce8058d8371dc59e7b0d279d535dec454b51 100644
--- a/mojo/public/tools/bindings/mojom.gni
+++ b/mojo/public/tools/bindings/mojom.gni
@@ -101,8 +101,7 @@ if (enable_mojom_typemapping) {
# is the target name):
#
# foo
-# C++ and Javascript bindings. Other mojom targets should also depend on
-# this target.
+# C++ bindings.
#
# foo_blink
# C++ bindings using Blink standard types.
@@ -110,6 +109,12 @@ if (enable_mojom_typemapping) {
# foo_java
# Java bindings.
#
+# foo_js
+# JavaScript bindings; used as compile-time dependency.
+#
+# foo_js_data_deps
+# JavaScript bindings; used as run-time dependency.
+#
# Parameters:
#
# sources (optional if one of the deps sets listed below is present)
@@ -233,6 +238,11 @@ template("mojom") {
assert(defined(invoker.component_deps_blink))
}
+ if (defined(invoker.use_new_js_bindings)) {
+ assert(invoker.use_new_js_bindings || !invoker.use_new_js_bindings,
+ "Surpress unused variable error when JS bindings are not needed.")
+ }
+
all_deps = []
if (defined(invoker.deps)) {
all_deps += invoker.deps
@@ -456,7 +466,6 @@ template("mojom") {
enabled_sources = []
if (defined(invoker.sources)) {
generator_cpp_outputs = []
- generator_js_outputs = []
generator_java_outputs = []
variant_dash_suffix = ""
if (defined(variant)) {
@@ -540,8 +549,6 @@ template("mojom") {
}
if (!cpp_only) {
- generator_js_outputs =
- [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ]
generator_java_outputs =
[ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ]
}
@@ -554,8 +561,7 @@ template("mojom") {
":$type_mappings_target_name",
"//mojo/public/tools/bindings:precompile_templates",
]
- outputs = generator_cpp_outputs + generator_java_outputs +
- generator_js_outputs
+ outputs = generator_cpp_outputs + generator_java_outputs
args = common_generator_args
if (cpp_only) {
@@ -566,7 +572,7 @@ template("mojom") {
} else {
args += [
"-g",
- "c++,javascript,java",
+ "c++,java",
]
}
@@ -624,11 +630,6 @@ template("mojom") {
if (!defined(invoker.use_once_callback) || invoker.use_once_callback) {
args += [ "--use_once_callback" ]
}
-
- if (!defined(invoker.use_new_js_bindings) ||
- invoker.use_new_js_bindings) {
- args += [ "--use_new_js_bindings" ]
- }
}
}
@@ -711,9 +712,6 @@ template("mojom") {
if (defined(invoker.testonly)) {
testonly = invoker.testonly
}
- if (defined(invoker.sources) && !defined(bindings_configuration.variant)) {
- data = process_file_template(enabled_sources, generator_js_outputs)
- }
defines = []
if (defined(invoker.testonly)) {
testonly = invoker.testonly
@@ -856,6 +854,64 @@ template("mojom") {
}
}
}
+
+ if (!defined(invoker.cpp_only) || !invoker.cpp_only) {
+ if (defined(invoker.sources)) {
+ generator_js_target_name = "${target_name}_js__generator"
+ generator_js_outputs =
+ [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ]
+ action_foreach(generator_js_target_name) {
+ script = mojom_generator_script
+ inputs = mojom_generator_sources
+ sources = []
+ if (defined(invoker.sources)) {
+ sources += invoker.sources
+ }
+ deps = [
+ "//mojo/public/tools/bindings:precompile_templates",
+ ]
+ outputs = generator_js_outputs
+ args = common_generator_args
+ args += [
+ "-g",
+ "javascript",
+ ]
+
+ if (!defined(invoker.use_new_js_bindings) ||
+ invoker.use_new_js_bindings) {
+ args += [ "--use_new_js_bindings" ]
+ }
+ }
+ }
+
+ js_target_name = target_name + "_js"
+ group(js_target_name) {
+ public_deps = []
+ if (defined(invoker.sources)) {
+ public_deps += [ ":$generator_js_target_name" ]
+ }
+
+ foreach(d, all_deps) {
+ full_name = get_label_info(d, "label_no_toolchain")
+ public_deps += [ "${full_name}_js" ]
+ }
+ }
+
+ js_data_deps_target_name = target_name + "_js_data_deps"
+ group(js_data_deps_target_name) {
+ deps = []
+ if (defined(invoker.sources)) {
+ data = process_file_template(invoker.sources, generator_js_outputs)
+ deps += [ ":$generator_js_target_name" ]
+ }
+
+ data_deps = []
+ foreach(d, all_deps) {
+ full_name = get_label_info(d, "label_no_toolchain")
+ data_deps += [ "${full_name}_js_data_deps" ]
+ }
+ }
+ }
}
# A helper for the mojom() template above when component libraries are desired
« no previous file with comments | « mojo/public/js/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698