diff options
author | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-02 07:05:29 +0000 |
---|---|---|
committer | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-02 07:05:29 +0000 |
commit | c418b6dca8574b880d424b1931f45a26100f68f8 (patch) | |
tree | 9ceed6b621c0ea24020cb61a052f049dcf2ba9e8 /chrome/browser/chromeos/input_method | |
parent | 4c81f7075a3c0bcfd0be67fe9eeea0f4cc0d0b95 (diff) | |
download | chromium_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')
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, |