Commit 3e5be326 authored by Christopher Grant's avatar Christopher Grant Committed by Commit Bot

Android: Unify pak resource generation for Chrome and Monochrome

Previously, Monochrome used its own set of GN targets to package
resources, analogous to the ones used for Chrome (some of which are the
same used for non-Android platforms).  This change moves both variants
to use matching sets of template-generated targets.

Later, when bundle-specific native libraries are added, this common
template can be reused again.

BUG=874584

Change-Id: Ia9c34cb0dfa8754207bdee146dbde47f9aca78d3
Reviewed-on: https://chromium-review.googlesource.com/c/1318418
Commit-Queue: Christopher Grant <cjgrant@chromium.org>
Reviewed-by: default avataragrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606060}
parent e2bf93de
......@@ -38,10 +38,7 @@ _java_target_whitelist = [
]
# Targets that match the whitelist but are not actually java targets.
_java_target_blacklist = [
"//chrome:packed_resources",
"*:*_unpack_aar",
]
_java_target_blacklist = [ "*:*_unpack_aar" ]
_default_proguard_jar_path = "//third_party/proguard/lib/proguard.jar"
......
......@@ -1634,25 +1634,27 @@ if (is_chrome_branded && !is_android) {
}
}
chrome_paks("packed_resources") {
if (is_mac) {
output_dir = "$root_gen_dir/repack"
copy_data_to_bundle = true
} else {
output_dir = root_out_dir
}
if (!is_android) {
chrome_paks("packed_resources") {
if (is_mac) {
output_dir = "$root_gen_dir/repack"
copy_data_to_bundle = true
} else {
output_dir = root_out_dir
}
if (enable_resource_whitelist_generation) {
repack_whitelist = chrome_resource_whitelist
deps = [
"//chrome:resource_whitelist",
]
}
if (enable_resource_whitelist_generation) {
repack_whitelist = chrome_resource_whitelist
deps = [
"//chrome:resource_whitelist",
]
}
if (is_chrome_branded && !is_mac && !is_android) {
public_deps = [
":default_apps",
]
if (is_chrome_branded && !is_mac) {
public_deps = [
":default_apps",
]
}
}
}
......
......@@ -53,15 +53,6 @@ chrome_sync_shell_jinja_variables =
app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java"
if (enable_resource_whitelist_generation) {
monochrome_resource_whitelist =
"$target_gen_dir/monochrome_resource_whitelist.txt"
system_webview_locale_resource_id_list =
"$target_gen_dir/system_webview_locale_resource_id_list.txt"
monochrome_locale_whitelist =
"$target_gen_dir/monochrome_locale_whitelist.txt"
}
# Exclude it from JNI registration if VR is not enabled.
jni_exception_files = []
if (!enable_vr) {
......@@ -964,35 +955,6 @@ java_group("chrome_public_non_pak_assets") {
}
}
android_assets("chrome_public_pak_assets") {
sources = [
"$root_out_dir/chrome_100_percent.pak",
"$root_out_dir/resources.pak",
]
disable_compression = true
deps = [
":chrome_public_locale_pak_assets",
"//chrome:packed_resources",
]
}
# This target is separate from chrome_public_pak_assets because it does not
# disable compression.
android_assets("chrome_public_locale_pak_assets") {
renaming_sources = []
renaming_destinations = []
foreach(_locale, locales - android_chrome_omitted_locales) {
renaming_sources += [ "$root_out_dir/locales/$_locale.pak" ]
renaming_destinations += [ "locales/$_locale.pak" ]
}
treat_as_locale_paks = true
deps = [
"//chrome:packed_resources",
]
}
jinja_template_resources("chrome_public_apk_template_resources") {
resources = [
"java/res_template/xml/file_paths.xml",
......@@ -1148,128 +1110,198 @@ if (current_toolchain == default_toolchain) {
exception_files = jni_exception_files
}
if (enable_resource_whitelist_generation) {
generate_resource_whitelist("monochrome_resource_whitelist") {
# Always use the 32-bit library's whitelist since the 64-bit one is
# webview-only.
if (!android_64bit_target_cpu) {
_fat_lib_toolchain = current_toolchain
} else {
_fat_lib_toolchain = android_secondary_abi_toolchain
}
deps = [
":monochrome($_fat_lib_toolchain)",
]
# This template instantiates targets responsible for generating pak
# resources. The generated target names are derived from input variables.
#
# Variables:
# is_monochrome: If true, generate Monochrome targets rather than Chrome.
# is_bundle: If true, generate resources for bundles rather than APK.
template("resource_packaging") {
not_needed([ "target_name" ])
input = get_label_info(deps[0], "root_out_dir") +
"/lib.unstripped/libmonochrome$shlib_extension"
output = monochrome_resource_whitelist
_is_monochrome = invoker.is_monochrome
_is_bundle = invoker.is_bundle
if (_is_monochrome) {
_prefix = "monochrome"
} else {
_prefix = "chrome"
}
if (_is_bundle) {
_output_type = "bundle"
} else {
_output_type = "apk"
}
_variant = "${_prefix}_${_output_type}"
# Use custom resource ID list instead of android_webview's compiler
# resource whitelist because //android_webview: generate_webui_resources
# and //android_webview: generate_components_resources use hand-written
# resource whitelists.
action("system_webview_locale_resource_id_list") {
script = "//tools/grit/pak_util.py"
if (enable_resource_whitelist_generation) {
_resource_whitelist_target = "${_variant}_resource_whitelist"
_resource_whitelist_file =
"$target_gen_dir/${_variant}_resource_whitelist.txt"
_system_webview_en_US_locale_pak =
"$root_out_dir/android_webview/locales/en-US.pak"
if (_is_monochrome) {
_target = "monochrome"
} else {
_target = "libchrome"
}
inputs = [
_system_webview_en_US_locale_pak,
]
generate_resource_whitelist(_resource_whitelist_target) {
_fat_lib_toolchain = ""
if (_is_monochrome) {
# Always use the 32-bit library's whitelist since the 64-bit one is
# webview-only.
if (!android_64bit_target_cpu) {
_fat_lib_toolchain = current_toolchain
} else {
_fat_lib_toolchain = android_secondary_abi_toolchain
}
}
deps = [
":${_target}($_fat_lib_toolchain)",
]
outputs = [
system_webview_locale_resource_id_list,
]
input = get_label_info(deps[0], "root_out_dir") +
"/lib.unstripped/lib${_prefix}$shlib_extension"
output = _resource_whitelist_file
}
deps = [
"//android_webview:repack_locales",
]
# Use custom resource ID list instead of android_webview's compiler
# resource whitelist because //android_webview:generate_webui_resources
# and //android_webview:generate_components_resources use hand-written
# resource whitelists.
if (_is_monochrome) {
_locale_whitelist_target = "${_variant}_locale_whitelist"
_locale_whitelist_file =
"$target_gen_dir/${_variant}_locale_whitelist.txt"
_system_webview_locale_resource_id_list =
"$target_gen_dir/system_webview_locale_resource_id_list.txt"
action("system_webview_locale_resource_id_list") {
script = "//tools/grit/pak_util.py"
_system_webview_en_US_locale_pak =
"$root_out_dir/android_webview/locales/en-US.pak"
inputs = [
_system_webview_en_US_locale_pak,
]
outputs = [
_system_webview_locale_resource_id_list,
]
deps = [
"//android_webview:repack_locales",
]
args = [
"list-id",
"--output",
rebase_path(_system_webview_locale_resource_id_list,
root_build_dir),
rebase_path(_system_webview_en_US_locale_pak, root_build_dir),
]
}
action(_locale_whitelist_target) {
script = "//tools/resources/filter_resource_whitelist.py"
inputs = [
_resource_whitelist_file,
_system_webview_locale_resource_id_list,
]
outputs = [
_locale_whitelist_file,
]
deps = [
":${_resource_whitelist_target}",
":system_webview_locale_resource_id_list",
"//android_webview:system_webview_pak_whitelist",
]
args = [
"--input",
rebase_path(_resource_whitelist_file, root_build_dir),
"--filter",
rebase_path(_system_webview_locale_resource_id_list,
root_build_dir),
"--output",
rebase_path(_locale_whitelist_file, root_build_dir),
]
}
}
}
args = [
"list-id",
"--output",
rebase_path(system_webview_locale_resource_id_list, root_build_dir),
rebase_path(_system_webview_en_US_locale_pak, root_build_dir),
]
chrome_paks("${_variant}_paks") {
output_dir = "$target_gen_dir/$target_name"
deps = []
if (_is_monochrome) {
additional_extra_paks =
[ "$root_gen_dir/android_webview/aw_resources.pak" ]
deps += [ "//android_webview:generate_aw_resources" ]
}
if (enable_resource_whitelist_generation) {
repack_whitelist = _resource_whitelist_file
deps += [ ":${_resource_whitelist_target}" ]
if (_is_monochrome) {
locale_whitelist = _locale_whitelist_file
deps += [ ":${_variant}_locale_whitelist" ]
}
}
}
action("monochrome_locale_whitelist") {
script = "//tools/resources/filter_resource_whitelist.py"
# This target is separate from monochrome_pak_assets because it does not
# disable compression.
android_assets("${_variant}_locale_pak_assets") {
renaming_sources = []
renaming_destinations = []
foreach(_locale, locales - android_chrome_omitted_locales) {
renaming_sources +=
[ "$target_gen_dir/${_variant}_paks/locales/$_locale.pak" ]
renaming_destinations += [ "locales/$_locale.pak" ]
}
treat_as_locale_paks = true
inputs = [
monochrome_resource_whitelist,
system_webview_locale_resource_id_list,
deps = [
":${_variant}_paks",
]
}
outputs = [
monochrome_locale_whitelist,
# This target explicitly includes locale paks via deps.
android_assets("${_variant}_pak_assets") {
sources = [
"$target_gen_dir/${_variant}_paks/chrome_100_percent.pak",
"$target_gen_dir/${_variant}_paks/resources.pak",
]
disable_compression = true
deps = [
":monochrome_resource_whitelist",
":system_webview_locale_resource_id_list",
"//android_webview:system_webview_pak_whitelist",
]
args = [
"--input",
rebase_path(monochrome_resource_whitelist, root_build_dir),
"--filter",
rebase_path(system_webview_locale_resource_id_list, root_build_dir),
"--output",
rebase_path(monochrome_locale_whitelist, root_build_dir),
":${_variant}_locale_pak_assets",
":${_variant}_paks",
]
if (_is_monochrome) {
deps += [ "//android_webview:locale_pak_assets" ]
}
}
}
chrome_paks("monochrome_paks") {
output_dir = "$target_gen_dir/$target_name"
additional_extra_paks = [ "$root_gen_dir/android_webview/aw_resources.pak" ]
deps = [
"//android_webview:generate_aw_resources",
]
if (enable_resource_whitelist_generation) {
repack_whitelist = monochrome_resource_whitelist
deps += [ ":monochrome_resource_whitelist" ]
locale_whitelist = monochrome_locale_whitelist
deps += [ ":monochrome_locale_whitelist" ]
}
resource_packaging("") {
is_monochrome = false
is_bundle = false
}
# This target is separate from monochrome_pak_assets because it does not
# disable compression.
android_assets("monochrome_locale_pak_assets") {
renaming_sources = []
renaming_destinations = []
foreach(_locale, locales - android_chrome_omitted_locales) {
renaming_sources +=
[ "$target_gen_dir/monochrome_paks/locales/$_locale.pak" ]
renaming_destinations += [ "locales/$_locale.pak" ]
}
treat_as_locale_paks = true
deps = [
":monochrome_paks",
]
resource_packaging("") {
is_monochrome = true
is_bundle = false
}
# This target explicitly includes locale paks via deps.
android_assets("monochrome_pak_assets") {
sources = [
"$target_gen_dir/monochrome_paks/chrome_100_percent.pak",
"$target_gen_dir/monochrome_paks/resources.pak",
]
disable_compression = true
# TODO(cjgrant): Remove this temporary alias after downstream renaming lands.
java_group("chrome_public_pak_assets") {
deps = [
":monochrome_locale_pak_assets",
":monochrome_paks",
"//android_webview:locale_pak_assets",
":chrome_apk_pak_assets",
]
}
} # current_toolchain == host_toolchain
......@@ -1382,7 +1414,7 @@ _chrome_public_and_sync_shell_shared_deps = [
":chrome_public_apk_resources",
":chrome_public_base_module_java",
":chrome_public_non_pak_assets",
":chrome_public_pak_assets",
":chrome_apk_pak_assets",
]
generate_jni("test_support_jni_headers") {
......
......@@ -264,7 +264,7 @@ template("monochrome_public_common_apk_or_module_tmpl") {
"//android_webview/apk:webview_license_activity_java",
"//android_webview/glue",
"//chrome/android:chrome_public_non_pak_assets",
"//chrome/android:monochrome_pak_assets",
"//chrome/android:monochrome_apk_pak_assets",
"//chrome/android/monochrome:monochrome_license_provider_java",
]
......
......@@ -4145,10 +4145,14 @@ test("unit_tests") {
}
if (!is_mac) {
deps += [
"//chrome:packed_resources",
"//chrome/tools/convert_dict:lib",
"//third_party/hunspell",
]
if (is_android) {
deps += [ "//chrome/android:chrome_apk_paks" ]
} else {
deps += [ "//chrome:packed_resources" ]
}
}
if (is_win || is_mac || is_chromeos) {
sources += [ "../browser/extensions/api/networking_private/networking_private_crypto_unittest.cc" ]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment