blob: e837a455dd685a316867030e87797c65da0eb5f6 [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/resources/tools/js_modulizer.gni")
import("//ui/webui/webui_features.gni")
import("../../optimize_webui.gni")
import("./os_settings.gni")
if (optimize_webui) {
settings_pak_file = "os_settings_resources.pak"
unpak_folder = "os_settings_resources.unpak"
# Put v3 unpacked files in a separate folder, to avoid a possible race
# between v2 and v3 build targets writing files to the same location.
unpak_folder_v3 = "os_settings_resources_v3.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/file_path.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",
"chrome://resources/mojo/skia/public/mojom/bitmap.mojom-lite.js",
"chrome://resources/mojo/skia/public/mojom/image_info.mojom-lite.js",
"chrome://resources/mojo/url/mojom/url.mojom-lite.js",
]
deps = [ ":unpak" ]
}
optimize_webui("build_polymer3") {
host = "os-settings"
input = rebase_path("$target_gen_dir/$unpak_folder_v3", root_build_dir)
js_out_files = [ "os_settings.rollup.js" ]
js_module_in_files = [ "chromeos/os_settings.js" ]
deps = [
":unpak_v3",
"../../../../../ui/webui/resources:modulize",
]
excludes = [
"chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-lite.js",
"chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-lite.js",
"chrome://resources/mojo/services/network/public/mojom/ip_address.mojom-lite.js",
"chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js",
"chrome://resources/js/cr.m.js",
"chrome://resources/css/cros_colors.generated.css",
"chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js",
"chrome://resources/mojo/url/mojom/url.mojom-lite.js",
"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/types.mojom-lite.js",
"constants/routes.mojom-lite.js",
"constants/setting.mojom-lite.js",
"search/search.mojom-lite.js",
"search/search_result_icon.mojom-lite.js",
"search/user_action_recorder.mojom-lite.js",
]
}
unpak_excludes = [
"../../ui/webui/settings/chromeos/constants/routes.mojom-lite.js",
"../../ui/webui/settings/chromeos/constants/setting.mojom-lite.js",
"../../../../mojo/public/mojom/base/file_path.mojom-lite.js",
"../../../../ui/gfx/image/mojom/image.mojom-lite.js",
"../../../../url/mojom/url.mojom-lite.js",
"../../ui/webui/app_management/app_management.mojom-lite.js",
"../../../../components/services/app_service/public/mojom/types.mojom-lite.js",
"../../ui/webui/settings/chromeos/search/search.mojom-lite.js",
"../../ui/webui/settings/chromeos/search/search_result_icon.mojom-lite.js",
"../../ui/webui/settings/chromeos/search/user_action_recorder.mojom-lite.js",
]
unpak("unpak_v3") {
pak_file = settings_pak_file
out_folder = unpak_folder_v3
pak_base_dir = "../"
excludes = unpak_excludes
deps = [ ":flattened_resources" ]
}
unpak("unpak") {
pak_file = settings_pak_file
out_folder = unpak_folder
pak_base_dir = "../"
excludes = unpak_excludes
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),
]
deps += [ ":polymer3_elements" ]
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_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",
# TODO: These subpages should be listed in the BUILD files of their direct
# parents instead of here.
"os_apps_page/app_management_page:closure_compile",
"os_apps_page/app_management_page/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_apps_page/app_management_page/plugin_vm_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",
]
}
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 = [ "//chrome/browser/ui/webui/settings/chromeos/search:mojo_bindings_js_library_for_compile" ]
extra_deps = [ ":modulize" ]
}
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 = [
":os_settings_routes.m",
"..:router.m",
"//chrome/browser/ui/webui/settings/chromeos/constants:mojom_js_library_for_compile",
"//ui/webui/resources/js:cr.m",
"//ui/webui/resources/js:load_time_data.m",
]
extra_deps = [ ":modulize" ]
}
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 = [ "//ui/webui/resources/js:load_time_data.m" ]
extra_deps = [ ":modulize" ]
}
js_library("route_origin_behavior.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/route_origin_behavior.m.js" ]
deps = [
":os_route.m",
"//ui/webui/resources/js:cr.m",
]
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_apps_page/app_management_page/plugin_vm_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",
# Local targets
":modulize",
":os_icons_module",
":os_page_visibility_module",
":os_settings_icons_css_module",
# Shared with browser settings
"..:modulize",
"..:settings_shared_css_module",
"..:settings_vars_css_module",
"../nearby_share_page:polymer3_elements",
"../prefs:modulize",
"../prefs:prefs_module",
"../settings_page:settings_animated_pages_module",
"../settings_page:settings_subpage_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_settings_icons_css") {
js_file = "os_settings_icons_css.m.js"
html_file = "os_settings_icons_css.html"
html_type = "style-module"
}
js_modulizer("modulize") {
input_files = [
"metrics_recorder.js",
"os_settings_routes.js",
"route_origin_behavior.js",
"search_handler.js",
"os_route.js",
]
namespace_rewrites = os_settings_namespace_rewrites
}