Chromium Code Reviews| Index: chrome/browser/resources/chromeos/chromevox/BUILD.gn |
| diff --git a/chrome/browser/resources/chromeos/chromevox/BUILD.gn b/chrome/browser/resources/chromeos/chromevox/BUILD.gn |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..849826c3c58842bee3b17d07ab19e8c27e45e545 |
| --- /dev/null |
| +++ b/chrome/browser/resources/chromeos/chromevox/BUILD.gn |
| @@ -0,0 +1,392 @@ |
| +# Copyright 2015 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +if (is_chromeos) { |
|
brettw
2015/06/13 01:36:43
assert(is_chromeos) here too
|
| + declare_args() { |
| + chromevox_compress_js = !is_debug |
|
brettw
2015/06/13 01:36:43
This should have a comment above it describing wha
|
| + } |
| + |
| + import("//build/config/features.gni") |
|
brettw
2015/06/13 01:36:43
I usually put these at the very top.
|
| + import("//testing/test.gni") |
| + import("//chrome/test/base/js2gtest.gni") |
| + import("chromevox.gni") |
| + |
| + chromevox_out_dir = "$root_out_dir/resources/chromeos/chromevox" |
| + |
| + group("chromevox") { |
| + deps = [ |
| + "//chrome/browser/resources/chromeos/braille_ime:braille_ime_manifest", |
| + "//chrome/third_party/chromevox:chromevox_third_party_resources", |
| + "//third_party/liblouis", |
| + |
| + #<(DEPTH)/third_party/liblouis/liblouis_nacl.gyp:liblouis_nacl_wrapper_nacl' # TODO(GYP) |
| + ":chromevox_copied_files", |
| + ":chromevox_manifest", |
| + ":chromevox_guest_manifest", |
| + "strings:chromevox_strings", |
|
brettw
2015/06/13 01:36:43
We prefer full paths to relative dirs. Can you add
|
| + ] |
| + if (chromevox_compress_js) { |
| + deps += [ |
| + ":chromevox1_background_script", |
| + ":chromevox1_content_script", |
| + ":chromevox1_kbexplorer_script", |
| + ":chromevox1_options_script", |
| + ":chromevox2_background_script", |
| + ] |
| + } else { |
| + deps += [ ":chromevox_deps_js" ] |
| + } |
| + } |
| + |
| + template("run_jsbundler") { |
|
brettw
2015/06/13 01:36:43
This is only called once. If you plan on using it
|
| + assert(defined(invoker.mode)) |
| + assert(defined(invoker.sources)) |
| + if (defined(invoker.modules)) { |
| + modules = invoker.modules |
| + } else { |
| + modules = [] |
| + } |
| + if (defined(invoker.rewrite_rules)) { |
| + rewrite_rules = invoker.rewrite_rules |
| + } else { |
| + rewrite_rules = [] |
| + } |
| + action(target_name) { |
| + script = "tools/jsbundler.py" |
| + inputs = jsbundler_modules |
| + sources = invoker.sources |
| + if (defined(invoker.output_file)) { |
| + if (defined(invoker.modules)) { |
| + depfile = "$target_out_dir/" + |
| + get_path_info(invoker.output_file, "name") + ".d" |
| + } |
| + outputs = [ |
| + invoker.output_file, |
| + ] |
| + } else { |
| + assert(!defined(invoker.modules)) |
| + outputs = [] |
| + } |
| + if (defined(invoker.outputs)) { |
| + outputs += invoker.outputs |
| + } |
| + args = [ |
| + "-m", |
| + invoker.mode, |
| + ] |
| + if (defined(depfile)) { |
| + args += [ |
| + "--depfile", |
| + rebase_path(depfile, root_build_dir), |
| + ] |
| + } |
| + if (defined(invoker.output_file)) { |
| + args += [ |
| + "-o", |
| + rebase_path(invoker.output_file, root_build_dir), |
| + ] |
| + } |
| + if (defined(invoker.dest_dir)) { |
| + args += [ |
| + "-d", |
| + rebase_path(invoker.dest_dir, root_build_dir), |
| + ] |
| + } |
| + foreach(module, modules) { |
| + args += [ |
| + "-M", |
| + rebase_path(module, root_build_dir), |
| + ] |
| + } |
| + foreach(rule, rewrite_rules) { |
| + args += [ |
| + "-w", |
| + rule, |
| + ] |
| + } |
| + args += rebase_path(sources, root_build_dir) |
| + } |
| + } |
| + |
| + chromevox_assets_gypi_values = |
| + exec_script("//build/gypi_to_gn.py", |
| + [ rebase_path("chromevox_assets.gypi") ], |
| + "scope", |
| + [ "chromevox_assets.gypi" ]) |
| + |
| + chromevox_vars_gypi_values = |
| + exec_script("//build/gypi_to_gn.py", |
| + [ rebase_path("chromevox_vars.gypi") ], |
| + "scope", |
| + [ "chromevox_vars.gypi" ]) |
| + |
| + # Instead of setting up one copy target for each subdirectory, use a script |
| + # to copy all files. |
| + run_jsbundler("chromevox_copied_files") { |
| + mode = "copy" |
| + dest_dir = chromevox_out_dir |
| + sources = chromevox_assets_gypi_values.chromevox_assets_chromevox |
| + sources += chromevox_assets_gypi_values.chromevox_assets_chromevox_background_earcons |
| + sources += chromevox_assets_gypi_values.chromevox_assets_chromevox_background_keymaps |
| + sources += chromevox_assets_gypi_values.chromevox_assets_chromevox_background_mathmaps_functions |
| + sources += chromevox_assets_gypi_values.chromevox_assets_chromevox_background_mathmaps_symbols |
| + sources += [ |
| + "chromevox/background/background.html", |
| + "chromevox/background/kbexplorer.html", |
| + "chromevox/background/options.html", |
| + "chromevox/injected/api.js", |
| + "cvox2/background/background.html", |
| + ] |
| + if (chromevox_compress_js) { |
| + sources += [ "chromevox/injected/api_util.js" ] |
| + } else { |
| + sources += chromevox_modules |
| + sources += [ |
| + "closure/closure_preinit.js", |
| + chromevox_vars_gypi_values.chromevox1_background_script_loader_file, |
| + chromevox_vars_gypi_values.chromevox1_content_script_loader_file, |
| + chromevox_vars_gypi_values.chromevox1_kbexplorer_loader_file, |
| + chromevox_vars_gypi_values.chromevox1_options_script_loader_file, |
| + chromevox_vars_gypi_values.chromevox2_background_script_loader_file, |
| + ] |
| + } |
| + outputs = [] |
| + foreach(file, sources) { |
| + outputs += [ "$chromevox_out_dir/$file" ] |
| + } |
| + if (!chromevox_compress_js) { |
| + sources += closure_library_modules |
| + foreach(file, relative_closure_library_modules) { |
| + outputs += [ "$chromevox_out_dir/closure/$file" ] |
| + } |
| + } |
| + rewrite_rules = [ |
| + rebase_path(".", root_build_dir) + ":", |
| + rebase_path(closure_library_dir, root_build_dir) + ":closure", |
| + ] |
| + } |
| + |
| + template("manifest") { |
| + version_file = "//chrome/VERSION" |
| + version_script = "//build/util/version.py" |
| + template_file = "manifest.json.jinja2" |
| + output_file = invoker.output_file |
| + key = chromevox_vars_gypi_values.chromevox_extension_key |
| + action(target_name) { |
| + script = "tools/generate_manifest.py" |
| + inputs = [ |
| + version_file, |
| + version_script, |
| + ] |
| + sources = [ |
| + template_file, |
| + ] |
| + outputs = [ |
| + output_file, |
| + ] |
| + args = [ |
| + "--key=$key", |
| + "--version_file=" + rebase_path(version_file, root_build_dir), |
| + "--output_manifest=" + rebase_path(output_file, root_build_dir), |
| + ] |
| + if (defined(invoker.is_guest_manifest) && invoker.is_guest_manifest) { |
| + args += [ "--is_guest_manifest=1" ] |
| + } |
| + if (!chromevox_compress_js) { |
| + args += [ "--is_js_compressed=0" ] |
| + } |
| + args += rebase_path(sources, root_build_dir) |
| + } |
| + } |
| + |
| + manifest("chromevox_manifest") { |
| + output_file = "$chromevox_out_dir/manifest.json" |
| + } |
| + |
| + manifest("chromevox_guest_manifest") { |
| + output_file = "$chromevox_out_dir/manifest_guest.json" |
| + is_guest_manifest = true |
| + } |
| + |
| + template("generate_deps_js") { |
| + if (defined(invoker.rewrite_rules)) { |
| + rewrite_rules = invoker.rewrite_rules |
| + } else { |
| + rewrite_rules = [] |
| + } |
| + action(target_name) { |
| + if (defined(invoker.testonly)) { |
| + testonly = invoker.testonly |
| + } |
| + script = "tools/generate_deps.py" |
| + inputs = jsbundler_modules |
| + sources = invoker.sources |
| + outputs = [ |
| + invoker.output_file, |
| + ] |
| + args = [ |
| + "-o", |
| + rebase_path(invoker.output_file, root_build_dir), |
| + ] |
| + foreach(rule, rewrite_rules) { |
| + args += [ |
| + "-w", |
| + rule, |
| + ] |
| + } |
| + args += rebase_path(sources, root_build_dir) |
| + if (defined(invoker.deps)) { |
| + deps = invoker.deps |
| + } |
| + } |
| + } |
| + |
| + if (chromevox_compress_js) { |
| + template("compress_js") { |
| + run_jsbundler(target_name) { |
| + assert(defined(invoker.output_file)) |
| + mode = "compressed_bundle" |
| + modules = chromevox_modules + closure_library_modules |
| + sources = invoker.sources |
| + output_file = invoker.output_file |
| + } |
| + } |
| + |
| + compress_js("chromevox1_background_script") { |
| + sources = [ |
| + chromevox_vars_gypi_values.chromevox1_background_script_loader_file, |
| + ] |
| + output_file = "$chromevox_out_dir/chromeVoxChromeBackgroundScript.js" |
| + } |
| + |
| + compress_js("chromevox1_content_script") { |
| + sources = [ |
| + chromevox_vars_gypi_values.chromevox1_content_script_loader_file, |
| + ] |
| + output_file = "$chromevox_out_dir/chromeVoxChromePageScript.js" |
| + } |
| + |
| + compress_js("chromevox1_kbexplorer_script") { |
| + sources = [ |
| + chromevox_vars_gypi_values.chromevox1_kbexplorer_loader_file, |
| + ] |
| + output_file = "$chromevox_out_dir/chromeVoxKbExplorerScript.js" |
| + } |
| + |
| + compress_js("chromevox1_options_script") { |
| + sources = [ |
| + chromevox_vars_gypi_values.chromevox1_options_script_loader_file, |
| + ] |
| + output_file = "$chromevox_out_dir/chromeVoxChromeOptionsScript.js" |
| + } |
| + |
| + compress_js("chromevox2_background_script") { |
| + sources = [ |
| + chromevox_vars_gypi_values.chromevox1_background_script_loader_file, |
| + chromevox_vars_gypi_values.chromevox2_background_script_loader_file, |
| + ] |
| + output_file = "$chromevox_out_dir/chromeVox2ChromeBackgroundScript.js" |
| + } |
| + } else { |
| + generate_deps_js("chromevox_deps_js") { |
| + sources = chromevox_modules + closure_library_modules |
| + output_file = "$chromevox_out_dir/deps.js" |
| + rewrite_rules = [ |
| + rebase_path(".", root_build_dir) + ":..", |
| + rebase_path(closure_library_dir, root_build_dir) + ":../closure", |
| + ] |
| + } |
| + } |
| + |
| + chromevox_tests_gypi_values = |
| + exec_script("//build/gypi_to_gn.py", |
| + [ rebase_path("chromevox_tests.gypi") ], |
| + "scope", |
| + [ "chromevox_tests.gypi" ]) |
| + |
| + test("chromevox_tests") { |
| + sources = chromevox_tests_gypi_values.chromevox_tests_sources |
| + |
| + deps = [ |
| + "//base", |
| + "//base:i18n", |
| + "//base/test:test_support", |
| + "//chrome:browser_tests_pak", |
| + "//chrome:packed_extra_resources", |
| + "//chrome:packed_resources", |
| + "//chrome:resources", |
| + "//chrome:strings", |
| + "//chrome/browser", |
| + "//chrome/renderer", |
| + "//chrome/test:test_support", |
| + "//testing/gmock", |
| + "//testing/gtest", |
| + ":chromevox_extjs_tests", |
| + ":chromevox_unitjs_tests", |
| + ] |
| + if (cld_version == 0 || cld_version == 2) { |
| + # Because the browser_tests use translate, they need CLD data. |
| + deps += [ "//third_party/cld_2:cld2_platform_impl" ] |
| + } |
| + } |
| + |
| + action("chromevox_test_messages_js") { |
| + script = "tools/generate_test_messages.py" |
| + sources = [ |
| + "$chromevox_out_dir/_locales/en/messages.json", |
| + ] |
| + output_file = "$root_out_dir/test_data/chrome/browser/resources/chromeos/chromevox/host/testing/test_messages.js" |
| + outputs = [ |
| + output_file, |
| + ] |
| + deps = [ |
| + "strings:chromevox_strings", |
| + ] |
| + args = [ |
| + "-o", |
| + rebase_path(output_file, root_build_dir), |
| + ] + rebase_path(sources, root_build_dir) |
| + } |
| + |
| + chromevox_test_modules = [ |
| + "host/testing/earcons.js", |
| + "host/testing/host.js", |
| + "host/testing/mathjax.js", |
| + "host/testing/tts.js", |
| + "testing/spoken_list_builder.js", |
| + "testing/test_msgs.js", |
| + "testing/tester.js", |
| + ] + get_target_outputs(":chromevox_test_messages_js") |
| + |
| + generate_deps_js("chromevox_test_deps_js") { |
| + sources = |
| + closure_library_modules + chromevox_modules + chromevox_test_modules |
| + output_file = "$target_gen_dir/test_deps.js" |
| + rewrite_rules = [ |
| + rebase_path("//", root_build_dir) + ":", |
| + rebase_path("$root_out_dir/test_data", root_build_dir) + ":", |
| + ] |
| + deps = [ |
| + ":chromevox_test_messages_js", |
| + ] |
| + } |
| + |
| + js2gtest("chromevox_unitjs_tests") { |
| + test_type = "webui" |
| + sources = chromevox_tests_gypi_values.chromevox_tests_unitjs_sources |
| + test_deps_js_outputs = get_target_outputs(":chromevox_test_deps_js") |
| + deps_js = test_deps_js_outputs[0] |
| + deps = [ |
| + ":chromevox_test_deps_js", |
| + ] |
| + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| + } |
| + |
| + js2gtest("chromevox_extjs_tests") { |
| + test_type = "extension" |
| + sources = chromevox_tests_gypi_values.chromevox_tests_extjs_sources |
| + sources -= [ "braille/liblouis_test.extjs" ] # TODO(GYP) |
| + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| + } |
| +} |