| # Copyright 2017 The Chromium Authors |
| # 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( |
| "//chrome/browser/resources/chromeos/accessibility/tools/run_jsbundler.gni") |
| import("//chrome/common/features.gni") |
| import("//chrome/test/base/ash/js2gtest.gni") |
| import("//testing/test.gni") |
| import("//tools/typescript/ts_library.gni") |
| import("//ui/webui/resources/tools/bundle_js.gni") |
| import("//ui/webui/resources/tools/minify_js.gni") |
| |
| assert(is_chromeos) |
| |
| group("build") { |
| deps = [ |
| ":copy_misc_files", |
| ":minify_js", |
| ] |
| } |
| |
| switch_access_dir = |
| "$root_out_dir/resources/chromeos/accessibility/switch_access/mv3" |
| |
| # Directory where typescript build will occur. |
| ts_build_staging_dir = "$target_gen_dir/ts_build_staging" |
| |
| tsc_out_dir = "$target_gen_dir/tsc" |
| |
| common_tsc_dir = |
| "$root_gen_dir/chrome/browser/resources/chromeos/accessibility/common/tsc" |
| |
| # TS files to compile. |
| ts_modules = [ |
| "action_manager.ts", |
| "auto_scan_manager.ts", |
| "cache.ts", |
| "commands.ts", |
| "focus_ring_manager.ts", |
| "history.ts", |
| "item_scan_manager.ts", |
| "menu_manager.ts", |
| "metrics.ts", |
| "navigator.ts", |
| "navigator_interfaces.ts", |
| "nodes/back_button_node.ts", |
| "nodes/basic_node.ts", |
| "nodes/combo_box_node.ts", |
| "nodes/desktop_node.ts", |
| "nodes/editable_text_node.ts", |
| "nodes/group_node.ts", |
| "nodes/keyboard_node.ts", |
| "nodes/modal_dialog_node.ts", |
| "nodes/slider_node.ts", |
| "nodes/switch_access_node.ts", |
| "nodes/tab_node.ts", |
| "nodes/window_node.ts", |
| "point_scan_manager.ts", |
| "settings_manager.ts", |
| "switch_access.ts", |
| "switch_access_constants.ts", |
| "switch_access_loader.ts", |
| "switch_access_predicate.ts", |
| "text_navigation_manager.ts", |
| ] |
| |
| # Root dir must be the parent directory so it can reach common. |
| ts_library("ts_build") { |
| root_dir = "$ts_build_staging_dir" |
| out_dir = tsc_out_dir |
| |
| composite = true |
| |
| deps = [ "../../common:ts_build" ] |
| |
| extra_deps = [ ":stage_ts_build" ] |
| |
| path_mappings = |
| [ "/common/*|" + rebase_path("$common_tsc_dir/*", target_gen_dir) ] |
| |
| definitions = [ |
| "../../definitions/accessibility_private_mv2.d.ts", |
| "../../definitions/automation.d.ts", |
| "../../definitions/clipboard_mv2.d.ts", |
| "../../definitions/command_line_private.d.ts", |
| "../../definitions/extension_types.d.ts", |
| "../../definitions/extensions.d.ts", |
| "../../definitions/runtime.d.ts", |
| "../../definitions/settings_private_mv2.d.ts", |
| "../../definitions/tabs.d.ts", |
| "../../definitions/windows.d.ts", |
| "//tools/typescript/definitions/chrome_event.d.ts", |
| "//tools/typescript/definitions/metrics_private.d.ts", |
| ] |
| |
| in_files = ts_modules |
| |
| tsconfig_base = "../../tsconfig.base.json" |
| } |
| |
| bundle_js("bundle_js") { |
| visibility = [ ":minify_js" ] |
| |
| host = "_ignored_" |
| input = rebase_path("$tsc_out_dir", root_build_dir) |
| js_module_in_files = [ "switch_access_loader.js" ] |
| out_folder = "$target_gen_dir/bundle" |
| |
| deps = [ |
| ":ts_build", |
| "../../common:copied_files", |
| ] |
| } |
| |
| minify_js("minify_js") { |
| visibility = [ ":build" ] |
| |
| deps = [ ":bundle_js" ] |
| in_folder = "$target_gen_dir/bundle" |
| in_files = [ "switch_access_loader.rollup.js" ] |
| out_folder = "$switch_access_dir" |
| } |
| |
| copy("copy_misc_files") { |
| sources = [ |
| "background.html", |
| "gdocs_script.js", |
| "icons/back.svg", |
| "icons/copy.svg", |
| "icons/cut.svg", |
| "icons/decrement.svg", |
| "icons/dictation.svg", |
| "icons/increment.svg", |
| "icons/jumpToBeginningOfText.svg", |
| "icons/jumpToEndOfText.svg", |
| "icons/keyboard.svg", |
| "icons/moveBackwardOneCharOfText.svg", |
| "icons/moveBackwardOneWordOfText.svg", |
| "icons/moveCursor.svg", |
| "icons/moveDownOneLineOfText.svg", |
| "icons/moveForwardOneCharOfText.svg", |
| "icons/moveForwardOneWordOfText.svg", |
| "icons/moveUpOneLineOfText.svg", |
| "icons/paste.svg", |
| "icons/scrollDownOrForward.svg", |
| "icons/scrollLeft.svg", |
| "icons/scrollRight.svg", |
| "icons/scrollUpOrBackward.svg", |
| "icons/select.svg", |
| "icons/settings.svg", |
| "icons/showContextMenu.svg", |
| "icons/textSelectionEnd.svg", |
| "icons/textSelectionStart.svg", |
| ] |
| |
| outputs = [ "$switch_access_dir/{{source_target_relative}}" ] |
| } |
| |
| # Copy all JS and TS sources to a staging folder. All generated TS/JS files |
| # will also be copied into this folder, which will allow us to support a TS |
| # build that uses both checked-in and generated files. |
| copy("stage_ts_build") { |
| sources = ts_modules |
| outputs = [ "$ts_build_staging_dir/{{source_target_relative}}" ] |
| } |
| |
| source_set("browser_tests") { |
| testonly = true |
| assert(enable_extensions) |
| |
| deps = [ |
| ":switch_access_extjs_tests", |
| ":switch_access_mv3_extjs_tests", |
| ] |
| |
| data = [ |
| "//chrome/browser/resources/chromeos/accessibility/common/", |
| "//chrome/browser/resources/chromeos/accessibility/switch_access/", |
| ] |
| data += js2gtest_js_libraries |
| } |
| |
| test_includes = [ |
| "../../common/testing/accessibility_test_base.js", |
| "../../common/testing/assert_additions.js", |
| "../../common/testing/callback_helper.js", |
| "../../common/testing/e2e_test_base.js", |
| "switch_access_e2e_test_base.js", |
| "test_utility.js", |
| ] |
| |
| # The test base classes generate C++ code with these deps. |
| test_deps = [ |
| "//ash", |
| "//ash/keyboard/ui", |
| "//base", |
| "//chrome/browser/ash/accessibility", |
| "//chrome/browser/ash/crosapi", |
| "//chrome/browser/ash/system_web_apps", |
| "//chrome/common", |
| ] |
| |
| js2gtest("switch_access_mv3_extjs_tests") { |
| test_type = "extension" |
| parameterized = "true" |
| sources = [ |
| "focus_ring_manager_test.js", |
| "item_scan_manager_test.js", |
| "nodes/basic_node_test.js", |
| "nodes/desktop_node_test.js", |
| "nodes/group_node_test.js", |
| "nodes/tab_node_test.js", |
| "point_scan_manager_test.js", |
| "switch_access_predicate_test.js", |
| "switch_access_test.js", |
| "text_navigation_manager_test.js", |
| ] |
| gen_include_files = test_includes |
| deps = test_deps |
| defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| } |
| |
| js2gtest("switch_access_extjs_tests") { |
| test_type = "extension" |
| sources = [ "auto_scan_manager_test.js" ] |
| gen_include_files = test_includes |
| deps = test_deps |
| defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| } |