From 347a659d9b9d262b8c815cbfeae8319c0d246374 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 8 May 2018 15:58:29 -0700 Subject: screen_ui: Fix an issue in RTL locale detection. The CL in [1] moved android.os.RecoverySystem to send the locale argument in well-formed BCP 47 language tags (e.g. "en-US" instead of "en_US"), with the matching changes to recovery code in [2]. However, the one in ScreenRecoveryUI::SetLocale() was missed, which broke RTL locale detection when using new format. [1] commit 38715228 in platform/frameworks/base [2] commit 2078b22e in platform/bootable/recovery Test: Set the locale to "ar-EG". `Run graphics test` under recovery. Check the progress bar. Test: Run recovery_unit_test on marlin. Change-Id: I7c7f5e0725bfb096109c7192c19f3f008e8e47e3 --- screen_ui.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'screen_ui.cpp') diff --git a/screen_ui.cpp b/screen_ui.cpp index 9198073df..2a8d7f9eb 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -1099,9 +1099,9 @@ void ScreenRecoveryUI::SetLocale(const std::string& new_locale) { rtl_locale_ = false; if (!new_locale.empty()) { - size_t underscore = new_locale.find('_'); - // lang has the language prefix prior to '_', or full string if '_' doesn't exist. - std::string lang = new_locale.substr(0, underscore); + size_t separator = new_locale.find('-'); + // lang has the language prefix prior to the separator, or full string if none exists. + std::string lang = new_locale.substr(0, separator); // A bit cheesy: keep an explicit list of supported RTL languages. if (lang == "ar" || // Arabic -- cgit v1.2.3