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,25 +1634,27 @@ if (is_chrome_branded && !is_android) { ...@@ -1634,25 +1634,27 @@ if (is_chrome_branded && !is_android) {
} }
} }
chrome_paks("packed_resources") { if (!is_android) {
if (is_mac) { chrome_paks("packed_resources") {
output_dir = "$root_gen_dir/repack" if (is_mac) {
copy_data_to_bundle = true output_dir = "$root_gen_dir/repack"
} else { copy_data_to_bundle = true
output_dir = root_out_dir } else {
} output_dir = root_out_dir
}
if (enable_resource_whitelist_generation) { if (enable_resource_whitelist_generation) {
repack_whitelist = chrome_resource_whitelist repack_whitelist = chrome_resource_whitelist
deps = [ deps = [
"//chrome:resource_whitelist", "//chrome:resource_whitelist",
] ]
} }
if (is_chrome_branded && !is_mac && !is_android) { if (is_chrome_branded && !is_mac) {
public_deps = [ public_deps = [
":default_apps", ":default_apps",
] ]
}
} }
} }
......
...@@ -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,128 +1110,198 @@ if (current_toolchain == default_toolchain) { ...@@ -1148,128 +1110,198 @@ if (current_toolchain == default_toolchain) {
exception_files = jni_exception_files exception_files = jni_exception_files
} }
if (enable_resource_whitelist_generation) { # This template instantiates targets responsible for generating pak
generate_resource_whitelist("monochrome_resource_whitelist") { # resources. The generated target names are derived from input variables.
# Always use the 32-bit library's whitelist since the 64-bit one is #
# webview-only. # Variables:
if (!android_64bit_target_cpu) { # is_monochrome: If true, generate Monochrome targets rather than Chrome.
_fat_lib_toolchain = current_toolchain # is_bundle: If true, generate resources for bundles rather than APK.
} else { template("resource_packaging") {
_fat_lib_toolchain = android_secondary_abi_toolchain not_needed([ "target_name" ])
}
deps = [
":monochrome($_fat_lib_toolchain)",
]
input = get_label_info(deps[0], "root_out_dir") + _is_monochrome = invoker.is_monochrome
"/lib.unstripped/libmonochrome$shlib_extension" _is_bundle = invoker.is_bundle
output = monochrome_resource_whitelist
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 if (enable_resource_whitelist_generation) {
# resource whitelist because //android_webview: generate_webui_resources _resource_whitelist_target = "${_variant}_resource_whitelist"
# and //android_webview: generate_components_resources use hand-written _resource_whitelist_file =
# resource whitelists. "$target_gen_dir/${_variant}_resource_whitelist.txt"
action("system_webview_locale_resource_id_list") {
script = "//tools/grit/pak_util.py"
_system_webview_en_US_locale_pak = if (_is_monochrome) {
"$root_out_dir/android_webview/locales/en-US.pak" _target = "monochrome"
} else {
_target = "libchrome"
}
inputs = [ generate_resource_whitelist(_resource_whitelist_target) {
_system_webview_en_US_locale_pak, _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 = [ input = get_label_info(deps[0], "root_out_dir") +
system_webview_locale_resource_id_list, "/lib.unstripped/lib${_prefix}$shlib_extension"
] output = _resource_whitelist_file
}
deps = [ # Use custom resource ID list instead of android_webview's compiler
"//android_webview:repack_locales", # 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 = [ chrome_paks("${_variant}_paks") {
"list-id", output_dir = "$target_gen_dir/$target_name"
"--output", deps = []
rebase_path(system_webview_locale_resource_id_list, root_build_dir),
rebase_path(_system_webview_en_US_locale_pak, root_build_dir), 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") { # This target is separate from monochrome_pak_assets because it does not
script = "//tools/resources/filter_resource_whitelist.py" # 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 = [ deps = [
monochrome_resource_whitelist, ":${_variant}_paks",
system_webview_locale_resource_id_list,
] ]
}
outputs = [ # This target explicitly includes locale paks via deps.
monochrome_locale_whitelist, 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 = [ deps = [
":monochrome_resource_whitelist", ":${_variant}_locale_pak_assets",
":system_webview_locale_resource_id_list", ":${_variant}_paks",
"//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),
] ]
if (_is_monochrome) {
deps += [ "//android_webview:locale_pak_assets" ]
}
} }
} }
chrome_paks("monochrome_paks") { resource_packaging("") {
output_dir = "$target_gen_dir/$target_name" is_monochrome = false
is_bundle = false
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("") {
# This target is separate from monochrome_pak_assets because it does not is_monochrome = true
# disable compression. is_bundle = false
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",
]
} }
# This target explicitly includes locale paks via deps. # TODO(cjgrant): Remove this temporary alias after downstream renaming lands.
android_assets("monochrome_pak_assets") { java_group("chrome_public_pak_assets") {
sources = [
"$target_gen_dir/monochrome_paks/chrome_100_percent.pak",
"$target_gen_dir/monochrome_paks/resources.pak",
]
disable_compression = true
deps = [ deps = [
":monochrome_locale_pak_assets", ":chrome_apk_pak_assets",
":monochrome_paks",
"//android_webview:locale_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