# Copyright 2014 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("//chrome/common/features.gni")
import("//third_party/closure_compiler/compile_js.gni")
import("//tools/grit/grit_rule.gni")
import("//tools/grit/preprocess_if_expr.gni")
import("//ui/webui/resources/tools/generate_grd.gni")

grit("resources") {
  source = "file_manager_resources.grd"
  outputs = [
    "grit/file_manager_resources.h",
    "grit/file_manager_resources_map.cc",
    "grit/file_manager_resources_map.h",
    "file_manager_resources.pak",
    "file_manager_resources.rc",
  ]
}

component("file_manager") {
  sources = [ "file_manager_export.h" ]
  public_deps = [
    ":file_manager_gen_resources",
    ":resources",
    "//base",
  ]
  defines = [ "FILE_MANAGER_IMPLEMENTATION" ]
}

group("closure_compile") {
  # Subfolders' closure_compile groups bundle the non-test "module" type-check
  # groups as well as unittests and test_support.
  testonly = true

  deps = [
    "audio_player/elements:closure_compile",
    "audio_player/js:closure_compile",
    "base/js:closure_compile",
    "file_manager/background/js:closure_compile",
    "file_manager/common/js:closure_compile",
    "file_manager/foreground/elements:closure_compile",
    "file_manager/foreground/js:closure_compile",
    "file_manager/foreground/js/metadata:closure_compile",
    "file_manager/foreground/js/ui:closure_compile",
    "file_manager/test:closure_compile",
    "gallery/js:closure_compile",
    "gallery/js/image_editor:closure_compile",
    "image_loader:closure_compile",
    "integration_tests:closure_compile",
    "integration_tests/file_manager:closure_compile",
    "video_player/js:closure_compile",
  ]
}

group("unit_test_data") {
  testonly = true
  deps = [
    "base/js:js_test_gen_html",
    "file_manager/background/js:js_test_gen_html_modules",
    "file_manager/common/js:js_test_gen_html_modules",
    "file_manager/foreground/elements:js_test_gen_html_modules",
    "file_manager/foreground/js:js_test_gen_html",
    "file_manager/foreground/js:js_test_gen_html_modules",
    "file_manager/foreground/js/metadata:js_test_gen_html_modules",
    "file_manager/foreground/js/ui:js_test_gen_html_modules",
    "gallery/js:js_test_gen_html",
    "gallery/js/image_editor:js_test_gen_html",
    "gallery/js/image_editor:js_test_gen_html_modules",
    "image_loader:js_test_gen_html",
    "image_loader:js_test_gen_html_modules",
    "video_player/js:js_test_gen_html_modules",
  ]
}

preprocess_folder = "$target_gen_dir/preprocessed"

# Move files to the preprocessed folder to combine all resources in the same
# folder for JS bundling with rollup.
# This is for files direct from the src/:  input_folder="./".
preprocess_if_expr("preprocess_static") {
  in_folder = "./"
  out_folder = preprocess_folder

  in_files = [
    "audio_player/js/main.m.js",
    "audio_player/js/main_background.m.js",
    "file_manager/background/js/main_background.m.js",
    "video_player/js/main.m.js",
    "video_player/js/main_background.m.js",
  ]

  deps = [
    "//ui/file_manager/audio_player/js:main.m",
    "//ui/file_manager/audio_player/js:main_background.m",
    "//ui/file_manager/file_manager/background/js:main_background.m",
    "//ui/file_manager/video_player/js:main.m",
    "//ui/file_manager/video_player/js:main_background.m",
  ]
}

# This is for files that are generated in "gen/": input_folder=target_gen_dir.
preprocess_if_expr("preprocess_generated") {
  in_folder = target_gen_dir
  out_folder = preprocess_folder

  in_files = [
    # Audio Player:
    "audio_player/js/error_util.m.js",
    "audio_player/js/test_util.m.js",
    "audio_player/js/background.m.js",
    "audio_player/js/audio_player.m.js",
    "audio_player/js/metadata_worker.m.js",
    "audio_player/elements/audio_player.m.js",
    "audio_player/elements/track_info_panel.m.js",
    "audio_player/elements/track_list.m.js",
    "audio_player/elements/control_panel.m.js",
    "audio_player/elements/repeat_button.m.js",

    # Base:
    "base/js/app_util.m.js",
    "base/js/error_counter.m.js",
    "base/js/filtered_volume_manager.m.js",
    "base/js/mediasession_types.m.js",
    "base/js/volume_manager_types.m.js",

    # Common:
    "file_manager/common/js/async_util.m.js",
    "file_manager/common/js/file_operation_common.m.js",
    "file_manager/common/js/file_type.m.js",
    "file_manager/common/js/files_app_entry_types.m.js",
    "file_manager/common/js/importer_common.m.js",
    "file_manager/common/js/lru_cache.m.js",
    "file_manager/common/js/metrics.m.js",
    "file_manager/common/js/metrics_base.m.js",
    "file_manager/common/js/progress_center_common.m.js",
    "file_manager/common/js/trash.m.js",
    "file_manager/common/js/util.m.js",

    # Externs:
    "externs/background/background_base.m.js",
    "externs/background/crostini.m.js",
    "externs/background/drive_sync_handler.m.js",
    "externs/background/duplicate_finder.m.js",
    "externs/background/file_browser_background_full.m.js",
    "externs/background/file_operation_manager.m.js",
    "externs/background/import_history.m.js",
    "externs/background/media_import_handler.m.js",
    "externs/background/media_scanner.m.js",
    "externs/background/progress_center.m.js",
    "externs/background/task_queue.m.js",
    "externs/entry_location.m.js",
    "externs/exif_entry.m.js",
    "externs/files_app_entry_interfaces.m.js",
    "externs/metadata_worker_window.m.js",
    "externs/progress_center_panel.m.js",
    "externs/volume_info.m.js",
    "externs/volume_info_list.m.js",
    "externs/volume_manager.m.js",

    # Files app Background:
    "file_manager/background/js/app_window_wrapper.m.js",
    "file_manager/background/js/app_windows.m.js",
    "file_manager/background/js/background.m.js",
    "file_manager/background/js/background_base.m.js",
    "file_manager/background/js/crostini.m.js",
    "file_manager/background/js/device_handler.m.js",
    "file_manager/background/js/drive_sync_handler.m.js",
    "file_manager/background/js/duplicate_finder.m.js",
    "file_manager/background/js/entry_location_impl.m.js",
    "file_manager/background/js/file_operation_handler.m.js",
    "file_manager/background/js/file_operation_manager.m.js",
    "file_manager/background/js/file_operation_util.m.js",
    "file_manager/background/js/import_history.m.js",
    "file_manager/background/js/launcher.m.js",
    "file_manager/background/js/launcher_search.m.js",
    "file_manager/background/js/media_import_handler.m.js",
    "file_manager/background/js/media_scanner.m.js",
    "file_manager/background/js/metadata_proxy.m.js",
    "file_manager/background/js/metrics_start.m.js",
    "file_manager/background/js/mount_metrics.m.js",
    "file_manager/background/js/progress_center.m.js",
    "file_manager/background/js/task_queue.m.js",
    "file_manager/background/js/test_util.m.js",
    "file_manager/background/js/test_util_base.m.js",
    "file_manager/background/js/trash.m.js",
    "file_manager/background/js/volume_info_impl.m.js",
    "file_manager/background/js/volume_info_list_impl.m.js",
    "file_manager/background/js/volume_manager_factory.m.js",
    "file_manager/background/js/volume_manager_impl.m.js",
    "file_manager/background/js/volume_manager_util.m.js",

    # Files app Foreground:
    "file_manager/foreground/js/thumbnail_loader.m.js",

    # Files app Elements:
    "file_manager/foreground/elements/files_icon_button.m.js",

    # Image Loader:
    "image_loader/image_loader_client.m.js",
    "image_loader/load_image_request.m.js",

    # Metadata:
    "file_manager/foreground/js/metadata/content_metadata_provider.m.js",
    "file_manager/foreground/js/metadata/external_metadata_provider.m.js",
    "file_manager/foreground/js/metadata/file_system_metadata_provider.m.js",
    "file_manager/foreground/js/metadata/multi_metadata_provider.m.js",
    "file_manager/foreground/js/metadata/metadata_model.m.js",
    "file_manager/foreground/js/metadata/metadata_cache_item.m.js",
    "file_manager/foreground/js/metadata/metadata_item.m.js",
    "file_manager/foreground/js/metadata/metadata_provider.m.js",
    "file_manager/foreground/js/metadata/metadata_cache_set.m.js",
    "file_manager/foreground/js/metadata/metadata_request.m.js",
    "file_manager/foreground/js/metadata/image_orientation.m.js",
    "file_manager/foreground/js/metadata/metadata_dispatcher.m.js",
    "file_manager/foreground/js/metadata/image_parsers.m.js",
    "file_manager/foreground/js/metadata/exif_parser.m.js",
    "file_manager/foreground/js/metadata/id3_parser.m.js",
    "file_manager/foreground/js/metadata/metadata_parser.m.js",
    "file_manager/foreground/js/metadata/mpeg_parser.m.js",
    "file_manager/foreground/js/metadata/byte_reader.m.js",
    "file_manager/foreground/js/metadata/function_parallel.m.js",
    "file_manager/foreground/js/metadata/function_sequence.m.js",
    "file_manager/foreground/js/metadata/exif_constants.m.js",

    # Video Player:
    "video_player/js/error_util.m.js",
    "video_player/js/test_util.m.js",
    "video_player/js/background.m.js",
    "video_player/js/video_player.m.js",
    "video_player/js/video_player_native_controls.m.js",
    "video_player/js/video_player_metrics.m.js",
  ]

  deps = [
    "//ui/file_manager/audio_player/elements:elements",
    "//ui/file_manager/audio_player/js:modulize",
    "//ui/file_manager/base/js:modulize",
    "//ui/file_manager/externs:modulize",
    "//ui/file_manager/externs/background:modulize",
    "//ui/file_manager/file_manager/background/js:modulize",
    "//ui/file_manager/file_manager/common/js:modulize",
    "//ui/file_manager/file_manager/foreground/elements:elements",
    "//ui/file_manager/file_manager/foreground/js:modulize",
    "//ui/file_manager/file_manager/foreground/js/metadata:modulize",
    "//ui/file_manager/image_loader:modulize",
    "//ui/file_manager/video_player/js:modulize",
  ]
}

grd_prefix = "file_manager_gen"
generated_grd = "$target_gen_dir/${grd_prefix}_resources.grd"

generate_grd("build_grd") {
  out_grd = generated_grd

  input_files_base_dir = rebase_path(target_gen_dir, root_build_dir)
  input_files = [
    "audio_player/js/main.m.rollup.js",
    "audio_player/js/main_background.m.rollup.js",
    "audio_player/js/metadata_worker.m.rollup.js",

    "file_manager/background/js/main_background.m.rollup.js",
    "file_manager/foreground/elements/files_icon_button.m.js",
    "file_manager/foreground/elements/files_toggle_ripple.m.js",
    "file_manager/foreground/elements/files_ripple.m.js",

    "video_player/js/main.m.rollup.js",
    "video_player/js/main_background.m.rollup.js",
  ]

  resource_path_rewrites = [
    "audio_player/js/main.m.rollup.js|audio_player/js/main.m.js",
    "audio_player/js/main_background.m.rollup.js|audio_player/js/main_background.m.js",
    "audio_player/js/metadata_worker.m.rollup.js|audio_player/js/metadata_worker.m.js",
    "file_manager/background/js/main_background.m.rollup.js|file_manager/background/js/main_background.m.js",
    "video_player/js/main.m.rollup.js|video_player/js/main.m.js",
    "video_player/js/main_background.m.rollup.js|video_player/js/main_background.m.js",
  ]

  grdp_files = [
    "$target_gen_dir/audio_player/static_resources.grdp",
    "$target_gen_dir/file_manager/static_resources.grdp",
  ]

  deps = [
    "audio_player:build_static_grdp",
    "file_manager:build_static_grdp",
    "//ui/file_manager/audio_player/js:build",
    "//ui/file_manager/audio_player/js:build_background",
    "//ui/file_manager/audio_player/js:build_worker",
    "//ui/file_manager/file_manager/background/js:build",
    "//ui/file_manager/file_manager/foreground/elements:elements",
    "//ui/file_manager/video_player/js:build",
    "//ui/file_manager/video_player/js:build_background",
  ]
}

# Resources for the JS modules.
grit("file_manager_gen_resources") {
  defines = chrome_grit_defines

  # These arguments are needed since the grd is generated at build time.
  enable_input_discovery_for_gn_analyze = false

  source = generated_grd
  deps = [ ":build_grd" ]

  outputs = [
    "grit/file_manager_gen_resources.h",
    "grit/file_manager_gen_resources_map.cc",
    "grit/file_manager_gen_resources_map.h",
    "file_manager_gen_resources.pak",
  ]
  output_dir = target_gen_dir
}
