0

Reland "Android: Unify pak resource generation for Chrome and Monochrome"

This is a reland of 3e5be32695

The source location of pak resources collected for tests has been
updated to match the new location.

TBR=agrieve@chromium.org

Original change's description:
> 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: agrieve <agrieve@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#606060}

Bug: 874584
Change-Id: Ifa3b02a3f87d757435d125eb0c5a15f01d5ca6e1
Reviewed-on: https://chromium-review.googlesource.com/c/1324412
Reviewed-by: Christopher Grant <cjgrant@chromium.org>
Reviewed-by: Eric Stevenson <estevenson@chromium.org>
Commit-Queue: Christopher Grant <cjgrant@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606462}
This commit is contained in:
Christopher Grant
2018-11-08 14:54:51 +00:00
committed by Commit Bot
parent 92e9a03d08
commit 212fdaabfb
5 changed files with 218 additions and 178 deletions

@ -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",
]
}
}
}

@ -48,15 +48,6 @@ trichrome_chrome_android_manifest =
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) {
@ -950,35 +941,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",
@ -1138,128 +1100,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"
}
# 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"
_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),
]
if (_is_bundle) {
_output_type = "bundle"
} else {
_output_type = "apk"
}
action("monochrome_locale_whitelist") {
script = "//tools/resources/filter_resource_whitelist.py"
inputs = [
monochrome_resource_whitelist,
system_webview_locale_resource_id_list,
]
outputs = [
monochrome_locale_whitelist,
]
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),
]
}
}
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",
]
_variant = "${_prefix}_${_output_type}"
if (enable_resource_whitelist_generation) {
repack_whitelist = monochrome_resource_whitelist
deps += [ ":monochrome_resource_whitelist" ]
locale_whitelist = monochrome_locale_whitelist
deps += [ ":monochrome_locale_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
# 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)",
]
input = get_label_info(deps[0], "root_out_dir") +
"/lib.unstripped/lib${_prefix}$shlib_extension"
output = _resource_whitelist_file
}
# 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),
]
}
}
}
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" ]
}
}
}
# 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
deps = [
":${_variant}_paks",
]
}
# 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 = [
":${_variant}_locale_pak_assets",
":${_variant}_paks",
]
if (_is_monochrome) {
deps += [ "//android_webview:locale_pak_assets" ]
}
}
}
# 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 = false
is_bundle = false
}
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
@ -1329,7 +1361,7 @@ _chrome_public_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") {

@ -265,7 +265,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",
]

@ -2827,15 +2827,20 @@ test("unit_tests") {
"//third_party/zlib/google/test/data/",
"//tools/metrics/histograms/enums.xml",
]
if (is_android || is_linux || is_win) {
if (is_android) {
data += [
"$root_out_dir/chrome_100_percent.pak",
"$root_out_dir/locales/en-US.pak",
"$root_out_dir/resources.pak",
"$root_gen_dir/chrome/android/chrome_apk_paks/chrome_100_percent.pak",
"$root_gen_dir/chrome/android/chrome_apk_paks/locales/en-US.pak",
"$root_gen_dir/chrome/android/chrome_apk_paks/resources.pak",
]
}
if (is_linux || is_win) {
data += [ "$root_out_dir/chrome_200_percent.pak" ]
data += [
"$root_out_dir/chrome_100_percent.pak",
"$root_out_dir/chrome_200_percent.pak",
"$root_out_dir/locales/en-US.pak",
"$root_out_dir/resources.pak",
]
}
if (is_win) {
data_deps += [ "//chrome" ]
@ -4145,10 +4150,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" ]