blob: 3fa013cde6df490a97bf5d8415be9d1e8af4ad7f [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("//build/config/android/rules.gni")
import("//build/config/locales.gni")
import("//weblayer/variables.gni")
template("system_webview_bundle") {
_base_target_name = get_label_info(invoker.base_module_target, "name")
_base_target_gen_dir =
get_label_info(invoker.base_module_target, "target_gen_dir")
_base_module_build_config =
"$_base_target_gen_dir/${_base_target_name}.build_config"
_rebased_base_module_build_config =
rebase_path(_base_module_build_config, root_build_dir)
_base_module_version_code =
"@FileArg($_rebased_base_module_build_config:deps_info:version_code)"
if (webview_includes_weblayer && weblayer_in_split) {
# TODO(crbug.com/1105096): If WebView starts using
# //components/module_installer, it will probably make sense to refactor
# chrome_feature_module() to be used here.
_base_module_build_config_target =
"${invoker.base_module_target}$build_config_target_suffix"
_weblayer_module_target = "${target_name}__weblayer_bundle_module"
_weblayer_module_desc = {
name = "weblayer"
module_target = ":${_weblayer_module_target}"
}
# TODO(crbug.com/1105096): This target is needed to add all WebLayer
# resources to the base module because of bugs with shared resources in
# splits.
android_resources("${_base_target_name}__all_weblayer_resources") {
recursive_resource_deps = true
deps = [ "//weblayer/browser/java" ]
if (defined(invoker.weblayer_deps)) {
deps += invoker.weblayer_deps
}
}
android_app_bundle_module(_weblayer_module_target) {
forward_variables_from(invoker,
[
"base_module_target",
"min_sdk_version",
"uncompress_shared_libraries",
])
android_manifest = "//weblayer/browser/java/AndroidManifest.xml"
# The manifest depends on the package name from the base build config.
android_manifest_dep = _base_module_build_config_target
deps = [
"//weblayer/browser/java",
_base_module_build_config_target,
]
if (defined(invoker.weblayer_deps)) {
deps += invoker.weblayer_deps
}
aapt_locale_allowlist = locales
proguard_enabled = !is_java_debug
package_name = "weblayer"
package_id = 126
version_name =
"@FileArg($_rebased_base_module_build_config:deps_info:version_name)"
version_code = _base_module_version_code
manifest_package =
"@FileArg($_rebased_base_module_build_config:deps_info:package_name)"
}
}
android_app_bundle(target_name) {
command_line_flags_file = "webview-command-line"
proguard_enabled = !is_java_debug
enable_language_splits = true
version_code = _base_module_version_code
if (webview_includes_weblayer && weblayer_in_split) {
extra_modules = [ _weblayer_module_desc ]
}
system_image_locale_allowlist = locales
is_multi_abi =
android_64bit_target_cpu && (!defined(invoker.include_64_bit_webview) ||
invoker.include_64_bit_webview) &&
(!defined(invoker.include_32_bit_webview) ||
invoker.include_32_bit_webview)
if (!defined(proguard_android_sdk_dep)) {
proguard_android_sdk_dep = webview_framework_dep
}
# NOTE: Only sign bundle for official builds since this is very slow.
if (enable_chrome_android_internal && use_signing_keys &&
is_official_build) {
sign_bundle = true
keystore_path = webview_keystore_path
keystore_name = webview_keystore_name
keystore_password = webview_keystore_password
}
forward_variables_from(invoker, "*")
}
}