Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1255)

Unified Diff: chrome/browser/chromeos/login/oobe_localization_browsertest.cc

Issue 224093013: Allow country-specific languages in UI list at OOBE. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Support en-AU locale. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/oobe_localization_browsertest.cc
diff --git a/chrome/browser/chromeos/login/oobe_localization_browsertest.cc b/chrome/browser/chromeos/login/oobe_localization_browsertest.cc
index 7a6a64b45fcaa93536b74c06bc01a629470dce81..ba9405236d3c43b642de767fcf7718cba57684fc 100644
--- a/chrome/browser/chromeos/login/oobe_localization_browsertest.cc
+++ b/chrome/browser/chromeos/login/oobe_localization_browsertest.cc
@@ -97,12 +97,12 @@ class OobeLocalizationTest : public InProcessBrowserTest {
// Verifies that the comma-separated |values| corresponds with the first
// values in |select_id|, optionally checking for an options group label after
// the first set of options.
- void VerifyInitialOptions(const char* select_id,
+ bool VerifyInitialOptions(const char* select_id,
const char* values,
bool check_separator);
// Verifies that |value| exists in |select_id|.
- void VerifyOptionExists(const char* select_id, const char* value);
+ bool VerifyOptionExists(const char* select_id, const char* value);
// Dumps OOBE select control (language or keyboard) to string.
std::string DumpOptions(const char* select_id);
@@ -132,7 +132,7 @@ OobeLocalizationTest::~OobeLocalizationTest() {
system::StatisticsProvider::SetTestProvider(NULL);
}
-void OobeLocalizationTest::VerifyInitialOptions(const char* select_id,
+bool OobeLocalizationTest::VerifyInitialOptions(const char* select_id,
const char* values,
bool check_separator) {
const std::string expression = base::StringPrintf(
@@ -150,10 +150,12 @@ void OobeLocalizationTest::VerifyInitialOptions(const char* select_id,
" correct = select.children[values.length].tagName === 'OPTGROUP';\n"
" return correct;\n"
"})()", select_id, values, check_separator);
- ASSERT_TRUE(checker.GetBool(expression)) << expression;
+ const bool execute_status = checker.GetBool(expression);
+ EXPECT_TRUE(execute_status) << expression;
+ return execute_status;
}
-void OobeLocalizationTest::VerifyOptionExists(const char* select_id,
+bool OobeLocalizationTest::VerifyOptionExists(const char* select_id,
const char* value) {
const std::string expression = base::StringPrintf(
"(function () {\n"
@@ -166,7 +168,9 @@ void OobeLocalizationTest::VerifyOptionExists(const char* select_id,
" }\n"
" return false;\n"
"})()", select_id, value);
- ASSERT_TRUE(checker.GetBool(expression)) << expression;
+ const bool execute_status = checker.GetBool(expression);
+ EXPECT_TRUE(execute_status) << expression;
+ return execute_status;
}
std::string OobeLocalizationTest::DumpOptions(const char* select_id) {
@@ -193,6 +197,11 @@ std::string OobeLocalizationTest::DumpOptions(const char* select_id) {
" return result;\n"
" };\n"
" var result = '';\n"
+ " if (select.selectedIndex != 0) {\n"
+ " result += '(selectedIndex=' + select.selectedIndex + \n"
+ " ', selected \"' + select.options[select.selectedIndex].value +\n"
+ " '\")';\n"
+ " }\n"
" var children = select.children;\n"
" for (var i = 0; i < children.length; i++) {\n"
" if (i > 0) {\n"
@@ -212,6 +221,23 @@ std::string OobeLocalizationTest::DumpOptions(const char* select_id) {
return checker.GetString(expression);
}
+std::string TranslateXKB2Extension(const std::string& src) {
+ std::string result(src);
+ if (!extension_ime_util::UseWrappedExtensionKeyboardLayouts())
+ return result;
+ // Modifies the expected keyboard select control options for the new
+ // extension based xkb id.
+ size_t pos = 0;
+ std::string repl_old = "xkb:";
+ std::string repl_new =
+ extension_ime_util::GetInputMethodIDByKeyboardLayout("xkb:");
+ while ((pos = result.find(repl_old, pos)) != std::string::npos) {
+ result.replace(pos, repl_old.length(), repl_new);
+ pos += repl_new.length();
+ }
+ return result;
+}
+
void OobeLocalizationTest::RunLocalizationTest(
const std::string& initial_locale,
const std::string& keyboard_layout,
@@ -232,20 +258,8 @@ void OobeLocalizationTest::RunLocalizationTest(
->GetInputMethodUtil()
->InitXkbInputMethodsForTesting();
- std::string expected_keyboard_select = expected_keyboard_select_control;
- if (extension_ime_util::UseWrappedExtensionKeyboardLayouts()) {
- // Modifies the expected keyboard select control options for the new
- // extension based xkb id.
- size_t pos = 0;
- std::string repl_old = "xkb:";
- std::string repl_new =
- extension_ime_util::GetInputMethodIDByKeyboardLayout("xkb:");
- while ((pos = expected_keyboard_select.find(repl_old, pos)) !=
- std::string::npos) {
- expected_keyboard_select.replace(pos, repl_old.length(), repl_new);
- pos += repl_new.length();
- }
- }
+ const std::string expected_keyboard_select =
+ TranslateXKB2Extension(expected_keyboard_select_control);
// Bring up the OOBE network screen.
chromeos::ShowLoginWizard(chromeos::WizardController::kNetworkScreenName);
@@ -257,16 +271,25 @@ void OobeLocalizationTest::RunLocalizationTest(
chromeos::LoginDisplayHostImpl::default_host())->
GetOobeUI()->web_ui()->GetWebContents());
- VerifyInitialOptions(kLocaleSelect, expected_locale.c_str(), true);
- VerifyInitialOptions(kKeyboardSelect,
- extension_ime_util::GetInputMethodIDByKeyboardLayout(
- expected_keyboard_layout).c_str(),
- false);
+ if (!VerifyInitialOptions(kLocaleSelect, expected_locale.c_str(), true)) {
+ LOG(ERROR) << "Actual value of " << kLocaleSelect << ":\n"
+ << DumpOptions(kLocaleSelect);
+ }
+ if (!VerifyInitialOptions(
+ kKeyboardSelect,
+ TranslateXKB2Extension(expected_keyboard_layout).c_str(),
+ false)) {
+ LOG(ERROR) << "Actual value of " << kKeyboardSelect << ":\n"
+ << DumpOptions(kKeyboardSelect);
+ }
// Make sure we have a fallback keyboard.
- VerifyOptionExists(
- kKeyboardSelect,
- extension_ime_util::GetInputMethodIDByKeyboardLayout(kUSLayout).c_str());
+ if (!VerifyOptionExists(kKeyboardSelect,
+ extension_ime_util::GetInputMethodIDByKeyboardLayout(
+ kUSLayout).c_str())) {
+ LOG(ERROR) << "Actual value of " << kKeyboardSelect << ":\n"
+ << DumpOptions(kKeyboardSelect);
+ }
// Note, that sort order is locale-specific, but is unlikely to change.
// Especially for keyboard layouts.
@@ -335,4 +358,22 @@ IN_PROC_BROWSER_TEST_F(OobeLocalizationTest, NetworkScreenMultipleLocales) {
"xkb:us::eng");
}
+IN_PROC_BROWSER_TEST_F(OobeLocalizationTest, NetworkScreenRegionalLocales) {
+ // Syntetic example to test correct merging of different locales.
+ RunLocalizationTest("fr-CH,it-CH,de-CH",
+ "xkb:fr::fra,xkb:it::ita,xkb:de::ger",
+ "fr-CH,it-CH,de-CH",
+ "xkb:fr::fra",
+ "xkb:fr::fra,xkb:it::ita,xkb:de::ger,["
+ "xkb:be::fra,xkb:ca::fra,xkb:ch:fr:fra,"
+ "xkb:ca:multix:fra,xkb:us::eng"
+ "]");
+ // Another syntetic example. Check that british keyboard is available.
+ RunLocalizationTest("en-AU",
+ "xkb:us::eng",
+ "en-AU",
+ "xkb:us::eng",
+ "xkb:us::eng,[xkb:gb:extd:eng,xkb:gb:dvorak:eng]");
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698