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") { ...@@ -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") { grit("generate_components_strings") {
source = "../components/components_strings.grd" source = "../components/components_strings.grd"
deps = [
":concatenate_strings_whitelists",
]
# components_strings contains strings from all components. WebView # components_strings contains strings from all components. WebView
# will never display most of them, so we try to limit the included # will never display most of them, so we try to limit the included
# strings. This whitelist trims about 50% more than the compile-based # strings. This whitelist trims about 50% more than the compile-based
# whitelist generated by :system_webview_pak_whitelist. # whitelist generated by :system_webview_pak_whitelist.
whitelist = whitelist = rebase_path("ui/grit_strings_whitelist.txt", root_build_dir)
rebase_path("$target_gen_dir/grit_strings_whitelist.txt", root_build_dir) inputs = [
"//android_webview/ui/grit_strings_whitelist.txt",
]
grit_flags = [ grit_flags = [
"-w", "-w",
whitelist, whitelist,
......
...@@ -31,6 +31,7 @@ template("system_webview_apk_tmpl") { ...@@ -31,6 +31,7 @@ template("system_webview_apk_tmpl") {
"//android_webview/glue", "//android_webview/glue",
"//android_webview/support_library:support_lib_glue_java", "//android_webview/support_library:support_lib_glue_java",
"//base:base_java", "//base:base_java",
"//weblayer:locale_pak_assets",
] ]
target_sdk_version = android_sdk_version target_sdk_version = android_sdk_version
......
...@@ -1399,7 +1399,10 @@ if (current_toolchain == default_toolchain) { ...@@ -1399,7 +1399,10 @@ if (current_toolchain == default_toolchain) {
":${_variant}_paks", ":${_variant}_paks",
] ]
if (_is_monochrome) { if (_is_monochrome) {
deps += [ "//android_webview:locale_pak_assets" ] deps += [
"//android_webview:locale_pak_assets",
"//weblayer:locale_pak_assets",
]
} }
} }
} }
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
# found in the LICENSE file. # found in the LICENSE file.
import("//build/config/features.gni") import("//build/config/features.gni")
import("//build/config/locales.gni")
import("//build/config/sanitizers/sanitizers.gni") import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni") import("//build/config/ui.gni")
import("//build/config/win/console_app.gni") import("//build/config/win/console_app.gni")
...@@ -33,6 +34,103 @@ source_set("android_descriptors") { ...@@ -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") { jumbo_static_library("weblayer_lib") {
sources = [ sources = [
"app/content_main_delegate_impl.cc", "app/content_main_delegate_impl.cc",
......
...@@ -210,6 +210,16 @@ void ContentMainDelegateImpl::InitializeResourceBundle() { ...@@ -210,6 +210,16 @@ void ContentMainDelegateImpl::InitializeResourceBundle() {
base::PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_file_path); base::PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_file_path);
pak_file_path = pak_file_path.AppendASCII("resources.pak"); pak_file_path = pak_file_path.AppendASCII("resources.pak");
ui::LoadMainAndroidPackFile("assets/resources.pak", pak_file_path); 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 { } else {
base::i18n::SetICUDefaultLocale( base::i18n::SetICUDefaultLocale(
command_line.GetSwitchValueASCII(switches::kLang)); command_line.GetSwitchValueASCII(switches::kLang));
...@@ -223,6 +233,7 @@ void ContentMainDelegateImpl::InitializeResourceBundle() { ...@@ -223,6 +233,7 @@ void ContentMainDelegateImpl::InitializeResourceBundle() {
std::pair<int, ui::ScaleFactor> extra_paks[] = { std::pair<int, ui::ScaleFactor> extra_paks[] = {
{kWebLayerMainPakDescriptor, ui::SCALE_FACTOR_NONE}, {kWebLayerMainPakDescriptor, ui::SCALE_FACTOR_NONE},
{kWebLayerSecondaryLocalePakDescriptor, ui::SCALE_FACTOR_NONE},
{kWebLayer100PercentPakDescriptor, ui::SCALE_FACTOR_100P}}; {kWebLayer100PercentPakDescriptor, ui::SCALE_FACTOR_100P}};
for (const auto& pak_info : extra_paks) { for (const auto& pak_info : extra_paks) {
......
...@@ -15,6 +15,7 @@ enum { ...@@ -15,6 +15,7 @@ enum {
kWebLayerLocalePakDescriptor = kContentIPCDescriptorMax + 1, kWebLayerLocalePakDescriptor = kContentIPCDescriptorMax + 1,
kWebLayerMainPakDescriptor, kWebLayerMainPakDescriptor,
kWebLayer100PercentPakDescriptor, kWebLayer100PercentPakDescriptor,
kWebLayerSecondaryLocalePakDescriptor,
}; };
} // namespace weblayer } // namespace weblayer
......
...@@ -277,6 +277,12 @@ void ContentBrowserClientImpl::GetAdditionalMappedFilesForChildProcess( ...@@ -277,6 +277,12 @@ void ContentBrowserClientImpl::GetAdditionalMappedFilesForChildProcess(
fd = ui::GetLocalePackFd(&region); fd = ui::GetLocalePackFd(&region);
mappings->ShareWithRegion(kWebLayerLocalePakDescriptor, fd, region); mappings->ShareWithRegion(kWebLayerLocalePakDescriptor, fd, region);
mappings->ShareWithRegion(kWebLayerSecondaryLocalePakDescriptor,
base::GlobalDescriptors::GetInstance()->Get(
kWebLayerSecondaryLocalePakDescriptor),
base::GlobalDescriptors::GetInstance()->GetRegion(
kWebLayerSecondaryLocalePakDescriptor));
int crash_signal_fd = int crash_signal_fd =
crashpad::CrashHandlerHost::Get()->GetDeathSignalSocket(); crashpad::CrashHandlerHost::Get()->GetDeathSignalSocket();
if (crash_signal_fd >= 0) if (crash_signal_fd >= 0)
......
...@@ -154,6 +154,7 @@ android_apk("weblayer_support_apk") { ...@@ -154,6 +154,7 @@ android_apk("weblayer_support_apk") {
"//android_webview:monochrome_webview_assets", "//android_webview:monochrome_webview_assets",
"//android_webview:pak_file_assets", "//android_webview:pak_file_assets",
"//base:base_java", "//base:base_java",
"//weblayer:locale_pak_assets",
"//weblayer/browser/java", "//weblayer/browser/java",
] ]
......
...@@ -120,6 +120,7 @@ test("weblayer_browsertests") { ...@@ -120,6 +120,7 @@ test("weblayer_browsertests") {
"//testing/android/native_test:native_test_support", "//testing/android/native_test:native_test_support",
"//ui/android:android", "//ui/android:android",
"//ui/touch_selection:touch_selection", "//ui/touch_selection:touch_selection",
"//weblayer:locale_pak_assets",
# Needed for WebLayerImpl. # Needed for WebLayerImpl.
"//weblayer/browser/java", "//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