# 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( "//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" # 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("build_ts") { root_dir = "$ts_build_staging_dir" out_dir = tsc_out_dir composite = true deps = [ "../common:build_ts" ] 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 = [ ":build_ts", "../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/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/keyboard_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" ] }