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 = [ ...@@ -38,10 +38,7 @@ _java_target_whitelist = [
] ]
# Targets that match the whitelist but are not actually java targets. # Targets that match the whitelist but are not actually java targets.
_java_target_blacklist = [ _java_target_blacklist = [ "*:*_unpack_aar" ]
"//chrome:packed_resources",
"*:*_unpack_aar",
]
_default_proguard_jar_path = "//third_party/proguard/lib/proguard.jar" _default_proguard_jar_path = "//third_party/proguard/lib/proguard.jar"
......
...@@ -1634,7 +1634,8 @@ if (is_chrome_branded && !is_android) { ...@@ -1634,7 +1634,8 @@ if (is_chrome_branded && !is_android) {
} }
} }
chrome_paks("packed_resources") { if (!is_android) {
chrome_paks("packed_resources") {
if (is_mac) { if (is_mac) {
output_dir = "$root_gen_dir/repack" output_dir = "$root_gen_dir/repack"
copy_data_to_bundle = true copy_data_to_bundle = true
...@@ -1649,11 +1650,12 @@ chrome_paks("packed_resources") { ...@@ -1649,11 +1650,12 @@ chrome_paks("packed_resources") {
] ]
} }
if (is_chrome_branded && !is_mac && !is_android) { if (is_chrome_branded && !is_mac) {
public_deps = [ public_deps = [
":default_apps", ":default_apps",
] ]
} }
}
} }
repack("browser_tests_pak") { repack("browser_tests_pak") {
......
...@@ -53,15 +53,6 @@ chrome_sync_shell_jinja_variables = ...@@ -53,15 +53,6 @@ chrome_sync_shell_jinja_variables =
app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java" 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. # Exclude it from JNI registration if VR is not enabled.
jni_exception_files = [] jni_exception_files = []
if (!enable_vr) { if (!enable_vr) {
...@@ -964,35 +955,6 @@ java_group("chrome_public_non_pak_assets") { ...@@ -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") { jinja_template_resources("chrome_public_apk_template_resources") {
resources = [ resources = [
"java/res_template/xml/file_paths.xml", "java/res_template/xml/file_paths.xml",
...@@ -1148,8 +1110,44 @@ if (current_toolchain == default_toolchain) { ...@@ -1148,8 +1110,44 @@ if (current_toolchain == default_toolchain) {
exception_files = jni_exception_files exception_files = jni_exception_files
} }
# 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" ])
_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}"
if (enable_resource_whitelist_generation) { if (enable_resource_whitelist_generation) {
generate_resource_whitelist("monochrome_resource_whitelist") { _resource_whitelist_target = "${_variant}_resource_whitelist"
_resource_whitelist_file =
"$target_gen_dir/${_variant}_resource_whitelist.txt"
if (_is_monochrome) {
_target = "monochrome"
} else {
_target = "libchrome"
}
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 # Always use the 32-bit library's whitelist since the 64-bit one is
# webview-only. # webview-only.
if (!android_64bit_target_cpu) { if (!android_64bit_target_cpu) {
...@@ -1157,19 +1155,27 @@ if (current_toolchain == default_toolchain) { ...@@ -1157,19 +1155,27 @@ if (current_toolchain == default_toolchain) {
} else { } else {
_fat_lib_toolchain = android_secondary_abi_toolchain _fat_lib_toolchain = android_secondary_abi_toolchain
} }
}
deps = [ deps = [
":monochrome($_fat_lib_toolchain)", ":${_target}($_fat_lib_toolchain)",
] ]
input = get_label_info(deps[0], "root_out_dir") + input = get_label_info(deps[0], "root_out_dir") +
"/lib.unstripped/libmonochrome$shlib_extension" "/lib.unstripped/lib${_prefix}$shlib_extension"
output = monochrome_resource_whitelist output = _resource_whitelist_file
} }
# Use custom resource ID list instead of android_webview's compiler # Use custom resource ID list instead of android_webview's compiler
# resource whitelist because //android_webview: generate_webui_resources # resource whitelist because //android_webview:generate_webui_resources
# and //android_webview: generate_components_resources use hand-written # and //android_webview:generate_components_resources use hand-written
# resource whitelists. # 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") { action("system_webview_locale_resource_id_list") {
script = "//tools/grit/pak_util.py" script = "//tools/grit/pak_util.py"
...@@ -1181,7 +1187,7 @@ if (current_toolchain == default_toolchain) { ...@@ -1181,7 +1187,7 @@ if (current_toolchain == default_toolchain) {
] ]
outputs = [ outputs = [
system_webview_locale_resource_id_list, _system_webview_locale_resource_id_list,
] ]
deps = [ deps = [
...@@ -1191,85 +1197,111 @@ if (current_toolchain == default_toolchain) { ...@@ -1191,85 +1197,111 @@ if (current_toolchain == default_toolchain) {
args = [ args = [
"list-id", "list-id",
"--output", "--output",
rebase_path(system_webview_locale_resource_id_list, root_build_dir), rebase_path(_system_webview_locale_resource_id_list,
root_build_dir),
rebase_path(_system_webview_en_US_locale_pak, root_build_dir), rebase_path(_system_webview_en_US_locale_pak, root_build_dir),
] ]
} }
action("monochrome_locale_whitelist") { action(_locale_whitelist_target) {
script = "//tools/resources/filter_resource_whitelist.py" script = "//tools/resources/filter_resource_whitelist.py"
inputs = [ inputs = [
monochrome_resource_whitelist, _resource_whitelist_file,
system_webview_locale_resource_id_list, _system_webview_locale_resource_id_list,
] ]
outputs = [ outputs = [
monochrome_locale_whitelist, _locale_whitelist_file,
] ]
deps = [ deps = [
":monochrome_resource_whitelist", ":${_resource_whitelist_target}",
":system_webview_locale_resource_id_list", ":system_webview_locale_resource_id_list",
"//android_webview:system_webview_pak_whitelist", "//android_webview:system_webview_pak_whitelist",
] ]
args = [ args = [
"--input", "--input",
rebase_path(monochrome_resource_whitelist, root_build_dir), rebase_path(_resource_whitelist_file, root_build_dir),
"--filter", "--filter",
rebase_path(system_webview_locale_resource_id_list, root_build_dir), rebase_path(_system_webview_locale_resource_id_list,
root_build_dir),
"--output", "--output",
rebase_path(monochrome_locale_whitelist, root_build_dir), rebase_path(_locale_whitelist_file, root_build_dir),
] ]
} }
} }
}
chrome_paks("monochrome_paks") { chrome_paks("${_variant}_paks") {
output_dir = "$target_gen_dir/$target_name" output_dir = "$target_gen_dir/$target_name"
deps = []
additional_extra_paks = [ "$root_gen_dir/android_webview/aw_resources.pak" ] if (_is_monochrome) {
deps = [ additional_extra_paks =
"//android_webview:generate_aw_resources", [ "$root_gen_dir/android_webview/aw_resources.pak" ]
] deps += [ "//android_webview:generate_aw_resources" ]
}
if (enable_resource_whitelist_generation) { if (enable_resource_whitelist_generation) {
repack_whitelist = monochrome_resource_whitelist repack_whitelist = _resource_whitelist_file
deps += [ ":monochrome_resource_whitelist" ] deps += [ ":${_resource_whitelist_target}" ]
locale_whitelist = monochrome_locale_whitelist if (_is_monochrome) {
deps += [ ":monochrome_locale_whitelist" ] locale_whitelist = _locale_whitelist_file
deps += [ ":${_variant}_locale_whitelist" ]
}
} }
} }
# This target is separate from monochrome_pak_assets because it does not # This target is separate from monochrome_pak_assets because it does not
# disable compression. # disable compression.
android_assets("monochrome_locale_pak_assets") { android_assets("${_variant}_locale_pak_assets") {
renaming_sources = [] renaming_sources = []
renaming_destinations = [] renaming_destinations = []
foreach(_locale, locales - android_chrome_omitted_locales) { foreach(_locale, locales - android_chrome_omitted_locales) {
renaming_sources += renaming_sources +=
[ "$target_gen_dir/monochrome_paks/locales/$_locale.pak" ] [ "$target_gen_dir/${_variant}_paks/locales/$_locale.pak" ]
renaming_destinations += [ "locales/$_locale.pak" ] renaming_destinations += [ "locales/$_locale.pak" ]
} }
treat_as_locale_paks = true treat_as_locale_paks = true
deps = [ deps = [
":monochrome_paks", ":${_variant}_paks",
] ]
} }
# This target explicitly includes locale paks via deps. # This target explicitly includes locale paks via deps.
android_assets("monochrome_pak_assets") { android_assets("${_variant}_pak_assets") {
sources = [ sources = [
"$target_gen_dir/monochrome_paks/chrome_100_percent.pak", "$target_gen_dir/${_variant}_paks/chrome_100_percent.pak",
"$target_gen_dir/monochrome_paks/resources.pak", "$target_gen_dir/${_variant}_paks/resources.pak",
] ]
disable_compression = true disable_compression = true
deps = [ deps = [
":monochrome_locale_pak_assets", ":${_variant}_locale_pak_assets",
":monochrome_paks", ":${_variant}_paks",
"//android_webview:locale_pak_assets", ]
if (_is_monochrome) {
deps += [ "//android_webview:locale_pak_assets" ]
}
}
}
resource_packaging("") {
is_monochrome = false
is_bundle = false
}
resource_packaging("") {
is_monochrome = true
is_bundle = false
}
# TODO(cjgrant): Remove this temporary alias after downstream renaming lands.
java_group("chrome_public_pak_assets") {
deps = [
":chrome_apk_pak_assets",
] ]
} }
} # current_toolchain == host_toolchain } # current_toolchain == host_toolchain
...@@ -1382,7 +1414,7 @@ _chrome_public_and_sync_shell_shared_deps = [ ...@@ -1382,7 +1414,7 @@ _chrome_public_and_sync_shell_shared_deps = [
":chrome_public_apk_resources", ":chrome_public_apk_resources",
":chrome_public_base_module_java", ":chrome_public_base_module_java",
":chrome_public_non_pak_assets", ":chrome_public_non_pak_assets",
":chrome_public_pak_assets", ":chrome_apk_pak_assets",
] ]
generate_jni("test_support_jni_headers") { generate_jni("test_support_jni_headers") {
......
...@@ -264,7 +264,7 @@ template("monochrome_public_common_apk_or_module_tmpl") { ...@@ -264,7 +264,7 @@ template("monochrome_public_common_apk_or_module_tmpl") {
"//android_webview/apk:webview_license_activity_java", "//android_webview/apk:webview_license_activity_java",
"//android_webview/glue", "//android_webview/glue",
"//chrome/android:chrome_public_non_pak_assets", "//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", "//chrome/android/monochrome:monochrome_license_provider_java",
] ]
......
...@@ -4145,10 +4145,14 @@ test("unit_tests") { ...@@ -4145,10 +4145,14 @@ test("unit_tests") {
} }
if (!is_mac) { if (!is_mac) {
deps += [ deps += [
"//chrome:packed_resources",
"//chrome/tools/convert_dict:lib", "//chrome/tools/convert_dict:lib",
"//third_party/hunspell", "//third_party/hunspell",
] ]
if (is_android) {
deps += [ "//chrome/android:chrome_apk_paks" ]
} else {
deps += [ "//chrome:packed_resources" ]
}
} }
if (is_win || is_mac || is_chromeos) { if (is_win || is_mac || is_chromeos) {
sources += [ "../browser/extensions/api/networking_private/networking_private_crypto_unittest.cc" ] 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