blob: d40afb756ce82424825f1632f3dd2ef741b35b06 [file] [log] [blame]
# Copyright 2018 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("//build/config/chromeos/ui_mode.gni")
import("//build/config/crypto.gni")
import("//third_party/closure_compiler/compile_js.gni")
import("//tools/typescript/ts_definitions.gni")
import("//tools/typescript/ts_library.gni")
import("//ui/webui/resources/tools/generate_grd.gni")
include_polymer = !is_android && !is_ios
generate_grd("build_grd") {
grd_prefix = "webui_generated"
out_grd = "$target_gen_dir/${grd_prefix}_resources.grd"
deps = [
"css:build_grdp",
"html:build_grdp",
"images:build_grdp",
"js:build_grdp",
"js/cr/ui:build_grdp",
"//third_party/jstemplate:build_grdp",
]
grdp_files = [
"$target_gen_dir/css/resources.grdp",
"$target_gen_dir/html/resources.grdp",
"$target_gen_dir/images/resources.grdp",
"$target_gen_dir/js/cr/ui/resources.grdp",
"$target_gen_dir/js/resources.grdp",
"$root_gen_dir/third_party/jstemplate/resources.grdp",
]
if (!is_chromeos_ash && !is_android) {
# Roboto Font. Roboto-Regular and Roboto-Light is already available on
# Android, and Roboto-Medium is not used on Android. All 6 weights of
# Roboto are available on Chrome OS.
input_files_base_dir = rebase_path(".", "//")
input_files = [
"roboto/roboto-bold.woff2",
"roboto/roboto-medium.woff2",
"roboto/roboto-regular.woff2",
]
}
if (include_polymer) {
deps += [
"cr_components:build_grdp",
"cr_elements:build_grdp",
"//third_party/polymer/v3_0:build_grdp",
]
grdp_files += [
"$root_gen_dir/third_party/polymer/v3_0/polymer_3_0_resources.grdp",
"$root_gen_dir/ui/webui/resources/cr_components/cr_components_resources.grdp",
"$root_gen_dir/ui/webui/resources/cr_elements/cr_elements_resources.grdp",
]
if (use_nss_certs) {
deps += [ "cr_components/certificate_manager:build_grdp" ]
grdp_files +=
[ "$target_gen_dir/cr_components/certificate_manager/resources.grdp" ]
}
# TODO(crbug.com/1184053): Fully remove once no longer used by CrOS.
if (is_chromeos_ash) {
deps += [ "//third_party/polymer/v1_0:build_grdp" ]
grdp_files += [
"$root_gen_dir/third_party/polymer/v1_0/polymer_1_0_resources.grdp",
]
}
}
if (is_chromeos_ash) {
deps += [
"//ash/webui/common/resources:build_grdp",
"//third_party/web-animations-js:build_grdp",
]
grdp_files += [
"$root_gen_dir/third_party/web-animations-js/web_animations_resources.grdp",
"$root_gen_dir/ash/webui/common/resources/ash_common_resources.grdp",
]
}
if (!is_android && !is_ios) {
deps += [ "//third_party/lottie:build_grdp" ]
grdp_files += [ "$root_gen_dir/third_party/lottie/resources.grdp" ]
}
}
group("preprocess") {
public_deps = [
"cr_components:preprocess",
"cr_elements:preprocess",
"js:preprocess",
]
}
group("closure_compile") {
deps = [
"js:closure_compile",
"js:closure_compile_modules",
]
if (!is_android) {
deps += [
"cr_components:closure_compile",
"cr_elements:closure_compile",
]
}
}
group("modulize") {
public_deps = [
"js:modulize",
"js/cr:modulize",
"js/cr/ui:modulize",
]
if (!is_android) {
public_deps += [
"cr_components:polymer3_elements",
"cr_elements:polymer3_elements",
]
}
}
# TypeScript targets
preprocessed_folder = "$target_gen_dir/preprocessed"
checked_in_dts_files = [
"cr_components/managed_footnote/managed_footnote.d.ts",
"cr_elements/cr_action_menu/cr_action_menu.m.d.ts",
"cr_elements/cr_button/cr_button.m.d.ts",
"cr_elements/cr_checkbox/cr_checkbox.m.d.ts",
"cr_elements/cr_container_shadow_behavior.m.d.ts",
"cr_elements/cr_dialog/cr_dialog.m.d.ts",
"cr_elements/cr_drawer/cr_drawer.d.ts",
"cr_elements/cr_expand_button/cr_expand_button.m.d.ts",
"cr_elements/cr_icon_button/cr_icon_button.m.d.ts",
"cr_elements/cr_input/cr_input.m.d.ts",
"cr_elements/cr_lazy_render/cr_lazy_render.m.d.ts",
"cr_elements/cr_radio_button/cr_radio_button_behavior.m.d.ts",
"cr_elements/cr_radio_button/cr_radio_button.m.d.ts",
"cr_elements/cr_radio_group/cr_radio_group.m.d.ts",
"cr_elements/cr_search_field/cr_search_field_behavior.d.ts",
"cr_elements/cr_toast/cr_toast_manager.m.d.ts",
"cr_elements/cr_toast/cr_toast.m.d.ts",
"cr_elements/cr_toggle/cr_toggle.m.d.ts",
"cr_elements/cr_toolbar/cr_toolbar_search_field.d.ts",
"cr_elements/cr_view_manager/cr_view_manager.d.ts",
"cr_elements/find_shortcut_behavior.d.ts",
"cr_elements/policy/cr_policy_indicator_behavior.m.d.ts",
"cr_elements/policy/cr_policy_indicator.m.d.ts",
"cr_elements/policy/cr_tooltip_icon.m.d.ts",
"js/cr/ui/focus_row_behavior.m.d.ts",
"js/i18n_behavior.m.d.ts",
"js/list_property_update_behavior.m.d.ts",
"js/promise_resolver.m.d.ts",
"js/web_ui_listener_behavior.m.d.ts",
]
# Copies checked-in .d.ts files to the preprocess folder so that they are
# discovered by TSC the same way generated .d.ts files are.
copy("copy_checked_in_dts_files") {
sources = checked_in_dts_files
outputs = [ "$preprocessed_folder/{{source_target_relative}}" ]
}
ts_library("library") {
root_dir = preprocessed_folder
out_dir = preprocessed_folder
composite = true
definitions = []
# Checked-in .d.ts files.
foreach(_file, checked_in_dts_files) {
definitions += [ "$root_dir/$_file" ]
}
definitions += [
# Auto-generated .d.ts files.
"$root_dir/cr_components/managed_dialog/managed_dialog.d.ts",
"$root_dir/cr_elements/action_link_css.m.d.ts",
"$root_dir/cr_elements/cr_fingerprint/cr_fingerprint_icon.m.d.ts",
"$root_dir/cr_elements/cr_fingerprint/cr_fingerprint_progress_arc.m.d.ts",
"$root_dir/cr_elements/cr_actionable_row_style.m.d.ts",
"$root_dir/cr_elements/cr_grid/cr_grid.d.ts",
"$root_dir/cr_elements/cr_icons_css.m.d.ts",
"$root_dir/cr_elements/cr_auto_img/cr_auto_img.d.ts",
"$root_dir/cr_elements/cr_input/cr_input_style_css.m.d.ts",
"$root_dir/cr_elements/cr_link_row/cr_link_row.d.ts",
"$root_dir/cr_elements/cr_lottie/cr_lottie.m.d.ts",
"$root_dir/cr_elements/cr_menu_selector/cr_menu_selector.d.ts",
"$root_dir/cr_elements/cr_page_host_style_css.d.ts",
"$root_dir/cr_elements/cr_profile_avatar_selector/cr_profile_avatar_selector_grid.d.ts",
"$root_dir/cr_elements/cr_profile_avatar_selector/cr_profile_avatar_selector.d.ts",
"$root_dir/cr_elements/cr_radio_button/cr_radio_button_style_css.m.d.ts",
"$root_dir/cr_elements/cr_scrollable_behavior.m.d.ts",
"$root_dir/cr_elements/cr_slider/cr_slider.d.ts",
"$root_dir/cr_elements/cr_splitter/cr_splitter.d.ts",
"$root_dir/cr_elements/cr_toolbar/cr_toolbar.d.ts",
"$root_dir/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.d.ts",
"$root_dir/cr_elements/hidden_style_css.m.d.ts",
"$root_dir/cr_elements/icons.m.d.ts",
"$root_dir/cr_elements/md_select_css.m.d.ts",
"$root_dir/cr_elements/mouse_hoverable_mixin.d.ts",
"$root_dir/cr_elements/mwb_shared_style.d.ts",
"$root_dir/cr_elements/mwb_shared_vars.d.ts",
"$root_dir/cr_elements/policy/cr_policy_pref_behavior.m.d.ts",
"$root_dir/cr_elements/policy/cr_policy_pref_indicator.m.d.ts",
"$root_dir/cr_elements/search_highlight_style_css.d.ts",
"$root_dir/cr_elements/shared_style_css.m.d.ts",
"$root_dir/cr_elements/shared_vars_css.m.d.ts",
"$root_dir/js/action_link.d.ts",
"$root_dir/js/assert.m.d.ts",
"$root_dir/js/color_utils.d.ts",
"$root_dir/js/cr/event_target.m.d.ts",
"$root_dir/js/cr.m.d.ts",
"$root_dir/js/cr/ui/drag_wrapper.d.ts",
"$root_dir/js/cr/ui/focus_grid.d.ts",
"$root_dir/js/cr/ui/focus_outline_manager.m.d.ts",
"$root_dir/js/cr/ui/focus_row.m.d.ts",
"$root_dir/js/cr/ui/keyboard_shortcut_list.m.d.ts",
"$root_dir/js/cr/ui/store_client.m.d.ts",
"$root_dir/js/event_tracker.m.d.ts",
"$root_dir/js/load_time_data.m.d.ts",
"$root_dir/js/parse_html_subset.m.d.ts",
"$root_dir/js/plural_string_proxy.d.ts",
"$root_dir/js/search_highlight_utils.d.ts",
"$root_dir/js/icon.m.d.ts",
"$root_dir/js/util.m.d.ts",
]
if (is_chromeos_ash) {
definitions += [
"$root_dir/cr_elements/chromeos/cros_color_overrides.m.d.ts",
"$root_dir/cr_elements/chromeos/cr_picture/png.m.d.ts",
]
}
if (!is_android) {
definitions += [ "$root_dir/js/cr/ui/focus_without_ink.m.d.ts" ]
}
deps = [ "//third_party/polymer/v3_0:library" ]
extra_deps = [
":copy_checked_in_dts_files",
":generate_definitions",
]
}
ts_definitions("generate_definitions") {
root_dir = preprocessed_folder
out_dir = preprocessed_folder
js_files = [
"cr_components/managed_dialog/managed_dialog.js",
"cr_elements/action_link_css.m.js",
"cr_elements/cr_a11y_announcer/cr_a11y_announcer.js",
"cr_elements/cr_actionable_row_style.m.js",
"cr_elements/cr_fingerprint/cr_fingerprint_icon.m.js",
"cr_elements/cr_fingerprint/cr_fingerprint_progress_arc.m.js",
"cr_elements/cr_grid/cr_grid.js",
"cr_elements/cr_icons_css.m.js",
"cr_elements/cr_auto_img/cr_auto_img.js",
"cr_elements/cr_input/cr_input_style_css.m.js",
"cr_elements/cr_link_row/cr_link_row.js",
"cr_elements/cr_lottie/cr_lottie.m.js",
"cr_elements/cr_menu_selector/cr_menu_selector.js",
"cr_elements/cr_page_host_style_css.js",
"cr_elements/cr_profile_avatar_selector/cr_profile_avatar_selector_grid.js",
"cr_elements/cr_profile_avatar_selector/cr_profile_avatar_selector.js",
"cr_elements/cr_radio_button/cr_radio_button_style_css.m.js",
"cr_elements/cr_scrollable_behavior.m.js",
"cr_elements/cr_search_field/cr_search_field.js",
"cr_elements/cr_slider/cr_slider.js",
"cr_elements/cr_splitter/cr_splitter.js",
"cr_elements/cr_tabs/cr_tabs.js",
"cr_elements/cr_toolbar/cr_toolbar.js",
"cr_elements/cr_toolbar/cr_toolbar_selection_overlay.js",
"cr_elements/hidden_style_css.m.js",
"cr_elements/icons.m.js",
"cr_elements/md_select_css.m.js",
"cr_elements/mouse_hoverable_mixin.js",
"cr_elements/mwb_shared_style.js",
"cr_elements/mwb_shared_vars.js",
"cr_elements/policy/cr_policy_pref_behavior.m.js",
"cr_elements/policy/cr_policy_pref_indicator.m.js",
"cr_elements/search_highlight_style_css.js",
"cr_elements/shared_style_css.m.js",
"cr_elements/shared_vars_css.m.js",
"js/action_link.js",
"js/assert.m.js",
"js/color_utils.js",
"js/cr/event_target.m.js",
"js/cr.m.js",
"js/cr/ui/drag_wrapper.js",
"js/cr/ui/focus_grid.js",
"js/cr/ui/focus_outline_manager.m.js",
"js/cr/ui/focus_row.m.js",
"js/cr/ui/keyboard_shortcut_list.m.js",
"js/cr/ui/store_client.m.js",
"js/cr/ui/store.m.js",
"js/event_tracker.m.js",
"js/icon.m.js",
"js/load_time_data.m.js",
"js/parse_html_subset.m.js",
"js/plural_string_proxy.js",
"js/search_highlight_utils.js",
"js/util.m.js",
]
if (is_chromeos_ash) {
js_files += [
"cr_elements/chromeos/cros_color_overrides.m.js",
"cr_elements/chromeos/cr_picture/png.m.js",
]
}
if (!is_android) {
js_files += [ "js/cr/ui/focus_without_ink.m.js" ]
}
extra_deps = [
# Copy checked-in d.ts files first, so that |generate_definitions| leverages
# these files, instead of accidentally auto-generating them.
":copy_checked_in_dts_files",
":preprocess",
]
}