| # 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 |
| } |