blob: 0918f20c01dba5a625380c1e8be376f903f72912 [file] [log] [blame]
# Copyright 2019 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.
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import(
"//chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/buildflags.gni")
import(
"//chrome/browser/resources/chromeos/accessibility/common/run_jsbundler.gni")
import("//chrome/test/base/js2gtest.gni")
import("//testing/test.gni")
import("//third_party/closure_compiler/compile_js.gni")
assert(is_chromeos_ash)
accessibility_common_dir =
"$root_out_dir/resources/chromeos/accessibility/accessibility_common"
group("build") {
deps = [
":accessibility_common_copied_files",
":pumpkin_availability_files",
]
# Only copy pumpkin files if Dictation will use Pumpkin. This keeps the build
# size from being inflated during Pumpkin development.
if (enable_pumpkin_for_dictation) {
deps += [ ":unzip_pumpkin_files" ]
}
}
# Instead of setting up copy targets, use a script to copy all files.
run_jsbundler("accessibility_common_copied_files") {
mode = "copy"
dest_dir = accessibility_common_dir
sources = [
"accessibility_common_loader.js",
"autoclick/autoclick.js",
"background.html",
"dictation/dictation.js",
"dictation/earcons/audio_end.wav",
"dictation/earcons/audio_initiate.wav",
"dictation/earcons/null_selection.wav",
"dictation/input_controller.js",
"dictation/macros/input_text_view_macro.js",
"dictation/macros/list_commands_macro.js",
"dictation/macros/macro.js",
"dictation/macros/macro_names.js",
"dictation/macros/repeatable_key_press_macro.js",
"dictation/metrics_utils.js",
"dictation/parse/input_text_strategy.js",
"dictation/parse/parse_strategy.js",
"dictation/parse/pumpkin_parse_strategy.js",
"dictation/parse/simple_parse_strategy.js",
"dictation/parse/speech_parser.js",
"dictation/ui_controller.js",
"magnifier/magnifier.js",
]
rewrite_rules = [
rebase_path(".", root_build_dir) + ":",
rebase_path(closure_library_dir, root_build_dir) + ":closure",
]
}
if (enable_pumpkin_for_dictation) {
pumpkin_output_dir = "$accessibility_common_dir/dictation/parse/pumpkin"
action("unzip_pumpkin_files") {
script = "dictation/parse/pumpkin/unzip_pumpkin.py"
sources = [ "dictation/parse/pumpkin/pumpkin_files.zip" ]
args = [
"--output-dir=resources/chromeos/accessibility/accessibility_common/dictation/parse/pumpkin",
rebase_path("dictation/parse/pumpkin/pumpkin_files.zip", root_build_dir),
]
outputs = [
"$pumpkin_output_dir/js_pumpkin_tagger_bin.js",
"$pumpkin_output_dir/tagger_wasm_main.js",
"$pumpkin_output_dir/tagger_wasm_main.wasm",
"$pumpkin_output_dir/en_us/action_config.binarypb",
"$pumpkin_output_dir/en_us/pumpkin_config.binarypb",
]
}
}
copy("pumpkin_availability_files") {
if (enable_pumpkin_for_dictation) {
sources = [ "dictation/parse/pumpkin/include_pumpkin.js" ]
} else {
sources = [ "dictation/parse/pumpkin/exclude_pumpkin.js" ]
}
outputs = [
"$accessibility_common_dir/dictation/parse/pumpkin/pumpkin_availability.js",
]
}
source_set("browser_tests") {
testonly = true
assert(enable_extensions)
deps = [ ":accessibility_common_extjs_tests" ]
data = [
"$root_out_dir/chrome_100_percent.pak",
"$root_out_dir/chrome_200_percent.pak",
"$root_out_dir/locales/en-US.pak",
"$root_out_dir/resources.pak",
"$root_out_dir/resources/chromeos/accessibility/accessibility_common/",
"$root_out_dir/test_data/chrome/browser/resources/chromeos/accessibility/accessibility_common/",
# The test uses data from the original location, not the copied one.
"//chrome/browser/resources/chromeos/accessibility/accessibility_common/",
"//chrome/browser/resources/chromeos/accessibility/common/",
"//ui/webui/resources/js/cr.js",
]
data += js2gtest_js_libraries
}
js2gtest("accessibility_common_extjs_tests") {
test_type = "extension"
sources = [
"accessibility_common_test.js",
"autoclick/autoclick_test.js",
"dictation/dictation_test.js",
"dictation/dictation_test_base.js",
"dictation/dictation_ui_test.js",
"dictation/macros/dictation_macros_test.js",
"dictation/parse/dictation_parse_test.js",
"magnifier/magnifier_test.js",
]
gen_include_files = [
"../common/rect_util.js",
"../common/testing/callback_helper.js",
"../common/testing/e2e_test_base.js",
"../common/testing/mock_accessibility_private.js",
"../common/testing/mock_input_ime.js",
"../common/testing/mock_input_method_private.js",
"../common/testing/mock_language_settings_private.js",
"../common/testing/mock_speech_recognition_private.js",
]
# The test base classes generate C++ code with these deps.
deps = [
"//ash",
"//ash/keyboard/ui",
"//base",
"//chrome/browser/chromeos",
"//chrome/common",
]
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
}
js_type_check("closure_compile") {
deps = [ ":accessibility_common" ]
}
js_library("accessibility_common") {
sources = [ "accessibility_common_loader.js" ]
deps = [
":autoclick",
":dictation",
":magnifier",
"../common:automation_predicate",
"../common:chrome_event_handler",
"../common:constants",
"../common:event_generator",
"../common:event_handler",
"../common:instance_checker",
"../common:rect_util",
]
externs_list = [
"$externs_path/chrome_extensions.js",
"$externs_path/accessibility_features.js",
"$externs_path/accessibility_private.js",
"$externs_path/automation.js",
"$externs_path/command_line_private.js",
"$externs_path/input_method_private.js",
"$externs_path/metrics_private.js",
"$externs_path/language_settings_private.js",
"$externs_path/speech_recognition_private.js",
]
}
js_library("autoclick") {
sources = [ "autoclick/autoclick.js" ]
deps = [ "../common:event_handler" ]
externs_list = [
"$externs_path/accessibility_private.js",
"$externs_path/automation.js",
]
}
js_library("magnifier") {
sources = [ "magnifier/magnifier.js" ]
externs_list = [ "$externs_path/settings_private.js" ]
}
js_library("dictation") {
sources = [ "dictation/dictation.js" ]
deps = [
":dictation_input_controller",
":dictation_metrics",
":dictation_ui_controller",
":speech_parsing",
]
externs_list = [
"$externs_path/accessibility_private.js",
"$externs_path/speech_recognition_private.js",
"dictation/parse/pumpkin/pumpkin_tagger_externs.js",
]
}
js_library("dictation_input_controller") {
sources = [ "dictation/input_controller.js" ]
deps = [
"../common:automation_predicate",
"../common:constants",
]
externs_list = [
"$externs_path/input_method_private.js",
"$externs_path/language_settings_private.js",
]
}
js_library("dictation_ui_controller") {
sources = [ "dictation/ui_controller.js" ]
externs_list = [ "$externs_path/accessibility_private.js" ]
}
js_library("dictation_macros") {
sources = [
"dictation/macros/input_text_view_macro.js",
"dictation/macros/list_commands_macro.js",
"dictation/macros/macro.js",
"dictation/macros/macro_names.js",
"dictation/macros/repeatable_key_press_macro.js",
]
deps = [
":dictation_input_controller",
"../common:event_generator",
"../common:key_code",
]
}
js_library("speech_parsing") {
sources = [
"dictation/parse/input_text_strategy.js",
"dictation/parse/parse_strategy.js",
"dictation/parse/pumpkin_parse_strategy.js",
"dictation/parse/simple_parse_strategy.js",
"dictation/parse/speech_parser.js",
]
if (enable_pumpkin_for_dictation) {
sources += [ "dictation/parse/pumpkin/include_pumpkin.js" ]
} else {
sources += [ "dictation/parse/pumpkin/exclude_pumpkin.js" ]
}
deps = [
":dictation_input_controller",
":dictation_macros",
]
}
js_library("dictation_metrics") {
sources = [ "dictation/metrics_utils.js" ]
externs_list = [
"$externs_path/metrics_private.js",
"$externs_path/speech_recognition_private.js",
]
}