| # Copyright 2020 The Chromium Authors |
| # 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("//ui/webui/resources/tools/generate_grd.gni") |
| import("//ui/webui/resources/tools/optimize_webui.gni") |
| |
| grd_prefix = "gaia_auth_host" |
| manifest_existing_files = "gaia_auth_host_existing_manifest.json" |
| |
| generate_grd("build_grd") { |
| out_grd = "$target_gen_dir/resources.grd" |
| deps = [ |
| ":build_injected_grdp", |
| ":preprocess_src", |
| ] |
| |
| # Resources are expected to be registered with paths like: |
| # gaia_auth_host/resource_name.js |
| resource_path_prefix = "gaia_auth_host" |
| |
| manifest_files = [ "$target_gen_dir/$manifest_existing_files" ] |
| |
| grdp_files = [ "$target_gen_dir/injected_resources.grdp" ] |
| } |
| |
| generate_grd("build_injected_grdp") { |
| # Resources are expected to be registered with paths like: |
| # gaia_auth_host/resource_name.js |
| resource_path_prefix = "gaia_auth_host" |
| out_grd = "$target_gen_dir/injected_resources.grdp" |
| |
| input_files_base_dir = rebase_path(target_gen_dir, root_build_dir) |
| |
| input_files = [ "saml_injected.rollup.js" ] |
| |
| deps = [ ":build_injected_scripts" ] |
| } |
| |
| # Preprocess existing files. Must preprocess directly to target_gen_dir to |
| # accommodate Closure Compiler, as a large number of external targets expect to |
| # import these files from relative paths. |
| preprocess_folder = target_gen_dir |
| preprocess_if_expr("preprocess_src") { |
| out_folder = preprocess_folder |
| out_manifest = "$target_gen_dir/$manifest_existing_files" |
| in_files = [ |
| "authenticator.js", |
| "channel.js", |
| "okta_detect_success_injected.js", |
| "password_change_authenticator.js", |
| "post_message_channel.js", |
| "scroll_helper_injected.js", |
| "safe_xml_utils.js", |
| "saml_handler.js", |
| "saml_injected.js", |
| "saml_password_attributes.js", |
| "saml_timestamps.js", |
| "saml_username_autofill.js", |
| "webview_event_manager.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/resources.grd" |
| deps = [ ":build_grd" ] |
| outputs = [ |
| "grit/gaia_auth_host_resources.h", |
| "grit/gaia_auth_host_resources_map.cc", |
| "grit/gaia_auth_host_resources_map.h", |
| "gaia_auth_host_resources.pak", |
| ] |
| output_dir = "$root_gen_dir/chrome" |
| } |
| |
| # Limit closure targets to ChromeOS, since closure is deprecated on Desktop. |
| if (is_chromeos) { |
| js_type_check("closure_compile") { |
| deps = [ |
| ":authenticator", |
| ":channel", |
| ":password_change_authenticator", |
| ":post_message_channel", |
| ":saml_handler", |
| ":saml_password_attributes", |
| ":saml_timestamps", |
| ":saml_username_autofill", |
| ":scroll_helper_injected", |
| ":webview_event_manager", |
| ] |
| } |
| |
| js_library("safe_xml_utils") { |
| sources = [ "$preprocess_folder/safe_xml_utils.js" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("channel") { |
| sources = [ "$preprocess_folder/channel.js" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("webview_event_manager") { |
| sources = [ "$preprocess_folder/webview_event_manager.js" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("post_message_channel") { |
| sources = [ "$preprocess_folder/post_message_channel.js" ] |
| deps = [ ":channel" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("saml_password_attributes") { |
| sources = [ "$preprocess_folder/saml_password_attributes.js" ] |
| deps = [ |
| ":safe_xml_utils", |
| ":saml_timestamps", |
| ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("saml_timestamps") { |
| sources = [ "$preprocess_folder/saml_timestamps.js" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("scroll_helper_injected") { |
| sources = [ "$preprocess_folder/scroll_helper_injected.js" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("saml_username_autofill") { |
| sources = [ "$preprocess_folder/scroll_helper_injected.js" ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("saml_handler") { |
| sources = [ "$preprocess_folder/saml_handler.js" ] |
| deps = [ |
| ":channel", |
| ":post_message_channel", |
| ":safe_xml_utils", |
| ":saml_password_attributes", |
| ":saml_username_autofill", |
| ":webview_event_manager", |
| "//ash/webui/common/resources:event_target", |
| ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("saml_injected") { |
| sources = [ "$preprocess_folder/saml_injected.js" ] |
| deps = [ |
| ":channel", |
| ":post_message_channel", |
| ":scroll_helper_injected", |
| ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("authenticator") { |
| sources = [ "$preprocess_folder/authenticator.js" ] |
| deps = [ |
| ":saml_handler", |
| ":saml_password_attributes", |
| "//ash/webui/common/resources:assert", |
| "//ash/webui/common/resources:cr.m", |
| "//ash/webui/common/resources:event_target", |
| "//ash/webui/common/resources:util", |
| ] |
| externs_list = [ |
| "$externs_path/chrome_extensions.js", |
| "$externs_path/chrome_send.js", |
| "$externs_path/webview_tag.js", |
| ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| |
| js_library("password_change_authenticator") { |
| sources = [ "$preprocess_folder/password_change_authenticator.js" ] |
| deps = [ |
| ":saml_handler", |
| "//ash/webui/common/resources:assert", |
| "//ash/webui/common/resources:event_target", |
| "//ash/webui/common/resources:util", |
| ] |
| externs_list = [ |
| "$externs_path/chrome_extensions.js", |
| "$externs_path/webview_tag.js", |
| ] |
| extra_deps = [ ":preprocess_src" ] |
| } |
| } |
| |
| stage_folder = "$target_gen_dir/stage" |
| |
| copy("saml_injected_copy") { |
| deps = [ ":preprocess_src" ] |
| sources = [ |
| "$preprocess_folder/channel.js", |
| "$preprocess_folder/post_message_channel.js", |
| "$preprocess_folder/saml_injected.js", |
| "$preprocess_folder/scroll_helper_injected.js", |
| ] |
| outputs = [ stage_folder + "/{{source_file_part}}" ] |
| } |
| |
| # This script is injected in webview by saml_handler.js. |
| # Consequently, it must always be rolled up by `optimize_webui()`. |
| optimize_webui("build_injected_scripts") { |
| host = "about:blank" |
| input = rebase_path(stage_folder, root_build_dir) |
| js_module_in_files = [ "saml_injected.js" ] |
| deps = [ ":saml_injected_copy" ] |
| } |