Commit c75c5d25 authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

[WebLayer] Only use english translations of component strings

This splits the webview and weblayer component strings into separate
paks, so that weblayer can include english only translations of the
necessary strings.

Bug: 1021257
Change-Id: I636586b29cdf2564cd6e7bbd5c72feeb965ce3eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1912654
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714709}
parent 8e6dc7b9
......@@ -314,33 +314,17 @@ grit("generate_components_resources") {
]
}
action("concatenate_strings_whitelists") {
script = "//mojo/public/tools/bindings/concatenate-files.py"
inputs = [
"//android_webview/ui/grit_strings_whitelist.txt",
"//weblayer/grit_strings_whitelist.txt",
]
outputs = [
"$target_gen_dir/grit_strings_whitelist.txt",
]
args =
rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
}
grit("generate_components_strings") {
source = "../components/components_strings.grd"
deps = [
":concatenate_strings_whitelists",
]
# components_strings contains strings from all components. WebView
# will never display most of them, so we try to limit the included
# strings. This whitelist trims about 50% more than the compile-based
# whitelist generated by :system_webview_pak_whitelist.
whitelist =
rebase_path("$target_gen_dir/grit_strings_whitelist.txt", root_build_dir)
whitelist = rebase_path("ui/grit_strings_whitelist.txt", root_build_dir)
inputs = [
"//android_webview/ui/grit_strings_whitelist.txt",
]
grit_flags = [
"-w",
whitelist,
......
......@@ -31,6 +31,7 @@ template("system_webview_apk_tmpl") {
"//android_webview/glue",
"//android_webview/support_library:support_lib_glue_java",
"//base:base_java",
"//weblayer:locale_pak_assets",
]
target_sdk_version = android_sdk_version
......
......@@ -1399,7 +1399,10 @@ if (current_toolchain == default_toolchain) {
":${_variant}_paks",
]
if (_is_monochrome) {
deps += [ "//android_webview:locale_pak_assets" ]
deps += [
"//android_webview:locale_pak_assets",
"//weblayer:locale_pak_assets",
]
}
}
}
......
......@@ -3,6 +3,7 @@
# found in the LICENSE file.
import("//build/config/features.gni")
import("//build/config/locales.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni")
import("//build/config/win/console_app.gni")
......@@ -33,6 +34,103 @@ source_set("android_descriptors") {
]
}
if (is_android) {
grit("generate_components_strings") {
source = "../components/components_strings.grd"
# components_strings contains strings from all components. WebLayer
# will never display most of them, so we try to limit the included
# strings.
whitelist = rebase_path("grit_strings_whitelist.txt", root_build_dir)
inputs = [
"//weblayer/grit_strings_whitelist.txt",
]
grit_flags = [
"-w",
whitelist,
]
outputs = [
"grit/components_strings.h",
"java/res/values-am/components_strings.xml",
"java/res/values-ar/components_strings.xml",
"java/res/values-bg/components_strings.xml",
"java/res/values-bn/components_strings.xml",
"java/res/values-ca/components_strings.xml",
"java/res/values-cs/components_strings.xml",
"java/res/values-da/components_strings.xml",
"java/res/values-de/components_strings.xml",
"java/res/values-el/components_strings.xml",
"java/res/values-en-rGB/components_strings.xml",
"java/res/values-es/components_strings.xml",
"java/res/values-es-rUS/components_strings.xml",
"java/res/values-et/components_strings.xml",
"java/res/values-fa/components_strings.xml",
"java/res/values-fi/components_strings.xml",
"java/res/values-fr/components_strings.xml",
"java/res/values-gu/components_strings.xml",
"java/res/values-hi/components_strings.xml",
"java/res/values-hr/components_strings.xml",
"java/res/values-hu/components_strings.xml",
"java/res/values-in/components_strings.xml",
"java/res/values-it/components_strings.xml",
"java/res/values-iw/components_strings.xml",
"java/res/values-ja/components_strings.xml",
"java/res/values-kn/components_strings.xml",
"java/res/values-ko/components_strings.xml",
"java/res/values-lt/components_strings.xml",
"java/res/values-lv/components_strings.xml",
"java/res/values-ml/components_strings.xml",
"java/res/values-mr/components_strings.xml",
"java/res/values-ms/components_strings.xml",
"java/res/values-nb/components_strings.xml",
"java/res/values-nl/components_strings.xml",
"java/res/values-pl/components_strings.xml",
"java/res/values-pt-rBR/components_strings.xml",
"java/res/values-pt-rPT/components_strings.xml",
"java/res/values-ro/components_strings.xml",
"java/res/values-ru/components_strings.xml",
"java/res/values-sk/components_strings.xml",
"java/res/values-sl/components_strings.xml",
"java/res/values-sr/components_strings.xml",
"java/res/values-sv/components_strings.xml",
"java/res/values-sw/components_strings.xml",
"java/res/values-ta/components_strings.xml",
"java/res/values-te/components_strings.xml",
"java/res/values-th/components_strings.xml",
"java/res/values-tl/components_strings.xml",
"java/res/values-tr/components_strings.xml",
"java/res/values-uk/components_strings.xml",
"java/res/values-vi/components_strings.xml",
"java/res/values-zh-rCN/components_strings.xml",
"java/res/values-zh-rTW/components_strings.xml",
"java/res/values/components_strings.xml",
]
foreach(_locale, locales_with_fake_bidi) {
outputs += [ "components_strings_${_locale}.pak" ]
}
}
repack("weblayer_locales") {
sources = [
"${root_gen_dir}/weblayer/components_strings_en-US.pak",
]
deps = [
":generate_components_strings",
]
output = "$root_out_dir/weblayer/locales/en-US.pak"
}
android_assets("locale_pak_assets") {
disable_compression = true
renaming_sources = [ "$root_out_dir/weblayer/locales/en-US.pak" ]
renaming_destinations = [ "stored-locales/weblayer/en-US.pak" ]
treat_as_locale_paks = true
deps = [
":weblayer_locales",
]
}
}
jumbo_static_library("weblayer_lib") {
sources = [
"app/content_main_delegate_impl.cc",
......
......@@ -210,6 +210,16 @@ void ContentMainDelegateImpl::InitializeResourceBundle() {
base::PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_file_path);
pak_file_path = pak_file_path.AppendASCII("resources.pak");
ui::LoadMainAndroidPackFile("assets/resources.pak", pak_file_path);
constexpr char kWebLayerLocalePath[] =
"assets/stored-locales/weblayer/en-US.pak";
base::MemoryMappedFile::Region region;
int fd = base::android::OpenApkAsset(kWebLayerLocalePath, &region);
CHECK_GE(fd, 0) << "Could not find " << kWebLayerLocalePath << " in APK.";
ui::ResourceBundle::GetSharedInstance().AddDataPackFromFileRegion(
base::File(fd), region, ui::SCALE_FACTOR_NONE);
base::GlobalDescriptors::GetInstance()->Set(
kWebLayerSecondaryLocalePakDescriptor, fd, region);
} else {
base::i18n::SetICUDefaultLocale(
command_line.GetSwitchValueASCII(switches::kLang));
......@@ -223,6 +233,7 @@ void ContentMainDelegateImpl::InitializeResourceBundle() {
std::pair<int, ui::ScaleFactor> extra_paks[] = {
{kWebLayerMainPakDescriptor, ui::SCALE_FACTOR_NONE},
{kWebLayerSecondaryLocalePakDescriptor, ui::SCALE_FACTOR_NONE},
{kWebLayer100PercentPakDescriptor, ui::SCALE_FACTOR_100P}};
for (const auto& pak_info : extra_paks) {
......
......@@ -15,6 +15,7 @@ enum {
kWebLayerLocalePakDescriptor = kContentIPCDescriptorMax + 1,
kWebLayerMainPakDescriptor,
kWebLayer100PercentPakDescriptor,
kWebLayerSecondaryLocalePakDescriptor,
};
} // namespace weblayer
......
......@@ -277,6 +277,12 @@ void ContentBrowserClientImpl::GetAdditionalMappedFilesForChildProcess(
fd = ui::GetLocalePackFd(&region);
mappings->ShareWithRegion(kWebLayerLocalePakDescriptor, fd, region);
mappings->ShareWithRegion(kWebLayerSecondaryLocalePakDescriptor,
base::GlobalDescriptors::GetInstance()->Get(
kWebLayerSecondaryLocalePakDescriptor),
base::GlobalDescriptors::GetInstance()->GetRegion(
kWebLayerSecondaryLocalePakDescriptor));
int crash_signal_fd =
crashpad::CrashHandlerHost::Get()->GetDeathSignalSocket();
if (crash_signal_fd >= 0)
......
......@@ -154,6 +154,7 @@ android_apk("weblayer_support_apk") {
"//android_webview:monochrome_webview_assets",
"//android_webview:pak_file_assets",
"//base:base_java",
"//weblayer:locale_pak_assets",
"//weblayer/browser/java",
]
......
......@@ -120,6 +120,7 @@ test("weblayer_browsertests") {
"//testing/android/native_test:native_test_support",
"//ui/android:android",
"//ui/touch_selection:touch_selection",
"//weblayer:locale_pak_assets",
# Needed for WebLayerImpl.
"//weblayer/browser/java",
......
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