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 +++--- tests/unit/screen_ui_test.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) 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 diff --git a/tests/unit/screen_ui_test.cpp b/tests/unit/screen_ui_test.cpp index ff8a35d6c..03e23ca42 100644 --- a/tests/unit/screen_ui_test.cpp +++ b/tests/unit/screen_ui_test.cpp @@ -255,7 +255,7 @@ class ScreenRecoveryUITest : public ::testing::Test { protected: const std::string kTestLocale = "en-US"; const std::string kTestRtlLocale = "ar"; - const std::string kTestRtlLocaleWithSuffix = "ar_EG"; + const std::string kTestRtlLocaleWithSuffix = "ar-EG"; void SetUp() override { ui_ = std::make_unique(); -- cgit v1.2.3