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

Unified Diff: tools/grit/grit_rule.gni

Issue 2094193004: Strip comments and whitespace from Javascript resources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Respond to comments, plus rebases. Created 4 years, 5 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: tools/grit/grit_rule.gni
diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni
index b77a24d5e6fb3f2f429bb47c8f71fcea2941774e..1749c088a7bc4b25403ae6206fef5fe486670a82 100644
--- a/tools/grit/grit_rule.gni
+++ b/tools/grit/grit_rule.gni
@@ -82,6 +82,8 @@ import("//build/config/chrome_build.gni")
import("//build/config/crypto.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
+import("//build/util/java_action.gni")
+import("//third_party/closure_compiler/compile_js2.gni")
declare_args() {
# Enables used resource whitelist generation.
@@ -89,6 +91,7 @@ declare_args() {
}
grit_defines = []
+grit_environment = []
# Mac and iOS want Title Case strings.
use_titlecase_in_grd_files = is_mac || is_ios
@@ -103,6 +106,8 @@ if (is_chrome_branded) {
grit_defines += [
"-D",
"_google_chrome",
+ ]
+ grit_environment += [
"-E",
"CHROMIUM_BUILD=google_chrome",
]
@@ -110,6 +115,8 @@ if (is_chrome_branded) {
grit_defines += [
"-D",
"_chromium",
+ ]
+ grit_environment += [
"-E",
"CHROMIUM_BUILD=chromium",
]
@@ -174,7 +181,7 @@ if (enable_image_loader_extension) {
}
if (is_android) {
- grit_defines += [
+ grit_environment += [
"-E",
"ANDROID_JAVA_TAGGED_ONLY=true",
]
@@ -427,7 +434,7 @@ template("grit") {
rebase_path(depfile, root_build_dir),
"--write-only-new=1",
"--depend-on-stamp",
- ] + grit_defines
+ ] + grit_defines + grit_environment
# Add extra defines with -D flags.
if (defined(invoker.defines)) {
@@ -439,6 +446,11 @@ template("grit") {
}
}
+ if (defined(invoker.moved_file_list)) {
+ response_file_contents = invoker.moved_file_list
+ args += [ "--moved-input-file-list={{response_file_name}}" ]
+ }
+
args += grit_flags + assert_files_flags
if (defined(invoker.visibility)) {
@@ -493,3 +505,92 @@ template("grit") {
output_name = grit_output_name
}
}
+
+flatten_resource_path = "//tools/grit/flatten_resource.py"
+closure_compiler_path = "//third_party/closure_compiler/compiler/compiler.jar"
+
+template("strip_js") {
+ assert(defined(invoker.sources),
+ "Need sources in $target_name listing the js files.")
+
+ _target_name = target_name
+
+ action_foreach("${_target_name}_flatten") {
+ script = flatten_resource_path
+ sources = invoker.sources
+ output = "{{source_gen_dir}}/flattened_${target_name}/{{source_file_part}}"
+ outputs = [
+ output,
+ ]
+ args = grit_defines
+ args += [
+ rebase_path("{{source}}"),
+ rebase_path("$root_out_dir/$output"),
+ ]
+ }
+
+ compile_js2_foreach(_target_name) {
+ sources = get_target_outputs(":${_target_name}_flatten")
+ deps = [
+ ":${_target_name}_flatten",
+ ]
+ strip_whitespace = true
+ }
+}
+
+template("strip_and_grit") {
+ _target_name = target_name
+
+ if (strip_resource_files) {
+ strip_js("${_target_name}_stripped") {
+ sources = invoker.js_resource_files
+ }
+ grit(_target_name) {
+ forward_variables_from(invoker,
+ [
+ "source",
+ "outputs",
+ "outputs_dir",
+ "defines",
+ "grit_flags",
+ "output_dir",
+ ])
+ moved_file_list = []
+
+ foreach(js_resource_file, invoker.js_resource_files) {
+ name = get_path_info(js_resource_file, "file")
+
+ # Generating the actual paths is messy, because, to avoid name clashes both the
Dan Beam 2016/07/14 17:47:59 80 col wrap
+ # actions in strip_js use {{source_gen_dir}}, hence adding $root_gen_dir to
+ # the front of the path twice.
+ gen_dir = get_path_info(js_resource_file, "gen_dir")
+ gen_dir_rebased = rebase_path(gen_dir, "//")
+ stripped_target_name = "${_target_name}_stripped"
+ actual = "${root_gen_dir}/${gen_dir_rebased}/flattened_${stripped_target_name}_flatten/closure_${stripped_target_name}/${name}"
+ abs_orig = rebase_path(js_resource_file)
+ abs_actual = rebase_path(actual)
+ moved_file_list += [ "$abs_orig:$abs_actual" ]
+ }
+
+ deps = invoker.deps
+ deps += [ ":${_target_name}_stripped" ]
+ }
+ } else {
+ # If we can't run the closure compiler simply run grit.
+ grit(_target_name) {
+ forward_variables_from(invoker,
+ [
+ "source",
+ "outputs",
+ "outputs_dir",
+ "defines",
+ "grit_flags",
+ "output_dir",
+ ])
+
+ inputs = invoker.js_resource_files
+
+ deps = invoker.deps
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698