# Copyright 2018 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("//third_party/closure_compiler/compile_js.gni")
import("//third_party/closure_compiler/js_unit_tests.gni")

visibility = [
  "//ui/file_manager/file_manager/foreground/*",
  "//ui/file_manager/file_manager/test/js/*",
]

js_type_check("closure_compile_module") {
  deps = [
    ":actions_controller",
    ":actions_model",
    ":app_state_controller",
    ":closure_compile_externs",
    ":column_visibility_controller",
    ":constants",
    ":crostini",
    ":dialog_action_controller",
    ":dialog_type",
    ":directory_contents",
    ":directory_model",
    ":directory_tree_naming_controller",
    ":drop_effect_and_label",
    ":elements_importer",
    ":empty_folder_controller",
    ":file_list_model",
    ":file_manager",
    ":file_manager_commands",
    ":file_selection",
    ":file_tasks",
    ":file_transfer_controller",
    ":file_watcher",
    ":folder_shortcuts_data_model",
    ":gear_menu_controller",
    ":import_controller",
    ":last_modified_controller",
    ":launch_param",
    ":list_thumbnail_loader",
    ":main",
    ":main_window_component",
    ":metadata_box_controller",
    ":metadata_update_controller",
    ":metrics_start",
    ":naming_controller",
    ":navigation_list_model",
    ":navigation_uma",
    ":progress_center_item_group",
    ":providers_model",
    ":quick_view_controller",
    ":quick_view_model",
    ":quick_view_uma",
    ":scan_controller",
    ":search_controller",
    ":selection_menu_controller",
    ":share_client",
    ":sort_menu_controller",
    ":spinner_controller",
    ":task_controller",
    ":task_history",
    ":thumbnail_loader",
    ":toolbar_controller",
    ":volume_manager_wrapper",
    ":web_store_utils",
    ":webui_command_extender",
  ]
}

js_library("closure_compile_externs") {
  sources = []
  externs_list = [
    "$externs_path/command_line_private.js",
    "$externs_path/metrics_private.js",
    "$externs_path/web_animations.js",
    "../../../externs/app_window_common.js",
    "../../../externs/background/drive_sync_handler.js",
    "../../../externs/background/file_browser_background.js",
    "../../../externs/background/file_browser_background_full.js",
    "../../../externs/background/file_operation_manager.js",
    "../../../externs/background/import_history.js",
    "../../../externs/background/import_history_enum.js",
    "../../../externs/background/import_runner.js",
    "../../../externs/background/media_import_handler.js",
    "../../../externs/background/media_scanner.js",
    "../../../externs/background/progress_center.js",
    "../../../externs/background_window.js",
    "../../../externs/chrome_echo_private.js",
    "../../../externs/chrome_webstore_widget_private.js",
    "../../../externs/command_handler_deps.js",
    "../../../externs/css_rule.js",
    "../../../externs/directory_change_event.js",
    "../../../externs/drag_target.js",
    "../../../externs/entries_changed_event.js",
    "../../../externs/gallery_foreground.js",
    "../../../externs/menu_item_update_event.js",
    "../../../externs/paper_elements.js",
    "../../../externs/platform.js",
    "../../../externs/search_item.js",
  ]
}

js_library("actions_controller") {
  deps = [
    ":actions_model",
    ":file_selection",
    "ui:file_manager_ui",
    "//ui/webui/resources/js:assert",
    "//ui/webui/resources/js:cr",
    "//ui/webui/resources/js/cr:ui",
    "//ui/webui/resources/js/cr/ui:context_menu_handler",
  ]
}

js_library("actions_model") {
  deps = [
    ":folder_shortcuts_data_model",
    "metadata:metadata_model",
    "ui:error_dialog",
    "ui:files_alert_dialog",
    "ui:list_container",
    "ui:share_dialog",
    "//ui/webui/resources/js:cr",
  ]
}

js_library("app_state_controller") {
  deps = [
    ":dialog_type",
    ":directory_model",
    "ui:file_manager_ui",
  ]
}

js_library("column_visibility_controller") {
  deps = [
    ":directory_model",
    "../../common/js:volume_manager_common",
    "ui:file_manager_ui",
  ]
}

js_library("constants") {
}

js_library("dialog_action_controller") {
  deps = [
    ":dialog_type",
    ":directory_contents",
    ":directory_model",
    ":file_selection",
    ":launch_param",
    ":naming_controller",
    ":volume_manager_wrapper",
    "../../common/js:metrics",
    "metadata:metadata_model",
    "ui:dialog_footer",
    "//ui/webui/resources/js/cr/ui:command",
  ]
}

js_library("crostini") {
  deps = [
    ":volume_manager_wrapper",
  ]
}

js_library("dialog_type") {
}

js_library("directory_contents") {
  deps = [
    ":constants",
    ":file_list_model",
    "../../common/js:async_util",
    "../../common/js:metrics",
    "../../common/js:util",
    "../../common/js:volume_manager_common",
    "metadata:metadata_model",
    "//ui/webui/resources/js:cr",
    "//ui/webui/resources/js/cr/ui:array_data_model",
  ]
}

js_library("directory_model") {
  deps = [
    ":directory_contents",
    ":file_watcher",
    ":volume_manager_wrapper",
    "../../common/js:importer_common",
    "../../common/js:metrics_events",
    "ui:file_list_selection_model",
  ]
}

js_library("navigation_uma") {
  deps = [
    ":dialog_type",
    ":volume_manager_wrapper",
    "../../common/js:metrics",
  ]
}

js_library("directory_tree_naming_controller") {
  deps = [
    ":directory_model",
    "../../common/js:util",
    "ui:directory_tree",
    "//ui/webui/resources/js/cr/ui:dialogs",
  ]
}

js_library("drop_effect_and_label") {
}

js_library("elements_importer") {
}

js_library("empty_folder_controller") {
  deps = [
    ":directory_model",
    ":file_list_model",
    "ui:empty_folder",
  ]
}

js_library("file_list_model") {
  deps = [
    "../../common/js:file_type",
    "../../common/js:util",
    "metadata:metadata_model",
    "//ui/webui/resources/js/cr/ui:array_data_model",
  ]
}

js_library("file_manager") {
  deps = [
    ":app_state_controller",
    ":column_visibility_controller",
    ":dialog_action_controller",
    ":dialog_type",
    ":directory_model",
    ":elements_importer",
    ":empty_folder_controller",
    ":file_selection",
    ":file_transfer_controller",
    ":folder_shortcuts_data_model",
    ":gear_menu_controller",
    ":import_controller",
    ":last_modified_controller",
    ":launch_param",
    ":main_window_component",
    ":metadata_update_controller",
    ":naming_controller",
    ":navigation_uma",
    ":providers_model",
    ":quick_view_controller",
    ":quick_view_model",
    ":quick_view_uma",
    ":scan_controller",
    ":search_controller",
    ":selection_menu_controller",
    ":sort_menu_controller",
    ":spinner_controller",
    ":task_controller",
    ":toolbar_controller",
    ":volume_manager_wrapper",
    "ui:commandbutton",
    "ui:directory_tree",
    "ui:file_manager_ui",
    "//ui/webui/resources/js/cr/ui:list_selection_model",
  ]
}

js_library("file_manager_commands") {
  deps = [
    ":actions_controller",
    ":dialog_type",
    ":directory_contents",
    ":directory_model",
    ":directory_tree_naming_controller",
    ":file_selection",
    ":file_transfer_controller",
    ":naming_controller",
    ":providers_model",
    ":spinner_controller",
    ":task_controller",
    ":volume_manager_wrapper",
    "ui:directory_tree",
    "ui:file_manager_ui",
    "//ui/webui/resources/cr_elements/cr_input:cr_input",
  ]
}

js_library("file_selection") {
  deps = [
    ":constants",
    ":directory_model",
    ":volume_manager_wrapper",
    "../../common/js:file_type",
    "../../common/js:util",
    "../../common/js:volume_manager_common",
    "metadata:metadata_model",
    "ui:list_container",
    "//ui/webui/resources/js:assert",
    "//ui/webui/resources/js:cr",
  ]
}

js_library("file_tasks") {
  deps = [
    ":crostini",
    ":directory_model",
    ":task_history",
    ":volume_manager_wrapper",
    "metadata:metadata_model",
    "ui:file_manager_ui",
  ]
}

js_library("file_transfer_controller") {
  deps = [
    ":directory_model",
    ":drop_effect_and_label",
    ":file_selection",
    ":volume_manager_wrapper",
    ":webui_command_extender",
    "../../common/js:progress_center_common",
    "metadata:metadata_model",
    "metadata:thumbnail_model",
    "ui:directory_tree",
    "ui:file_manager_ui",
    "ui:list_container",
    "ui:multi_profile_share_dialog",
    "ui:progress_center_panel",
  ]
}

js_library("file_watcher") {
  deps = [
    "../../common/js:async_util",
    "../../common/js:util",
    "../../common/js:volume_manager_common",
    "//ui/webui/resources/js:assert",
  ]
}

js_library("folder_shortcuts_data_model") {
  deps = [
    ":volume_manager_wrapper",
    "../../common/js:async_util",
    "../../common/js:metrics",
    "../../common/js:util",
    "../../common/js:volume_manager_common",
  ]
}

js_library("gear_menu_controller") {
  deps = [
    ":directory_model",
    ":file_manager_commands",
    "../elements:files_toggle_ripple",
    "ui:gear_menu",
    "//ui/webui/resources/js/cr/ui:context_menu_button",
  ]
}

js_library("import_controller") {
  deps = [
    ":actions_controller",
    ":dialog_type",
    ":directory_tree_naming_controller",
    ":file_selection",
    ":file_transfer_controller",
    ":naming_controller",
    ":providers_model",
    ":spinner_controller",
    ":task_controller",
    "../../common/js:importer_common",
    "ui:directory_tree",
    "ui:file_manager_ui",
  ]
}

js_library("last_modified_controller") {
  deps = [
    ":directory_model",
    "ui:file_table",
  ]
}

js_library("launch_param") {
  deps = [
    ":dialog_type",
    "../../common/js:volume_manager_common",
  ]
}

js_library("list_thumbnail_loader") {
  deps = [
    ":directory_model",
    ":file_list_model",
    ":thumbnail_loader",
    ":volume_manager_wrapper",
    "../../common/js:volume_manager_common",
    "metadata:thumbnail_model",
  ]
}

js_library("main") {
  deps = [
    ":file_manager",
    "../../common/js:files_app_entry_types",
    "../../common/js:metrics",
    "../../common/js:util",
  ]
}

js_library("main_window_component") {
  deps = [
    ":app_state_controller",
    ":dialog_type",
    ":directory_contents",
    ":directory_model",
    ":file_selection",
    ":naming_controller",
    ":task_controller",
    ":volume_manager_wrapper",
    "ui:file_manager_ui",
  ]
}

js_library("metadata_box_controller") {
  deps = [
    ":quick_view_model",
    "../../common/js:file_type",
    "../elements:files_metadata_box",
    "../elements:files_quick_view",
    "metadata:metadata_model",
    "ui:file_metadata_formatter",
  ]
}

js_library("metadata_update_controller") {
  deps = [
    ":directory_model",
    "metadata:metadata_model",
    "ui:file_metadata_formatter",
    "ui:list_container",
  ]
}

js_library("metrics_start") {
  deps = [
    "../../common/js:metrics",
  ]
}

js_library("naming_controller") {
  deps = [
    ":directory_contents",
    ":directory_model",
    ":file_selection",
    "ui:list_container",
    "//ui/webui/resources/js/cr/ui:dialogs",
  ]
}

js_library("navigation_list_model") {
  deps = [
    ":folder_shortcuts_data_model",
    ":volume_manager_wrapper",
    "//ui/webui/resources/js/cr:event_target",
    "//ui/webui/resources/js/cr/ui:array_data_model",
  ]
}

js_library("progress_center_item_group") {
  deps = [
    "../../common/js:progress_center_common",
    "../../common/js:util",
  ]
}

js_library("providers_model") {
  deps = [
    ":volume_manager_wrapper",
    "//ui/webui/resources/js:assert",
  ]
}

js_library("quick_view_controller") {
  deps = [
    ":dialog_type",
    ":file_selection",
    ":metadata_box_controller",
    ":quick_view_model",
    ":quick_view_uma",
    ":task_controller",
    ":volume_manager_wrapper",
    "metadata:metadata_model",
    "ui:list_container",
    "//ui/webui/resources/js/cr/ui:list_selection_model",
  ]
}

js_library("quick_view_model") {
  deps = [
    "../../../../../ui/webui/resources/js:cr",
    "../../../../../ui/webui/resources/js/cr:event_target",
  ]
}

js_library("quick_view_uma") {
  deps = [
    ":dialog_type",
    ":file_tasks",
    ":volume_manager_wrapper",
    "../../common/js:file_type",
  ]
}

js_library("scan_controller") {
  deps = [
    ":directory_model",
    ":file_manager_commands",
    ":file_selection",
    ":spinner_controller",
    "ui:list_container",
  ]
}

js_library("search_controller") {
  deps = [
    ":directory_model",
    ":task_controller",
    "ui:location_line",
    "ui:search_box",
  ]
}

js_library("selection_menu_controller") {
  deps = [
    ":directory_model",
    ":file_manager_commands",
    "../elements:files_toggle_ripple",
  ]
}

js_library("share_client") {
  deps = [
    "../../../externs:webview_tag",
    "../../common/js:volume_manager_common",
    "//ui/webui/resources/js/cr:event_target",
  ]
}

js_library("sort_menu_controller") {
  deps = [
    ":file_list_model",
    "../elements:files_toggle_ripple",
    "//ui/webui/resources/js/cr/ui:context_menu_button",
  ]
}

js_library("spinner_controller") {
  deps = [
    "//ui/webui/resources/js/cr:event_target",
  ]
}

js_library("task_controller") {
  deps = [
    ":dialog_type",
    ":directory_model",
    ":file_selection",
    ":file_tasks",
    ":metadata_update_controller",
    ":task_history",
    ":volume_manager_wrapper",
    "metadata:metadata_model",
    "ui:file_manager_ui",
  ]
}

js_library("task_history") {
  deps = [
    "//ui/webui/resources/js/cr:event_target",
  ]
}

# TODO(tapted): Move this into //ui/file_manager/base.
js_library("thumbnail_loader") {
  visibility += [ "//ui/file_manager/gallery/*" ]
  deps = [
    "../../../image_loader:image_loader_client",
    "../../common/js:file_type",
    "../../common/js:util",
    "//ui/webui/resources/js:assert",
  ]
}

js_library("thumbnail_loader_unittest") {
  deps = [
    ":thumbnail_loader",
    "../../common/js:mock_entry",
    "../../common/js:unittest_util",
    "//ui/webui/resources/js:webui_resource_test",
  ]
}

js_library("toolbar_controller") {
  deps = [
    ":file_selection",
    "../../common/js:util",
    "ui:list_container",
    "ui:location_line",
    "//ui/webui/resources/js/cr/ui:command",
  ]
}

# TODO(tapted): Move this to //ui/file_manager/base.
js_library("volume_manager_wrapper") {
  visibility += [
    "//ui/file_manager/audio_player/*",
    "//ui/file_manager/gallery/*",
    "//ui/file_manager/video_player/*",
  ]
  deps = [
    "../../../externs:file_manager_private",
    "../../common/js:async_util",
    "../../common/js:volume_manager_common",
    "//ui/webui/resources/js:cr",
    "//ui/webui/resources/js/cr:event_target",
    "//ui/webui/resources/js/cr/ui:array_data_model",
  ]
  externs_list = [
    "../../../externs/background/volume_manager_factory.js",
    "../../../externs/volume_info.js",
    "../../../externs/volume_info_list.js",
    "../../../externs/volume_manager.js",
  ]
}

js_library("web_store_utils") {
  deps = [
    ":constants",
  ]
}

js_library("webui_command_extender") {
  deps = [
    "//ui/webui/resources/js:cr",
    "//ui/webui/resources/js/cr/ui:command",
  ]
}

js_unit_tests("unit_tests") {
  deps = [
    ":thumbnail_loader_unittest",
  ]
}

group("closure_compile") {
  visibility += [ "*" ]
  deps = [
    ":closure_compile_module",
    ":unit_tests_type_check",
  ]
}
