summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/input_method
diff options
context:
space:
mode:
authornona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-02 07:05:29 +0000
committernona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-02 07:05:29 +0000
commitc418b6dca8574b880d424b1931f45a26100f68f8 (patch)
tree9ceed6b621c0ea24020cb61a052f049dcf2ba9e8 /chrome/browser/chromeos/input_method
parent4c81f7075a3c0bcfd0be67fe9eeea0f4cc0d0b95 (diff)
downloadchromium_src-c418b6dca8574b880d424b1931f45a26100f68f8.zip
chromium_src-c418b6dca8574b880d424b1931f45a26100f68f8.tar.gz
chromium_src-c418b6dca8574b880d424b1931f45a26100f68f8.tar.bz2
Introduce migration code.
We are now switching new input method engines which based on extension IME API. This is migration code for the users who already uses Japanese input method to be able to use new Japanese input method without any user action. BUG=236747 TEST=Manually confirmed that old input method is unchecked and new input method is checked in chrome://options/languages Review URL: https://chromiumcodereview.appspot.com/14621007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@197842 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/input_method')
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl.cc25
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl.h2
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc26
-rw-r--r--chrome/browser/chromeos/input_method/mock_input_method_manager.cc5
-rw-r--r--chrome/browser/chromeos/input_method/mock_input_method_manager.h2
5 files changed, 60 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
index 2f305ff..63c320f 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
@@ -36,6 +36,15 @@ bool Contains(const std::vector<std::string>& container,
container.end();
}
+const struct MigrationInputMethodList {
+ const char* old_input_method;
+ const char* new_input_method;
+} kMigrationInputMethodList[] = {
+ { "mozc", "_comp_ime_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_mozc_us" },
+ { "mozc-jp", "_comp_ime_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_mozc_jp" },
+ { "mozc-dv", "_comp_ime_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_mozc_us" },
+};
+
} // namespace
InputMethodManagerImpl::InputMethodManagerImpl(
@@ -227,6 +236,22 @@ bool InputMethodManagerImpl::EnableInputMethods(
return true;
}
+bool InputMethodManagerImpl::MigrateOldInputMethods(
+ std::vector<std::string>* input_method_ids) {
+ bool rewritten = false;
+ for (size_t i = 0; i < input_method_ids->size(); ++i) {
+ for (size_t j = 0; j < ARRAYSIZE_UNSAFE(kMigrationInputMethodList); ++j) {
+ if (input_method_ids->at(i) ==
+ kMigrationInputMethodList[j].old_input_method) {
+ input_method_ids->at(i).assign(
+ kMigrationInputMethodList[j].new_input_method);
+ rewritten = true;
+ }
+ }
+ }
+ return rewritten;
+}
+
bool InputMethodManagerImpl::SetInputMethodConfig(
const std::string& section,
const std::string& config_name,
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.h b/chrome/browser/chromeos/input_method/input_method_manager_impl.h
index af7d19f..57ee61c 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.h
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.h
@@ -63,6 +63,8 @@ class InputMethodManagerImpl : public InputMethodManager,
const std::string& initial_layout) OVERRIDE;
virtual bool EnableInputMethods(
const std::vector<std::string>& new_active_input_method_ids) OVERRIDE;
+ virtual bool MigrateOldInputMethods(
+ std::vector<std::string>* input_method_ids) OVERRIDE;
virtual bool SetInputMethodConfig(
const std::string& section,
const std::string& config_name,
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 2da9adc..8d66423 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
@@ -1202,5 +1202,31 @@ TEST_F(InputMethodManagerImplTest,
EXPECT_EQ(ext_id2, controller_->change_input_method_id_);
}
+TEST_F(InputMethodManagerImplTest,
+ MigrateOldInputMethodTest) {
+ std::vector<std::string> input_method_ids;
+ input_method_ids.push_back("mozc");
+ input_method_ids.push_back("mozc-jp");
+ input_method_ids.push_back("xkb:us::eng");
+ input_method_ids.push_back("mozc-hangul");
+
+ manager_->MigrateOldInputMethods(&input_method_ids);
+
+ ASSERT_EQ(4U, input_method_ids.size());
+ EXPECT_EQ(input_method_ids.end(),
+ std::find(input_method_ids.begin(), input_method_ids.end(),
+ "mozc"));
+ EXPECT_EQ(input_method_ids.end(),
+ std::find(input_method_ids.begin(), input_method_ids.end(),
+ "mozc-jp"));
+ EXPECT_NE(input_method_ids.end(),
+ std::find(input_method_ids.begin(), input_method_ids.end(),
+ "xkb:us::eng"));
+ EXPECT_NE(input_method_ids.end(),
+ std::find(input_method_ids.begin(), input_method_ids.end(),
+ "mozc-hangul"));
+
+}
+
} // namespace input_method
} // namespace chromeos
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_manager.cc b/chrome/browser/chromeos/input_method/mock_input_method_manager.cc
index 1f9a0e6..22e4498 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_manager.cc
+++ b/chrome/browser/chromeos/input_method/mock_input_method_manager.cc
@@ -63,6 +63,11 @@ bool MockInputMethodManager::EnableInputMethods(
return true;
}
+bool MockInputMethodManager::MigrateOldInputMethods(
+ std::vector<std::string>* input_method_ids) {
+ return false;
+}
+
bool MockInputMethodManager::SetInputMethodConfig(
const std::string& section,
const std::string& config_name,
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_manager.h b/chrome/browser/chromeos/input_method/mock_input_method_manager.h
index 170184d..0099ad7 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_manager.h
+++ b/chrome/browser/chromeos/input_method/mock_input_method_manager.h
@@ -36,6 +36,8 @@ class MockInputMethodManager : public InputMethodManager {
const std::string& initial_layout) OVERRIDE;
virtual bool EnableInputMethods(
const std::vector<std::string>& new_active_input_method_ids) OVERRIDE;
+ virtual bool MigrateOldInputMethods(
+ std::vector<std::string>* input_method_ids) OVERRIDE;
virtual bool SetInputMethodConfig(
const std::string& section,
const std::string& config_name,