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

Unified Diff: chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc

Issue 178343005: [IME] migrate the xkb ID to extension based xkb ID. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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/input_method/input_method_manager_impl_unittest.cc
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
index 4eed0cb7352423a3aa916eb283a9d743e7204d07..7fb81c48ab59e28b02ca289e73374f1047c32cac 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
@@ -51,6 +51,10 @@ bool Contain(const InputMethodDescriptors& descriptors,
return false;
}
+std::string XkbId(const std::string& id) {
+ return extension_ime_util::GetInputMethodIDByKeyboardLayout(id);
+}
+
class InputMethodManagerImplTest : public testing::Test {
public:
InputMethodManagerImplTest()
@@ -78,6 +82,83 @@ class InputMethodManagerImplTest : public testing::Test {
ime_list_.clear();
+ ComponentExtensionIME ext_xkb;
+ ext_xkb.id = "fgoepimhcoialccpbmpnnblemnepkkao";
+ ext_xkb.description = "ext_xkb_description";
+ ext_xkb.path = base::FilePath("ext_xkb_file_path");
+
+ ComponentExtensionEngine ext_xkb_engine_us;
+ ext_xkb_engine_us.engine_id = "xkb:us::eng";
+ ext_xkb_engine_us.display_name = "xkb:us::eng";
+ ext_xkb_engine_us.language_codes.push_back("en-US");
+ ext_xkb_engine_us.layouts.push_back("us");
+ ext_xkb.engines.push_back(ext_xkb_engine_us);
+
+ ComponentExtensionEngine ext_xkb_engine_dvorak;
+ ext_xkb_engine_dvorak.engine_id = "xkb:us:dvorak:eng";
+ ext_xkb_engine_dvorak.display_name = "xkb:us:dvorak:eng";
+ ext_xkb_engine_dvorak.language_codes.push_back("en-US");
+ ext_xkb_engine_dvorak.layouts.push_back("us(dvorak)");
+ ext_xkb.engines.push_back(ext_xkb_engine_dvorak);
+
+ ComponentExtensionEngine ext_xkb_engine_intl;
+ ext_xkb_engine_intl.engine_id = "xkb:us:intl:eng";
+ ext_xkb_engine_intl.display_name = "xkb:us:intl:eng";
+ ext_xkb_engine_intl.language_codes.push_back("en-US");
+ ext_xkb_engine_intl.layouts.push_back("us(intl)");
+ ext_xkb.engines.push_back(ext_xkb_engine_intl);
+
+ ComponentExtensionEngine ext_xkb_engine_altgr_intl;
+ ext_xkb_engine_altgr_intl.engine_id = "xkb:us:altgr-intl:eng";
+ ext_xkb_engine_altgr_intl.display_name = "xkb:us:altgr-intl:eng";
+ ext_xkb_engine_altgr_intl.language_codes.push_back("en-US");
+ ext_xkb_engine_altgr_intl.layouts.push_back("us(altgr-intl)");
+ ext_xkb.engines.push_back(ext_xkb_engine_altgr_intl);
+
+ ComponentExtensionEngine ext_xkb_engine_fr;
+ ext_xkb_engine_fr.engine_id = "xkb:fr::fra";
+ ext_xkb_engine_fr.display_name = "xkb:fr::fra";
+ ext_xkb_engine_fr.language_codes.push_back("fr");
+ ext_xkb_engine_fr.layouts.push_back("fr");
+ ext_xkb.engines.push_back(ext_xkb_engine_fr);
+
+ ComponentExtensionEngine ext_xkb_engine_colemak;
+ ext_xkb_engine_colemak.engine_id = "xkb:us:colemak:eng";
+ ext_xkb_engine_colemak.display_name = "xkb:us:colemak:eng";
+ ext_xkb_engine_colemak.language_codes.push_back("en-US");
+ ext_xkb_engine_colemak.layouts.push_back("us(colemak)");
+ ext_xkb.engines.push_back(ext_xkb_engine_colemak);
+
+ ComponentExtensionEngine ext_xkb_engine_se;
+ ext_xkb_engine_se.engine_id = "xkb:se::swe";
+ ext_xkb_engine_se.display_name = "xkb:se::swe";
+ ext_xkb_engine_se.language_codes.push_back("sv");
+ ext_xkb_engine_se.layouts.push_back("se");
+ ext_xkb.engines.push_back(ext_xkb_engine_se);
+
+ ComponentExtensionEngine ext_xkb_engine_jp;
+ ext_xkb_engine_jp.engine_id = "xkb:jp::jpn";
+ ext_xkb_engine_jp.display_name = "xkb:jp::jpn";
+ ext_xkb_engine_jp.language_codes.push_back("ja");
+ ext_xkb_engine_jp.layouts.push_back("jp");
+ ext_xkb.engines.push_back(ext_xkb_engine_jp);
+
+ ComponentExtensionEngine ext_xkb_engine_ru;
+ ext_xkb_engine_ru.engine_id = "xkb:ru::rus";
+ ext_xkb_engine_ru.display_name = "xkb:ru::rus";
+ ext_xkb_engine_ru.language_codes.push_back("ru");
+ ext_xkb_engine_ru.layouts.push_back("ru");
+ ext_xkb.engines.push_back(ext_xkb_engine_ru);
+
+ ComponentExtensionEngine ext_xkb_engine_hu;
+ ext_xkb_engine_hu.engine_id = "xkb:hu::hun";
+ ext_xkb_engine_hu.display_name = "xkb:hu::hun";
+ ext_xkb_engine_hu.language_codes.push_back("hu");
+ ext_xkb_engine_hu.layouts.push_back("hu");
+ ext_xkb.engines.push_back(ext_xkb_engine_hu);
+
+ ime_list_.push_back(ext_xkb);
+
ComponentExtensionIME ext1;
ext1.id = "fpfbhcjppmaeaijcidgiibchfbnhbelj";
ext1.description = "ext1_description";
@@ -250,13 +331,14 @@ TEST_F(InputMethodManagerImplTest, TestObserver) {
menu_manager_->AddObserver(&observer);
EXPECT_EQ(0, observer.input_method_changed_count_);
manager_->EnableLoginLayouts("en-US", keyboard_layouts);
+ EXPECT_EQ(5U, manager_->GetActiveInputMethods()->size());
EXPECT_EQ(1, observer.input_method_changed_count_);
EXPECT_EQ(1, observer.input_method_menu_item_changed_count_);
- manager_->ChangeInputMethod("xkb:us:dvorak:eng");
+ manager_->ChangeInputMethod(XkbId("xkb:us:dvorak:eng"));
EXPECT_FALSE(observer.last_show_message_);
EXPECT_EQ(2, observer.input_method_changed_count_);
EXPECT_EQ(2, observer.input_method_menu_item_changed_count_);
- manager_->ChangeInputMethod("xkb:us:dvorak:eng");
+ manager_->ChangeInputMethod(XkbId("xkb:us:dvorak:eng"));
EXPECT_FALSE(observer.last_show_message_);
// The observer is always notified even when the same input method ID is
@@ -301,8 +383,6 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayouts) {
InitComponentExtension();
manager_->EnableLoginLayouts("en-US", keyboard_layouts);
EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
- for (size_t i = 0; i < manager_->GetActiveInputMethodIds().size(); ++i)
- LOG(ERROR) << manager_->GetActiveInputMethodIds().at(i);
// For http://crbug.com/19655#c11 - (5)
// The hardware keyboard layout "xkb:us::eng" is always active, hence 2U.
@@ -315,12 +395,14 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) {
std::vector<std::string> keyboard_layouts;
keyboard_layouts.push_back("xkb:se::swe");
+ InitComponentExtension();
manager_->EnableLoginLayouts("en-US", keyboard_layouts);
const std::string im_id = manager_->GetCurrentInputMethod().id();
- EXPECT_EQ("xkb:se::swe", im_id);
+ EXPECT_EQ(XkbId("xkb:se::swe"), im_id);
}
TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) {
+ InitComponentExtension();
// The physical layout is French.
manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
"xkb:fr::fra");
@@ -345,10 +427,12 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) {
manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
// "xkb:us::eng" only.
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ("xkb:us::eng", manager_->GetActiveInputMethodIds().front());
+ EXPECT_EQ(XkbId("xkb:us::eng"),
+ manager_->GetActiveInputMethodIds().front());
}
TEST_F(InputMethodManagerImplTest, TestEnableMultipleHardwareKeyboardLayout) {
+ InitComponentExtension();
// The physical layouts are French and Hungarian.
manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
"xkb:fr::fra,xkb:hu::hun");
@@ -361,6 +445,7 @@ TEST_F(InputMethodManagerImplTest, TestEnableMultipleHardwareKeyboardLayout) {
TEST_F(InputMethodManagerImplTest,
TestEnableMultipleHardwareKeyboardLayout_NoLoginKeyboard) {
+ InitComponentExtension();
// The physical layouts are English (US) and Russian.
manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
"xkb:us::eng,xkb:ru::rus");
@@ -372,6 +457,7 @@ TEST_F(InputMethodManagerImplTest,
}
TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) {
+ InitComponentExtension();
std::vector<std::string> keyboard_layouts;
manager_->EnableLoginLayouts("ja", keyboard_layouts); // Japanese
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
@@ -381,11 +467,11 @@ TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) {
EXPECT_EQ(2U, methods->size());
const InputMethodDescriptor* id_to_find =
manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
- "xkb:us::eng");
- EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
+ XkbId("xkb:us::eng"));
+ EXPECT_TRUE(id_to_find && Contain(*methods.get(), *id_to_find));
id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
- "xkb:jp::jpn");
- EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
+ XkbId("xkb:jp::jpn"));
+ EXPECT_TRUE(id_to_find && Contain(*methods.get(), *id_to_find));
}
TEST_F(InputMethodManagerImplTest, TestEnableTwoLayouts) {
@@ -402,14 +488,14 @@ TEST_F(InputMethodManagerImplTest, TestEnableTwoLayouts) {
// Since all the IDs added avobe are keyboard layouts, Start() should not be
// called.
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Disable Dvorak.
ids.erase(ids.begin());
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(2, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], // colemak
+ EXPECT_EQ(XkbId(ids[0]), // colemak
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -428,19 +514,19 @@ TEST_F(InputMethodManagerImplTest, TestEnableThreeLayouts) {
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(3U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Switch to Dvorak.
manager_->SwitchToNextInputMethod();
EXPECT_EQ(2, observer.input_method_changed_count_);
- EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[1]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Disable Dvorak.
ids.erase(ids.begin() + 1);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(3, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], // US Qwerty
+ EXPECT_EQ(XkbId(ids[0]), // US Qwerty
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -457,18 +543,18 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme) {
ids.push_back(kNaclMozcUsId);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Switch to Mozc
manager_->SwitchToNextInputMethod();
EXPECT_EQ(2, observer.input_method_changed_count_);
- EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[1]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Disable Mozc.
ids.erase(ids.begin() + 1);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
}
@@ -483,14 +569,14 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme2) {
ids.push_back(kNaclMozcUsId);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Disable Dvorak.
ids.erase(ids.begin());
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ(ids[0], // Mozc
+ EXPECT_EQ(XkbId(ids[0]), // Mozc
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -506,7 +592,7 @@ TEST_F(InputMethodManagerImplTest, TestEnableImes) {
ids.push_back("mozc-dv");
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
}
@@ -539,30 +625,30 @@ TEST_F(InputMethodManagerImplTest, TestEnableLayoutsThenLock) {
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Switch to Dvorak.
manager_->SwitchToNextInputMethod();
EXPECT_EQ(2, observer.input_method_changed_count_);
- EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[1]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Lock screen
manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN);
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ(ids[1], // still Dvorak
+ EXPECT_EQ(XkbId(ids[1]), // still Dvorak
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Switch back to Qwerty.
manager_->SwitchToNextInputMethod();
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Unlock screen. The original state, Dvorak, is restored.
manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[1]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -581,30 +667,30 @@ TEST_F(InputMethodManagerImplTest, SwitchInputMethodTest) {
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(3U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Switch to Mozc.
manager_->SwitchToNextInputMethod();
EXPECT_EQ(2, observer.input_method_changed_count_);
- EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[1]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
// Lock screen
manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN);
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); // Qwerty+Dvorak.
- EXPECT_EQ("xkb:us:dvorak:eng",
+ EXPECT_EQ(XkbId("xkb:us:dvorak:eng"),
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
manager_->SwitchToNextInputMethod();
- EXPECT_EQ("xkb:us::eng", // The hardware keyboard layout.
+ EXPECT_EQ(XkbId("xkb:us::eng"), // The hardware keyboard layout.
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Unlock screen. The original state, pinyin-dv, is restored.
manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); // Dvorak and 2 IMEs.
- EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[1]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -731,27 +817,30 @@ TEST_F(InputMethodManagerImplTest, TestNextInputMethod) {
// For http://crbug.com/19655#c11 - (1)
manager_->EnableLoginLayouts("en-US", keyboard_layouts);
EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
manager_->SwitchToNextInputMethod();
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:intl:eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
manager_->SwitchToNextInputMethod();
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:altgr-intl:eng"),
+ manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_);
manager_->SwitchToNextInputMethod();
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:dvorak:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:dvorak:eng"),
+ manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
manager_->SwitchToNextInputMethod();
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:colemak:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:colemak:eng"),
+ manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_);
manager_->SwitchToNextInputMethod();
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -771,44 +860,47 @@ TEST_F(InputMethodManagerImplTest, TestPreviousInputMethod) {
keyboard_layouts.push_back("xkb:us::eng");
manager_->EnableLoginLayouts("en-US", keyboard_layouts);
EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToNextInputMethod());
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:intl:eng"),
+ manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:intl:eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToNextInputMethod());
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:intl:eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToNextInputMethod());
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:altgr-intl:eng"),
+ manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:intl:eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
EXPECT_TRUE(observer.last_show_message_);
- EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us:altgr-intl:eng"),
+ manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -839,6 +931,7 @@ TEST_F(InputMethodManagerImplTest,
}
TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
+ std::string expect_id = XkbId("xkb:us::eng");
TestObserver observer;
manager_->AddObserver(&observer);
InitComponentExtension();
@@ -846,7 +939,7 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
keyboard_layouts.push_back("xkb:us::eng");
manager_->EnableLoginLayouts("en-US", keyboard_layouts);
EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs
@@ -854,19 +947,19 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
EXPECT_FALSE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
EXPECT_FALSE(observer.last_show_message_);
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_FALSE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_FALSE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_FALSE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
manager_->RemoveObserver(&observer);
@@ -885,27 +978,27 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) {
keyboard_layouts.push_back("xkb:us::eng");
manager_->EnableLoginLayouts("ja", keyboard_layouts);
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator));
EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator));
- EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:us::eng"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
}
@@ -916,7 +1009,7 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
ids.push_back("xkb:jp::jpn");
ids.push_back(kNaclMozcJpId);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
@@ -924,7 +1017,7 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
@@ -936,17 +1029,17 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
// Add Dvorak.
ids.push_back("xkb:us:dvorak:eng");
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
@@ -954,7 +1047,7 @@ TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
EXPECT_EQ("jp", xkeyboard_->last_layout_);
EXPECT_TRUE(manager_->SwitchInputMethod(
ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
- EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId("xkb:jp::jpn"), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("jp", xkeyboard_->last_layout_);
}
@@ -968,7 +1061,7 @@ TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) {
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0],
+ EXPECT_EQ(XkbId(ids[0]),
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
@@ -1050,7 +1143,7 @@ TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) {
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods());
EXPECT_EQ(1, observer.input_method_changed_count_);
- EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id());
+ EXPECT_EQ(XkbId(ids[0]), manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
// Add an Extension IME.
@@ -1090,7 +1183,7 @@ TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) {
// Lock the screen. This is for crosbug.com/27049.
manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN);
EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); // Qwerty. No Ext. IME
- EXPECT_EQ("xkb:us::eng",
+ EXPECT_EQ(XkbId("xkb:us::eng"),
manager_->GetCurrentInputMethod().id());
EXPECT_EQ("us", xkeyboard_->last_layout_);
@@ -1142,8 +1235,8 @@ TEST_F(InputMethodManagerImplTest,
ChangeInputMethodBeforeComponentExtensionInitialization_CompOneIME) {
manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
const std::string ext_id = extension_ime_util::GetComponentInputMethodID(
- ime_list_[0].id,
- ime_list_[0].engines[0].engine_id);
+ ime_list_[1].id,
+ ime_list_[1].engines[0].engine_id);
std::vector<std::string> ids;
ids.push_back(ext_id);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
@@ -1158,11 +1251,11 @@ TEST_F(InputMethodManagerImplTest,
ChangeInputMethodBeforeComponentExtensionInitialization_CompTwoIME) {
manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID(
- ime_list_[0].id,
- ime_list_[0].engines[0].engine_id);
- const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
ime_list_[1].id,
ime_list_[1].engines[0].engine_id);
+ const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
+ ime_list_[2].id,
+ ime_list_[2].engines[0].engine_id);
std::vector<std::string> ids;
ids.push_back(ext_id1);
ids.push_back(ext_id2);
@@ -1180,8 +1273,8 @@ TEST_F(InputMethodManagerImplTest,
InitComponentExtension();
manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
const std::string ext_id = extension_ime_util::GetComponentInputMethodID(
- ime_list_[0].id,
- ime_list_[0].engines[0].engine_id);
+ ime_list_[1].id,
+ ime_list_[1].engines[0].engine_id);
std::vector<std::string> ids;
ids.push_back(ext_id);
EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids));
@@ -1194,11 +1287,11 @@ TEST_F(InputMethodManagerImplTest,
InitComponentExtension();
manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID(
- ime_list_[0].id,
- ime_list_[0].engines[0].engine_id);
- const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
ime_list_[1].id,
ime_list_[1].engines[0].engine_id);
+ const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
+ ime_list_[2].id,
+ ime_list_[2].engines[0].engine_id);
std::vector<std::string> ids;
ids.push_back(ext_id1);
ids.push_back(ext_id2);
@@ -1209,5 +1302,53 @@ TEST_F(InputMethodManagerImplTest,
EXPECT_EQ(ext_id2, manager_->GetCurrentInputMethod().id());
}
+TEST_F(InputMethodManagerImplTest, MigrateXkbInputMethodTest_1) {
+ extension_ime_util::ScopedUseExtensionKeyboardFlagForTesting
+ scoped_flag(true);
+
+ std::vector<std::string> input_method_ids;
+ input_method_ids.push_back("xkb:us::eng");
+ input_method_ids.push_back("xkb:fr::fra");
+ input_method_ids.push_back(
+ "_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng");
+ input_method_ids.push_back("xkb:fr::fra");
+ input_method_ids.push_back(
+ "_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng");
+ input_method_ids.push_back("_comp_ime_asdf_pinyin");
+
+ manager_->MigrateXkbInputMethods(&input_method_ids);
+
+ ASSERT_EQ(3U, input_method_ids.size());
+
+ EXPECT_EQ("_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng",
+ input_method_ids[0]);
+ EXPECT_EQ("_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:fr::fra",
+ input_method_ids[1]);
+ EXPECT_EQ("_comp_ime_asdf_pinyin", input_method_ids[2]);
+}
+
+TEST_F(InputMethodManagerImplTest, MigrateXkbInputMethodTest_2) {
+ extension_ime_util::ScopedUseExtensionKeyboardFlagForTesting
+ scoped_flag(false);
+
+ std::vector<std::string> input_method_ids;
+ input_method_ids.push_back("xkb:us::eng");
+ input_method_ids.push_back("xkb:fr::fra");
+ input_method_ids.push_back(
+ "_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng");
+ input_method_ids.push_back("xkb:fr::fra");
+ input_method_ids.push_back(
+ "_comp_ime_fgoepimhcoialccpbmpnnblemnepkkaoxkb:us::eng");
+ input_method_ids.push_back("_comp_ime_asdf_pinyin");
+
+ manager_->MigrateXkbInputMethods(&input_method_ids);
+
+ ASSERT_EQ(3U, input_method_ids.size());
+
+ EXPECT_EQ("xkb:us::eng", input_method_ids[0]);
+ EXPECT_EQ("xkb:fr::fra", input_method_ids[1]);
+ EXPECT_EQ("_comp_ime_asdf_pinyin", input_method_ids[2]);
+}
+
} // namespace input_method
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698