# Copyright 2019 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("//tools/polymer/html_to_js.gni")
import("//tools/polymer/html_to_wrapper.gni")
import("//tools/typescript/ts_library.gni")
import("//ui/webui/resources/tools/generate_grd.gni")
import("//ui/webui/webui_features.gni")
import("../../tools/optimize_webui.gni")
import("./os_settings.gni")

assert(is_chromeos_ash, "ChromeOS Settings is ChromeOS only")

# root_gen_dir is "gen"
# target_gen_dir is "gen/chrome/browser/resources/settings/chromeos"

preprocessed_folder = "preprocessed"
preprocessed_ts_folder = "preprocessed_ts"
web_components_manifest = "web_components_manifest.json"
non_web_component_files_manifest = "non_web_component_files_manifest.json"
browser_settings_tsc_manifest = "browser_settings_tsc_manifest.json"
external_mojo_manifest = "external_mojo_manifest.json"

if (optimize_webui) {
  build_manifest_v3 = "build_v3_manifest.json"

  optimize_webui("optimize_bundle") {
    host = "os-settings"
    input = rebase_path("$target_gen_dir/$preprocessed_folder", root_build_dir)
    js_module_in_files = [
      "chromeos/lazy_load.js",
      "chromeos/os_settings.js",
    ]
    js_out_files = [
      "lazy_load.rollup.js",
      "os_settings.rollup.js",
      "shared.rollup.js",
    ]
    out_manifest = "$target_gen_dir/$build_manifest_v3"

    deps = [
      ":build_ts",
      ":preprocess_browser_settings_tsc",
      ":preprocess_gen_js_files",
      ":preprocess_src_js_files",
      "//chrome/browser/resources/nearby_share/shared:preprocess_v3",
      "//ui/webui/resources:preprocess",
      "//ui/webui/resources/cr_components/app_management:build_ts",
    ]
    excludes = [
      "app-management/app_management.mojom-lite.js",
      "app-management/bitmap.mojom-lite.js",
      "app-management/file_path.mojom-lite.js",
      "app-management/image_info.mojom-lite.js",
      "app-management/image.mojom-lite.js",
      "app-management/safe_base_name.mojom-lite.js",
      "app-management/types.mojom-lite.js",
      "chrome://resources/cr_components/app_management/app_management.mojom-lite.js",
      "chrome://resources/cr_components/app_management/app_management.mojom-webui.js",
      "chrome://resources/cr_components/app_management/types.mojom-webui.js",
      "chrome://resources/cr_components/chromeos/bluetooth/cros_bluetooth_config.js",
      "chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js",
      "chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js",
      "chrome://resources/js/cr.m.js",
      "chrome://resources/mojo/ash/services/cellular_setup/public/mojom/cellular_setup.mojom-lite.js",
      "chrome://resources/mojo/ash/services/cellular_setup/public/mojom/esim_manager.mojom-lite.js",
      "chrome://resources/mojo/chromeos/ash/services/auth_factor_config/public/mojom/auth_factor_config.mojom-webui.js",
      "chrome://resources/mojo/chromeos/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom-webui.js",
      "chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-lite.js",
      "chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js",
      "chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-lite.js",
      "chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js",
      "chrome://resources/mojo/mojo/public/js/bindings.js",
      "chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js",
      "chrome://resources/mojo/mojo/public/mojom/base/big_buffer.mojom-lite.js",
      "chrome://resources/mojo/mojo/public/mojom/base/string16.mojom-lite.js",
      "chrome://resources/mojo/mojo/public/mojom/base/string16.mojom-webui.js",
      "chrome://resources/mojo/mojo/public/mojom/base/time.mojom-lite.js",
      "chrome://resources/mojo/mojo/public/mojom/base/time.mojom-webui.js",
      "chrome://resources/mojo/mojo/public/mojom/base/unguessable_token.mojom-lite.js",
      "chrome://resources/mojo/services/network/public/mojom/ip_address.mojom-lite.js",
      "chrome://resources/mojo/skia/public/mojom/bitmap.mojom-lite.js",
      "chrome://resources/mojo/skia/public/mojom/image_info.mojom-lite.js",
      "chrome://resources/mojo/skia/public/mojom/skcolor.mojom-webui.js",
      "chrome://resources/mojo/url/mojom/url.mojom-lite.js",
      "mojo/nearby_share.mojom-lite.js",
      "mojo/nearby_share_settings.mojom-lite.js",
      "mojo/nearby_share_share_type.mojom-lite.js",
      "mojo/nearby_share_target_types.mojom-lite.js",
      "os_apps_page/app_notification_handler.mojom-lite.js",
    ]
  }
}

# TypeScript Build Configuration
# TODO(crbug/1315757) Gradually remove JS files from pending_src_js_files
# and pending_gen_js_files, and add them as input files here.
# Eventually, ts_library() will be the only build path for all JS/TS files.
ts_library("build_ts") {
  tsconfig_base = "tsconfig_base.json"
  deps = [
    "//third_party/polymer/v3_0:library",
    "//ui/webui/resources:library",
    "//ui/webui/resources/mojo:library",
  ]
  extra_deps = [
    ":generate_mojom_webui",
    ":preprocess_gen_ts_files",
    ":preprocess_src_ts_files",
    "//ash/webui/common/resources:generate_definitions",
  ]
  definitions = [
    "//tools/typescript/definitions/chrome_send.d.ts",
    "//tools/typescript/definitions/bluetooth.d.ts",
    "//tools/typescript/definitions/bluetooth_private.d.ts",
  ]
  root_dir = "$target_gen_dir/$preprocessed_ts_folder"
  in_files = src_ts_files + gen_ts_files + mojom_webui_files
  out_dir = "$target_gen_dir/$preprocessed_folder"
}

preprocess_if_expr("preprocess_src_ts_files") {
  defines = chrome_grit_defines
  in_folder = "../"
  in_files = src_ts_files
  out_folder = "$target_gen_dir/$preprocessed_ts_folder"
}

preprocess_if_expr("preprocess_gen_ts_files") {
  defines = chrome_grit_defines
  deps = [
    ":generate_web_component_html_wrapper_files",
    ":generate_web_components",
  ]
  in_folder = get_path_info("../", "gen_dir")
  in_files = gen_ts_files
  out_folder = "$target_gen_dir/$preprocessed_ts_folder"
}

html_to_wrapper("generate_web_component_html_wrapper_files") {
  in_folder = "../"
  in_files = web_component_html_files
  out_folder = get_path_info("../", "gen_dir")
}

# TODO(crbug/1315757) Transfer these JS files into ts_library() when
# ready for TS conversion
preprocess_if_expr("preprocess_src_js_files") {
  defines = chrome_grit_defines
  in_folder = "../"
  out_folder = "$target_gen_dir/$preprocessed_folder"
  out_manifest = "$target_gen_dir/$non_web_component_files_manifest"
  in_files = pending_src_js_files
}

preprocess_if_expr("preprocess_gen_js_files") {
  defines = chrome_grit_defines
  deps = [ ":generate_web_components" ]
  in_folder = get_path_info("../", "gen_dir")
  out_folder = "$target_gen_dir/$preprocessed_folder"
  out_manifest = "$target_gen_dir/$web_components_manifest"
  in_files = pending_gen_js_files
}

# Generate all WebUI mojom files and copy them to preprocessed_ts_folder to be
# input to ts_library(). These files are bundled in optimized builds.
group("generate_mojom_webui") {
  public_deps = [
    ":generate_ash_search_mojo_webui",
    ":generate_cros_audio_config_mojo_webui",
    ":generate_personalization_search_mojo_webui",
    ":generate_settings_mojo_webui",
  ]
}

copy("generate_cros_audio_config_mojo_webui") {
  deps = [ "//ash/components/audio/public/mojom:mojom_webui_js" ]
  sources = [ "$root_gen_dir/mojom-webui/ash/components/audio/public/mojom/cros_audio_config.mojom-webui.js" ]
  outputs = [ "$target_gen_dir/$preprocessed_ts_folder/mojom-webui/audio/{{source_file_part}}" ]
}

copy("generate_settings_mojo_webui") {
  deps =
      [ "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_webui_js" ]
  sources = [
    "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/settings/chromeos/constants/routes.mojom-webui.js",
    "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/settings/chromeos/constants/setting.mojom-webui.js",
  ]
  outputs = [
    "$target_gen_dir/$preprocessed_ts_folder/mojom-webui/{{source_file_part}}",
  ]
}

copy("generate_personalization_search_mojo_webui") {
  deps = [ "//ash/webui/personalization_app/search:mojo_bindings_webui_js" ]
  sources = [ "$root_gen_dir/mojom-webui/ash/webui/personalization_app/search/search.mojom-webui.js" ]
  outputs = [ "$target_gen_dir/$preprocessed_ts_folder/mojom-webui/personalization/{{source_file_part}}" ]
}

copy("generate_ash_search_mojo_webui") {
  deps =
      [ "//chrome/browser/ui/webui/settings/ash/search:mojo_bindings_webui_js" ]
  sources = [
    "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/settings/ash/search/search.mojom-webui.js",
    "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/settings/ash/search/search_result_icon.mojom-webui.js",
    "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/settings/ash/search/user_action_recorder.mojom-webui.js",
  ]
  outputs = [ "$target_gen_dir/$preprocessed_ts_folder/mojom-webui/search/{{source_file_part}}" ]
}

# Mojo files generated by non-OS-settings targets, not bundled.
preprocess_if_expr("preprocess_external_mojo") {
  deps = [
    "//chrome/browser/ui/webui/settings/ash/os_apps_page/mojom:mojom_js",
    "//components/services/app_service/public/mojom:mojom_js",
    "//mojo/public/mojom/base",
    "//ui/gfx/image/mojom:mojom_js",
    "//ui/webui/resources/cr_components/app_management:mojo_bindings_js",
  ]
  in_folder = root_gen_dir

  # It does not matter which preprocess folder these files are pasted into, as
  # they are not used for bundling; the purpose of this build rule is to
  # include them in the generated grd file.
  out_folder = "$target_gen_dir/$preprocessed_folder"
  out_manifest = "$target_gen_dir/$external_mojo_manifest"
  in_files = [
    "chrome/browser/ui/webui/settings/ash/os_apps_page/mojom/app_notification_handler.mojom-lite.js",
    "components/services/app_service/public/mojom/types.mojom-lite.js",
    "mojo/public/mojom/base/file_path.mojom-lite.js",
    "mojo/public/mojom/base/safe_base_name.mojom-lite.js",
    "ui/gfx/image/mojom/image.mojom-lite.js",
    "ui/webui/resources/cr_components/app_management/app_management.mojom-lite.js",
  ]
}

grit("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 = "$target_gen_dir/os_settings_resources.grd"
  deps = [ ":build_grd" ]

  outputs = [
    "grit/os_settings_resources.h",
    "grit/os_settings_resources_map.cc",
    "grit/os_settings_resources_map.h",
    "os_settings_resources.pak",
  ]
  output_dir = "$root_gen_dir/chrome"
}

generate_grd("build_grd") {
  grd_prefix = "os_settings"
  out_grd = "$target_gen_dir/${grd_prefix}_resources.grd"
  input_files = [
    "images/computer_and_bluetooth_switch_dark.svg",
    "images/computer_and_bluetooth_switch.svg",
    "images/error_badge_dark.svg",
    "images/error_badge.svg",
    "images/icon_add_cellular.svg",
    "images/icon_add_circle.svg",
    "images/icon_add_wifi.svg",
    "images/icon_pair_bluetooth.svg",
    "images/keyboard_shortcut_dark.svg",
    "images/keyboard_shortcut.svg",
    "images/multidevice_permission_setup_connecting.svg",
    "images/multidevice_permission_setup_connecting_dark.svg",
    "images/notification_access_connecting_dark.svg",
    "images/notification_access_connecting.svg",
    "images/notification_access_error_dark.svg",
    "images/notification_access_error.svg",
    "images/notification_access_finished_dark.svg",
    "images/notification_access_finished.svg",
    "images/notification_access_setup.svg",
    "images/notification_access_setup_dark.svg",
    "images/smart_privacy.svg",
    "images/smart_privacy_dark.svg",
    "images/switch_access_setup_guide_assign_next.svg",
    "images/switch_access_setup_guide_assign_next_dark.svg",
    "images/switch_access_setup_guide_assign_previous.svg",
    "images/switch_access_setup_guide_assign_previous_dark.svg",
    "images/switch_access_setup_guide_assign_select.svg",
    "images/switch_access_setup_guide_assign_select_dark.svg",
    "images/switch_access_setup_guide_auto_scan_enabled.svg",
    "images/switch_access_setup_guide_auto_scan_enabled_dark.svg",
    "images/switch_access_setup_guide_choose_one_switch.svg",
    "images/switch_access_setup_guide_choose_one_switch_dark.svg",
    "images/switch_access_setup_guide_choose_three_switches.svg",
    "images/switch_access_setup_guide_choose_three_switches_dark.svg",
    "images/switch_access_setup_guide_choose_two_switches.svg",
    "images/switch_access_setup_guide_choose_two_switches_dark.svg",
    "images/switch_access_setup_guide_closing.svg",
    "images/switch_access_setup_guide_closing_dark.svg",
    "os_settings_v3.html",
    "../../nearby_share/shared/nearby_share_progress_bar_dark.json",
    "../../nearby_share/shared/nearby_share_progress_bar_light.json",
    "../../nearby_share/shared/nearby_share_pulse_animation_dark.json",
    "../../nearby_share/shared/nearby_share_pulse_animation_light.json",
  ]
  input_files_base_dir = rebase_path(".", "//")
  deps = [
    ":preprocess_external_mojo",
    "../../nearby_share:build_mojo_grdp",
  ]
  grdp_files = [ "$root_gen_dir/chrome/browser/resources/nearby_share/nearby_share_mojo_resources.grdp" ]
  manifest_files = [ "$target_gen_dir/$external_mojo_manifest" ]
  resource_path_rewrites = [
    "chrome/browser/ui/webui/settings/ash/os_apps_page/mojom/app_notification_handler.mojom-lite.js|os_apps_page/app_notification_handler.mojom-lite.js",
    "components/services/app_service/public/mojom/types.mojom-lite.js|app-management/types.mojom-lite.js",
    "mojo/public/mojom/base/file_path.mojom-lite.js|app-management/file_path.mojom-lite.js",
    "mojo/public/mojom/base/safe_base_name.mojom-lite.js|app-management/safe_base_name.mojom-lite.js",
    "os_settings_v3.html|chromeos/os_settings_v3.html",
    "ui/gfx/image/mojom/image.mojom-lite.js|app-management/image.mojom-lite.js",
    "ui/webui/resources/cr_components/app_management/app_management.mojom-lite.js|app-management/app_management.mojom-lite.js",
    "../../nearby_share/shared/nearby_share_progress_bar_dark.json|nearby_share_progress_bar_dark.json",
    "../../nearby_share/shared/nearby_share_progress_bar_light.json|nearby_share_progress_bar_light.json",
    "../../nearby_share/shared/nearby_share_pulse_animation_dark.json|nearby_share_pulse_animation_dark.json",
    "../../nearby_share/shared/nearby_share_pulse_animation_light.json|nearby_share_pulse_animation_light.json",
  ]

  if (optimize_webui) {
    deps += [ ":optimize_bundle" ]
    manifest_files += [ "$target_gen_dir/$build_manifest_v3" ]
    input_files += [ "../../nearby_share/shared/nearby_shared_icons.html" ]
    resource_path_rewrites += [
      "lazy_load.rollup.js|chromeos/lazy_load.js",
      "lazy_load.vulcanized.html|chromeos/lazy_load.html",
      "os_settings.rollup.js|chromeos/os_settings.js",
      "shared.rollup.js|chromeos/shared.rollup.js",
      "../../nearby_share/shared/nearby_shared_icons.html|shared/nearby_shared_icons.html",
    ]
  } else {
    deps += [
      ":build_ts",
      ":preprocess_browser_settings_tsc",
      ":preprocess_gen_js_files",
      ":preprocess_src_js_files",
      "//chrome/browser/resources/nearby_share/shared:build_v3_grdp",
      "//ui/webui/resources/cr_components/app_management:build_ts",
    ]
    grdp_files += [ "$root_gen_dir/chrome/browser/resources/nearby_share/shared/nearby_share_resources_v3.grdp" ]
    manifest_files += [
      "$target_gen_dir/$web_components_manifest",
      "$target_gen_dir/$non_web_component_files_manifest",
      "$target_gen_dir/$browser_settings_tsc_manifest",
      "$target_gen_dir/build_ts.manifest",
    ]
    resource_path_rewrites += [ "chromeos/os_settings.html|os_settings.html" ]
  }
}

# Since Browser Settings is migrating to TypeScript (crbug.com/1234307), and
# some files are still shared with CrOS Settings, need to copy the transpiled
# JS files from TS compiler's output.
preprocess_if_expr("preprocess_browser_settings_tsc") {
  defines = chrome_grit_defines
  deps = [ "..:build_ts" ]
  in_folder = "$root_gen_dir/chrome/browser/resources/settings/tsc"
  out_folder = "$target_gen_dir/$preprocessed_folder"
  out_manifest = "$target_gen_dir/$browser_settings_tsc_manifest"

  # Files that have a corresponding HTML wrapper file.
  browser_settings_web_component_files = [
    "a11y_page/captions_subpage.js",
    "a11y_page/live_caption_section.js",
    "controls/controlled_button.js",
    "controls/controlled_radio_button.js",
    "controls/extension_controlled_indicator.js",
    "controls/password_prompt_dialog.js",
    "controls/settings_dropdown_menu.js",
    "controls/settings_radio_group.js",
    "controls/settings_slider.js",
    "controls/settings_textarea.js",
    "controls/settings_toggle_button.js",
    "people_page/signout_dialog.js",
    "people_page/sync_account_control.js",
    "people_page/sync_controls.js",
    "people_page/sync_encryption_options.js",
    "people_page/sync_page.js",
    "privacy_page/personalization_options.js",
    "privacy_page/secure_dns_input.js",
    "privacy_page/secure_dns.js",
    "settings_page/settings_animated_pages.js",
    "settings_page/settings_section.js",
    "settings_page/settings_subpage.js",
    "site_favicon.js",
  ]

  # Files that don't have a corresponding HTML file.
  in_files = [
    "appearance_page/fonts_browser_proxy.js",
    "controls/cr_policy_pref_mixin.js",
    "controls/pref_control_mixin.js",
    "controls/settings_boolean_control_mixin.js",
    "extension_control_browser_proxy.js",
    "icons.html.js",
    "open_window_proxy.js",
    "people_page/profile_info_browser_proxy.js",
    "people_page/sync_browser_proxy.js",
    "prefs/prefs.js",
    "prefs/prefs_mixin.js",
    "prefs/prefs_types.js",
    "prefs/pref_util.js",
    "privacy_page/autofill_assistant_browser_proxy.js",
    "privacy_page/privacy_page_browser_proxy.js",
    "relaunch_mixin.js",
    "setting_id_param_util.js",
    "settings_page_styles.css.js",
    "settings_shared.css.js",
    "settings_vars.css.js",
  ]

  foreach(f, browser_settings_web_component_files) {
    in_files += [
      f,
      string_replace(f, ".js", ".html.js"),
    ]
  }
}

html_to_js("web_components") {
  js_files = [
    "os_icons.js",
    "os_settings_icons_css.js",
  ]
}

group("generate_web_components") {
  public_deps = [
    ":web_components",

    # Sub-folder targets
    "ambient_mode_page:web_components",
    "bluetooth_page:web_components",
    "crostini_page:web_components",
    "date_time_page:web_components",
    "device_page:web_components",
    "google_assistant_page:web_components",
    "guest_os:web_components",
    "internet_page:web_components",
    "kerberos_page:web_components",
    "keyboard_shortcut_banner:web_components",
    "multidevice_page:web_components",
    "nearby_share_page:web_components",
    "os_a11y_page:web_components",
    "os_apps_page:web_components",
    "os_apps_page/app_management_page:web_components",
    "os_apps_page/app_management_page/borealis_page:web_components",
    "os_apps_page/app_management_page/plugin_vm_page:web_components",
    "os_apps_page/app_notifications_page:web_components",
    "os_bluetooth_page:web_components",
    "os_files_page:web_components",
    "os_languages_page:web_components",
    "os_people_page:web_components",
    "os_printing_page:web_components",
    "os_privacy_page:web_components",
    "os_reset_page:web_components",
    "os_search_page:web_components",
    "os_settings_main:web_components",
    "os_settings_menu:web_components",
    "os_settings_page:web_components",
    "os_settings_search_box:web_components",
    "os_settings_ui:web_components",
    "os_toolbar:web_components",
    "parental_controls_page:web_components",
    "personalization_page:web_components",
    "settings_scheduler_slider:web_components",
  ]
}

# TODO(crbug/1315757) Gradually remove closure compilation for subfolders/pages
# that are migrated to TypeScript
group("closure_compile_module") {
  deps = [
    ":closure_compile_local_module",
    "ambient_mode_page:closure_compile_module",
    "bluetooth_page:closure_compile_module",
    "crostini_page:closure_compile_module",
    "date_time_page:closure_compile_module",
    "device_page:closure_compile_module",
    "google_assistant_page:closure_compile_module",
    "guest_os:closure_compile_module",
    "internet_page:closure_compile_module",
    "kerberos_page:closure_compile_module",
    "keyboard_shortcut_banner:closure_compile_module",
    "multidevice_page:closure_compile_module",
    "os_a11y_page:closure_compile_module",
    "os_apps_page:closure_compile_module",
    "os_apps_page/app_management_page:closure_compile_module",
    "os_apps_page/app_management_page/borealis_page:closure_compile_module",
    "os_apps_page/app_management_page/plugin_vm_page:closure_compile_module",
    "os_apps_page/app_notifications_page:closure_compile",
    "os_bluetooth_page:closure_compile_module",
    "os_files_page:closure_compile_module",
    "os_languages_page:closure_compile_module",
    "os_people_page:closure_compile_module",
    "os_printing_page:closure_compile_module",
    "os_privacy_page:closure_compile_module",
    "os_reset_page:closure_compile_module",
    "os_search_page:closure_compile_module",
    "os_settings_main:closure_compile_module",
    "os_settings_menu:closure_compile_module",
    "os_settings_page:closure_compile_module",
    "os_settings_search_box:closure_compile_module",
    "os_settings_ui:closure_compile_module",
    "os_toolbar:closure_compile_module",
    "parental_controls_page:closure_compile_module",
    "personalization_page:closure_compile_module",
    "settings_scheduler_slider:closure_compile_module",
  ]
}

js_type_check("closure_compile_local_module") {
  is_polymer3 = true
  closure_flags = os_settings_closure_flags

  deps = [
    ":combined_search_handler",
    ":deep_linking_behavior",
    ":global_scroll_target_behavior",
    ":lazy_load",
    ":metrics_recorder",
    ":os_icons",
    ":os_page_visibility",
    ":os_route",
    ":os_settings",
    ":os_settings_icons_css",
    ":os_settings_routes",
    ":personalization_search_handler",
    ":pref_to_setting_metric_converter",
    ":prefs_behavior",
    ":route_observer_behavior",
    ":route_origin_behavior",
    ":settings_search_handler",
  ]
}

js_library("os_settings") {
}

js_library("lazy_load") {
}

js_library("deep_linking_behavior") {
  deps = [
    "..:router",
    "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_webui_js",
    "//ui/webui/resources/js:assert.m",
    "//ui/webui/resources/js:load_time_data.m",
  ]
}

js_library("global_scroll_target_behavior") {
  deps = [
    ":route_observer_behavior",
    "..:router",
    "//ui/webui/resources/js:promise_resolver.m",
  ]
}

js_library("metrics_recorder") {
  deps = [
    "//chrome/browser/ui/webui/settings/ash/search:mojo_bindings_webui_js",
    "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_webui_js",
  ]
}

js_library("os_icons") {
  deps = [
    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
  ]
}

js_library("os_page_visibility") {
  deps = [ "//ui/webui/resources/js:load_time_data.m" ]
}

js_library("os_route") {
  deps = [
    ":os_settings_routes",
    "..:router",
    "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_webui_js",
    "//ui/webui/resources/js:cr.m",
    "//ui/webui/resources/js:load_time_data.m",
  ]
}

js_library("os_settings_icons_css") {
}

js_library("os_settings_routes") {
  deps = [
    "..:router",
    "//ui/webui/resources/js:load_time_data.m",
  ]
}

js_library("prefs_behavior") {
  deps = [ "//ui/webui/resources/js:assert.m" ]
  externs_list = [ "$externs_path/settings_private.js" ]
}

js_library("pref_to_setting_metric_converter") {
  deps = [
    "//chrome/browser/ui/webui/settings/ash/search:mojo_bindings_webui_js",
    "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_webui_js",
  ]
}

js_library("route_observer_behavior") {
  deps = [
    "..:router",
    "//ui/webui/resources/js:assert.m",
  ]
}

js_library("route_origin_behavior") {
  deps = [
    ":os_route",
    "//ui/webui/resources/js:cr.m",
  ]
}

js_library("combined_search_handler") {
  deps = [
    ":personalization_search_handler",
    ":settings_search_handler",
    "//ash/webui/personalization_app/search:mojo_bindings_webui_js",
    "//mojo/public/mojom/base:base_webui_js",
  ]
}

js_library("personalization_search_handler") {
  deps = [ "//ash/webui/personalization_app/search:mojo_bindings_webui_js" ]
}

js_library("settings_search_handler") {
  deps = [
    "//chrome/browser/ui/webui/settings/ash/search:mojo_bindings_js_library_for_compile",
    "//ui/webui/resources/js:cr.m",
  ]
}
