blob: 273edad38ef22373f7400be69d80f82ce7c02fe2 [file] [log] [blame]
# 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("//ui/webui/webui_features.gni")
import("../../optimize_webui.gni")
if (optimize_webui) {
settings_pak_file = "os_settings_resources.pak"
unpak_folder = "os_settings_resources.unpak"
optimize_webui("build") {
host = "os-settings"
html_in_files = [
"chromeos/os_settings.html",
"chromeos/lazy_load.html",
]
html_out_files = [
"vulcanized.html",
"lazy_load.vulcanized.html",
]
insert_in_head = "<base href=\"chrome://os-settings\">"
input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir)
js_out_files = [
"crisper.js",
"lazy_load.crisper.js",
]
excludes = [
# TODO(calamity): Update optimize_webui to handle generated files.
"chrome://resources/css/cros_colors.generated.css",
"chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom.html",
"chrome://os-settings/app-management/app_management.mojom-lite.js",
"chrome://os-settings/app-management/bitmap.mojom-lite.js",
"chrome://os-settings/app-management/file_path.mojom-lite.js",
"chrome://os-settings/app-management/image_info.mojom-lite.js",
"chrome://os-settings/app-management/image.mojom-lite.js",
"chrome://os-settings/app-management/types.mojom-lite.js",
"chrome://os-settings/constants/routes.mojom-lite.js",
"chrome://os-settings/constants/setting.mojom-lite.js",
"chrome://os-settings/search/search.mojom-lite.js",
"chrome://os-settings/search/search_result_icon.mojom-lite.js",
"chrome://os-settings/search/user_action_recorder.mojom-lite.js",
"chrome://resources/mojo/mojo/public/mojom/base/big_buffer.mojom.html",
"chrome://resources/mojo/mojo/public/mojom/base/string16.mojom.html",
"chrome://resources/mojo/mojo/public/mojom/base/time.mojom.html",
]
deps = [ ":unpak" ]
}
unpak("unpak") {
pak_file = settings_pak_file
out_folder = unpak_folder
deps = [ ":flattened_resources" ]
}
grit("flattened_resources") {
source = "../os_settings_resources.grd"
deps = [ "//chrome/browser/ui/webui/settings/chromeos:mojom_js" ]
grit_flags = [
"-E",
"root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
]
defines = chrome_grit_defines
outputs = [
"grit/os_settings_resources.h",
"grit/os_settings_resources_map.cc",
"grit/os_settings_resources_map.h",
settings_pak_file,
]
output_dir = "$root_gen_dir/chrome/browser/resources/settings/chromeos"
}
}
group("closure_compile") {
deps = [
":metrics_recorder",
":os_page_visibility",
":os_route",
":os_settings_routes",
":route_origin_behavior",
":search_handler",
"ambient_mode_page:closure_compile",
"bluetooth_page:closure_compile",
"crostini_page:closure_compile",
"date_time_page:closure_compile",
"device_page:closure_compile",
"google_assistant_page:closure_compile",
"internet_page:closure_compile",
"localized_link:closure_compile",
"multidevice_page:closure_compile",
"os_a11y_page:closure_compile",
"os_apps_page:closure_compile",
"os_apps_page/app_management_page:closure_compile",
"os_files_page:closure_compile",
"os_languages_page:closure_compile",
"os_people_page:closure_compile",
"os_printing_page:closure_compile",
"os_privacy_page:closure_compile",
"os_reset_page:closure_compile",
"os_search_page:closure_compile",
"os_settings_main:closure_compile",
"os_settings_menu:closure_compile",
"os_settings_page:closure_compile",
"os_settings_search_box:closure_compile",
"os_settings_ui:closure_compile",
"parental_controls_page:closure_compile",
"personalization_page:closure_compile",
"plugin_vm_page:closure_compile",
]
}
js_library("os_page_visibility") {
deps = [
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:load_time_data",
]
}
js_library("os_route") {
deps = [
":os_settings_routes",
"..:router",
"//chrome/browser/ui/webui/settings/chromeos/constants:mojom_js_library_for_compile",
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:load_time_data",
]
}
js_library("os_settings_routes") {
deps = [
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:load_time_data",
]
}
js_library("route_origin_behavior") {
deps = [
":os_route",
"//ui/webui/resources/js:cr",
]
}
js_library("metrics_recorder") {
deps = [
"//chrome/browser/ui/webui/settings/chromeos/search:mojo_bindings_js_library_for_compile",
"//ui/webui/resources/js:cr",
]
}
js_library("search_handler") {
deps = [
"//chrome/browser/ui/webui/settings/chromeos/search:mojo_bindings_js_library_for_compile",
"//ui/webui/resources/js:cr",
]
}
# Polymer 3 related rules.
group("closure_compile_module") {
deps = [
# TODO: Uncomment as the Polymer3 migration makes progress.
#":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",
#"internet_page:closure_compile_module",
#"localized_link:closure_compile_module",
#"multidevice_page:closure_compile_module",
#"os_a11y_page:closure_compile_module",
#"os_about_page:closure_compile_module",
#"os_apps_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",
#"plugin_vm_page:closure_compile_module",
]
}
# TODO: Uncomment as the Polymer3 migration makes progress.
#js_type_check("closure_compile_local_module") {
# is_polymer3 = true
# deps = [
# ":metrics_recorder.m",
# ":os_icons.m",
# ":os_page_visibility.m",
# ":os_route.m",
# ":os_settings.m",
# ":os_settings_icons_css.m",
# ":os_settings_routes.m",
# ":route_origin_behavior.m",
# ":search_handler.m",
# ]
#}
js_library("metrics_recorder.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/metrics_recorder.m.js" ]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":metrics_recorder_module" ]
}
js_library("os_icons.m") {
sources = [
"$root_gen_dir/chrome/browser/resources/settings/chromeos/os_icons.m.js",
]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":os_icons_module" ]
}
js_library("os_page_visibility.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_page_visibility.m.js" ]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":os_page_visibility_module" ]
}
js_library("os_route.m") {
sources = [
"$root_gen_dir/chrome/browser/resources/settings/chromeos/os_route.m.js",
]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":os_route_module" ]
}
js_library("os_settings_icons_css.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_settings_icons_css.m.js" ]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":os_settings_icons_css_module" ]
}
js_library("os_settings_routes.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_settings_routes.m.js" ]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":modulize" ]
}
js_library("route_origin_behavior.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/route_origin_behavior.m.js" ]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":modulize" ]
}
js_library("search_handler.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/search_handler.m.js" ]
deps = [
# TODO: Fill those in.
]
extra_deps = [ ":modulize" ]
}
import("//tools/polymer/polymer.gni")
group("polymer3_elements") {
public_deps = [
# Sub-folder targets
"ambient_mode_page:polymer3_elements",
"bluetooth_page:polymer3_elements",
"crostini_page:polymer3_elements",
"date_time_page:polymer3_elements",
"device_page:polymer3_elements",
"google_assistant_page:polymer3_elements",
"internet_page:polymer3_elements",
"localized_link:polymer3_elements",
"multidevice_page:polymer3_elements",
"os_a11y_page:polymer3_elements",
"os_about_page:polymer3_elements",
"os_apps_page:polymer3_elements",
"os_files_page:polymer3_elements",
"os_languages_page:polymer3_elements",
"os_people_page:polymer3_elements",
"os_printing_page:polymer3_elements",
"os_privacy_page:polymer3_elements",
"os_reset_page:polymer3_elements",
"os_search_page:polymer3_elements",
"os_settings_main:polymer3_elements",
"os_settings_menu:polymer3_elements",
"os_settings_page:polymer3_elements",
"os_settings_search_box:polymer3_elements",
"os_settings_ui:polymer3_elements",
"os_toolbar:polymer3_elements",
"parental_controls_page:polymer3_elements",
"personalization_page:polymer3_elements",
"plugin_vm_page:polymer3_elements",
# Local targets
":metrics_recorder_module",
":modulize",
":os_icons_module",
":os_page_visibility_module",
":os_route_module",
":os_settings_icons_css_module",
]
}
polymer_modulizer("metrics_recorder") {
js_file = "metrics_recorder.js"
html_file = "metrics_recorder.html"
html_type = "dom-module"
}
polymer_modulizer("os_icons") {
js_file = "os_icons.m.js"
html_file = "os_icons.html"
html_type = "iron-iconset"
}
polymer_modulizer("os_page_visibility") {
js_file = "os_page_visibility.js"
html_file = "os_page_visibility.html"
html_type = "dom-module"
}
polymer_modulizer("os_route") {
js_file = "os_route.js"
html_file = "os_route.html"
html_type = "dom-module"
}
polymer_modulizer("os_settings_icons_css") {
js_file = "os_settings_icons_css.m.js"
html_file = "os_settings_icons_css.html"
html_type = "style-module"
}
import("//ui/webui/resources/tools/js_modulizer.gni")
js_modulizer("modulize") {
input_files = [
"os_settings_routes.js",
"route_origin_behavior.js",
"search_handler.js",
]
}