blob: 605c18fb9faf1959ecd032fbaa9b648f1a234131 [file] [log] [blame]
Avi Drissman3e1a26c2022-09-15 20:26:031# Copyright 2020 The Chromium Authors
Luciano Pachecod4a896072020-01-14 11:07:502# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//third_party/closure_compiler/compile_js.gni")
Luciano Pacheco23364a22023-10-17 01:24:346import("//tools/typescript/ts_library.gni")
Luciano Pachecod4a896072020-01-14 11:07:507
8js_type_check("closure_compile") {
9 testonly = true
10 deps = [
Luciano Pacheco4d0d7a52021-10-25 03:59:2611 ":dialog_type",
12 ":element_object",
13 ":files_app_state",
cassycc3f206052024-01-12 04:09:2714 ":js_from_ts",
Luciano Pacheco4d0d7a52021-10-25 03:59:2615 ":key_modifiers",
16 ":metadata_stats_type",
Luciano Pachecod4a896072020-01-14 11:07:5017 ":remote_call",
18 ":test_util",
Luciano Pacheco4d0d7a52021-10-25 03:59:2619 ":volume_manager_common_volume_type",
Luciano Pachecod4a896072020-01-14 11:07:5020 ]
Luciano Pacheco4d0d7a52021-10-25 03:59:2621 closure_flags =
22 strict_error_checking_closure_args + [
Luciano Pacheco6342f9d2022-08-04 10:18:2523 "language_in=ECMASCRIPT_2020",
cassycc3f206052024-01-12 04:09:2724 "js_module_root=gen/ui/file_manager/integration_tests/tsc/",
25 "js_module_root=" +
26 rebase_path("//ui/file_manager/integration_tests", root_build_dir),
Luciano Pachecoa3da2dd2022-06-21 23:42:1327 "browser_resolver_prefix_replacements=\"chrome://webui-test/=./\"",
Luciano Pacheco4d0d7a52021-10-25 03:59:2628 "hide_warnings_for=third_party/",
29 ]
Luciano Pachecod4a896072020-01-14 11:07:5030}
31
32js_library("remote_call") {
33 testonly = true
Luciano Pacheco7ba05772020-02-11 04:49:5434 deps = [
Luciano Pacheco4d0d7a52021-10-25 03:59:2635 ":element_object",
36 ":key_modifiers",
Luciano Pacheco7ba05772020-02-11 04:49:5437 ":test_util",
Luciano Pacheco4d0d7a52021-10-25 03:59:2638 ":volume_manager_common_volume_type",
Luciano Pacheco7ba05772020-02-11 04:49:5439 ]
Luciano Pacheco4d0d7a52021-10-25 03:59:2640 externs_list = [
41 "$externs_path/command_line_private.js",
42 "$externs_path/file_manager_private.js",
43 ]
44}
45
Luciano Pacheco4d0d7a52021-10-25 03:59:2646js_library("dialog_type") {
47}
48
49js_library("element_object") {
50}
51
52js_library("files_app_state") {
cassycc3f206052024-01-12 04:09:2753 deps = [ ":dialog_type" ]
Luciano Pacheco4d0d7a52021-10-25 03:59:2654}
55
56js_library("key_modifiers") {
57}
58
59js_library("metadata_stats_type") {
60}
61
62js_library("volume_manager_common_volume_type") {
Luciano Pachecod4a896072020-01-14 11:07:5063}
64
65js_library("test_util") {
66 testonly = true
67 externs_list = [
68 "$externs_path/chrome_extensions.js",
dpapade1a0bd22020-06-16 04:22:3269 "$externs_path/test.js",
Luciano Pachecod4a896072020-01-14 11:07:5070 ]
71}
Luciano Pacheco5a3b9c092021-06-16 05:42:0172
73js_library("testcase") {
74 testonly = true
75}
Luciano Pachecoa2319c02023-10-17 00:59:5276
77preprocess_folder = "$target_gen_dir/preprocessed"
Luciano Pacheco23364a22023-10-17 01:24:3478tsc_folder = "$target_gen_dir/tsc"
Luciano Pachecoa2319c02023-10-17 00:59:5279
80# TODO: Replace allowed_paths, dialog_type, files_app_state, metadata_stats_type
81# and volume_manager_common_volume_type with definitions from Files app.
82js_files = [
Luciano Pachecoa2319c02023-10-17 00:59:5283 "dialog_type.js",
84 "element_object.js",
85 "files_app_state.js",
86 "key_modifiers.js",
87 "metadata_stats_type.js",
88 "remote_call.js",
89 "test_util.js",
90 "testcase.js",
91 "volume_manager_common_volume_type.js",
92
93 # File Manager.
94 "file_manager/android_photos.js",
95 "file_manager/background.js",
96 "file_manager/breadcrumbs.js",
Luciano Pachecoa2319c02023-10-17 00:59:5297 "file_manager/context_menu.js",
98 "file_manager/copy_between_windows.js",
99 "file_manager/create_new_folder.js",
100 "file_manager/crostini.js",
101 "file_manager/directory_tree.js",
102 "file_manager/directory_tree_context_menu.js",
103 "file_manager/dlp.js",
104 "file_manager/dlp_enterprise_connectors.js",
105 "file_manager/drive_specific.js",
106 "file_manager/file_dialog.js",
107 "file_manager/file_display.js",
108 "file_manager/file_list.js",
109 "file_manager/file_transfer_connector.js",
110 "file_manager/files_tooltip.js",
111 "file_manager/folder_shortcuts.js",
112 "file_manager/format_dialog.js",
113 "file_manager/gear_menu.js",
114 "file_manager/grid_view.js",
115 "file_manager/guest_os.js",
116 "file_manager/holding_space.js",
117 "file_manager/install_linux_package_dialog.js",
118 "file_manager/keyboard_operations.js",
119 "file_manager/metadata.js",
120 "file_manager/metrics.js",
121 "file_manager/my_files.js",
122 "file_manager/navigation.js",
123 "file_manager/office.js",
124 "file_manager/open_audio_media_app.js",
125 "file_manager/open_files_in_web_drive.js",
126 "file_manager/open_image_media_app.js",
127 "file_manager/open_media_app.js",
128 "file_manager/open_sniffed_files.js",
129 "file_manager/open_video_media_app.js",
130 "file_manager/providers.js",
131 "file_manager/quick_view.js",
132 "file_manager/recents.js",
133 "file_manager/restore_prefs.js",
134 "file_manager/search.js",
135 "file_manager/share.js",
136 "file_manager/share_and_manage_dialog.js",
137 "file_manager/sort_columns.js",
138 "file_manager/tab_index.js",
139 "file_manager/tasks.js",
140 "file_manager/test_data.js",
141 "file_manager/toolbar.js",
142 "file_manager/transfer.js",
143 "file_manager/trash.js",
144 "file_manager/traverse.js",
145 "file_manager/zip_files.js",
146
147 # Page Objects.
148 "file_manager/page_objects/directory_tree.js",
149]
150
Luciano Pacheco23364a22023-10-17 01:24:34151ts_files = [
cassycc3f206052024-01-12 04:09:27152 "allowed_paths.ts",
Luciano Pacheco23364a22023-10-17 01:24:34153 "file_manager/choose_entry.ts",
154 "file_manager/choose_entry_const.ts",
155]
156
Luciano Pachecoa2319c02023-10-17 00:59:52157# TS/JS files.
158copy("copy_src") {
Luciano Pacheco23364a22023-10-17 01:24:34159 sources = js_files + ts_files
Luciano Pachecoa2319c02023-10-17 00:59:52160 outputs = [ "$preprocess_folder/{{source_target_relative}}" ]
161}
162
163# All non JS/TS files.
164copy("copy_app") {
165 sources = [
166 "file_manager/background.html",
167 "file_manager/choose_entry.html",
168 "file_manager_test_manifest.json",
169 ]
Luciano Pacheco23364a22023-10-17 01:24:34170 outputs = [ "$tsc_folder/{{source_target_relative}}" ]
171}
172
173ts_library("build_ts") {
174 root_dir = preprocess_folder
175 out_dir = tsc_folder
176 tsconfig_base = "tsconfig_base.json"
177 composite = true
178
179 definitions = [
180 "//tools/typescript/definitions/runtime.d.ts",
181 "//tools/typescript/definitions/file_system.d.ts",
182 "definitions.d.ts",
183 ]
184
185 extra_deps = [ ":copy_src" ]
186
187 in_files = js_files + ts_files
Luciano Pachecoa2319c02023-10-17 00:59:52188}
189
cassycc3f206052024-01-12 04:09:27190js_library("js_from_ts") {
191 sources = []
192 foreach(_t, ts_files) {
193 sources += [ "$tsc_folder/" + string_replace(_t, ".ts", ".js") ]
194 }
195 extra_deps = [ ":build_ts" ]
196}
197
Luciano Pachecoa2319c02023-10-17 00:59:52198group("build") {
199 deps = [
Luciano Pacheco23364a22023-10-17 01:24:34200 ":build_ts",
Luciano Pachecoa2319c02023-10-17 00:59:52201 ":copy_app",
Luciano Pachecoa2319c02023-10-17 00:59:52202 ]
203
204 # Also as data_deps to make the files available at runtime to the
205 # browser_tests binary, see `gn help runtime_deps` for more info.
206 data_deps = [
Luciano Pacheco23364a22023-10-17 01:24:34207 ":build_ts",
Luciano Pachecoa2319c02023-10-17 00:59:52208 ":copy_app",
Luciano Pachecoa2319c02023-10-17 00:59:52209 ]
210}