| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/input_method/input_method_manager_impl.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_manager_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> // std::find | 7 #include <algorithm> // std::find |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 { "m17n:mr:itrans", | 90 { "m17n:mr:itrans", |
| 91 "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_deva_phone-" }, | 91 "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_deva_phone-" }, |
| 92 { "m17n:te:itrans", | 92 { "m17n:te:itrans", |
| 93 "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_te_phone" }, | 93 "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_te_phone" }, |
| 94 { "m17n:fa:isiri", "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_fa" }, | 94 { "m17n:fa:isiri", "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_fa" }, |
| 95 // TODO(nona): Remove following migration map in M32 | 95 // TODO(nona): Remove following migration map in M32 |
| 96 { "m17n:zh:quick", | 96 { "m17n:zh:quick", |
| 97 "_comp_ime_ekbifjdfhkmdeeajnolmgdlmkllopefizh-hant-t-i0-und" }, | 97 "_comp_ime_ekbifjdfhkmdeeajnolmgdlmkllopefizh-hant-t-i0-und" }, |
| 98 }; | 98 }; |
| 99 | 99 |
| 100 const struct MigrationHangulKeyboardToInputMethodID { |
| 101 const char* keyboard_id; |
| 102 const char* ime_id; |
| 103 } kMigrationHangulKeyboardToInputMethodID[] = { |
| 104 { "2", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_2set" }, |
| 105 { "3f", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setfinal" }, |
| 106 { "39", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3set390" }, |
| 107 { "3s", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setnoshift" }, |
| 108 { "ro", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_romaja" }, |
| 109 }; |
| 110 |
| 100 } // namespace | 111 } // namespace |
| 101 | 112 |
| 102 InputMethodManagerImpl::InputMethodManagerImpl( | 113 InputMethodManagerImpl::InputMethodManagerImpl( |
| 103 scoped_ptr<InputMethodDelegate> delegate) | 114 scoped_ptr<InputMethodDelegate> delegate) |
| 104 : delegate_(delegate.Pass()), | 115 : delegate_(delegate.Pass()), |
| 105 state_(STATE_LOGIN_SCREEN), | 116 state_(STATE_LOGIN_SCREEN), |
| 106 util_(delegate_.get(), GetSupportedInputMethods()), | 117 util_(delegate_.get(), GetSupportedInputMethods()), |
| 107 component_extension_ime_manager_(new ComponentExtensionIMEManager()), | 118 component_extension_ime_manager_(new ComponentExtensionIMEManager()), |
| 108 weak_ptr_factory_(this) { | 119 weak_ptr_factory_(this) { |
| 109 IBusDaemonController::GetInstance()->AddObserver(this); | 120 IBusDaemonController::GetInstance()->AddObserver(this); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 rewritten = true; | 311 rewritten = true; |
| 301 } | 312 } |
| 302 } | 313 } |
| 303 } | 314 } |
| 304 std::vector<std::string>::iterator it = | 315 std::vector<std::string>::iterator it = |
| 305 std::unique(input_method_ids->begin(), input_method_ids->end()); | 316 std::unique(input_method_ids->begin(), input_method_ids->end()); |
| 306 input_method_ids->resize(std::distance(input_method_ids->begin(), it)); | 317 input_method_ids->resize(std::distance(input_method_ids->begin(), it)); |
| 307 return rewritten; | 318 return rewritten; |
| 308 } | 319 } |
| 309 | 320 |
| 321 bool InputMethodManagerImpl::MigrateKoreanKeyboard( |
| 322 const std::string& keyboard_id, |
| 323 std::vector<std::string>* input_method_ids) { |
| 324 std::vector<std::string>::iterator it = |
| 325 std::find(active_input_method_ids_.begin(), |
| 326 active_input_method_ids_.end(), |
| 327 "mozc-hangul"); |
| 328 if (it == active_input_method_ids_.end()) |
| 329 return false; |
| 330 |
| 331 for (size_t i = 0; |
| 332 i < ARRAYSIZE_UNSAFE(kMigrationHangulKeyboardToInputMethodID); ++i) { |
| 333 if (kMigrationHangulKeyboardToInputMethodID[i].keyboard_id == keyboard_id) { |
| 334 *it = kMigrationHangulKeyboardToInputMethodID[i].ime_id; |
| 335 input_method_ids->assign(active_input_method_ids_.begin(), |
| 336 active_input_method_ids_.end()); |
| 337 return true; |
| 338 } |
| 339 } |
| 340 return false; |
| 341 } |
| 342 |
| 310 bool InputMethodManagerImpl::SetInputMethodConfig( | 343 bool InputMethodManagerImpl::SetInputMethodConfig( |
| 311 const std::string& section, | 344 const std::string& section, |
| 312 const std::string& config_name, | 345 const std::string& config_name, |
| 313 const InputMethodConfigValue& value) { | 346 const InputMethodConfigValue& value) { |
| 314 DCHECK(section != language_prefs::kGeneralSectionName || | 347 DCHECK(section != language_prefs::kGeneralSectionName || |
| 315 config_name != language_prefs::kPreloadEnginesConfigName); | 348 config_name != language_prefs::kPreloadEnginesConfigName); |
| 316 | 349 |
| 317 if (state_ == STATE_TERMINATING) | 350 if (state_ == STATE_TERMINATING) |
| 318 return false; | 351 return false; |
| 352 |
| 319 return ibus_controller_->SetInputMethodConfig(section, config_name, value); | 353 return ibus_controller_->SetInputMethodConfig(section, config_name, value); |
| 320 } | 354 } |
| 321 | 355 |
| 322 void InputMethodManagerImpl::ChangeInputMethod( | 356 void InputMethodManagerImpl::ChangeInputMethod( |
| 323 const std::string& input_method_id) { | 357 const std::string& input_method_id) { |
| 324 ChangeInputMethodInternal(input_method_id, false); | 358 ChangeInputMethodInternal(input_method_id, false); |
| 325 } | 359 } |
| 326 | 360 |
| 327 bool InputMethodManagerImpl::ChangeInputMethodInternal( | 361 bool InputMethodManagerImpl::ChangeInputMethodInternal( |
| 328 const std::string& input_method_id, | 362 const std::string& input_method_id, |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 input_method_ids_to_switch.push_back(nacl_mozc_jp_id); | 707 input_method_ids_to_switch.push_back(nacl_mozc_jp_id); |
| 674 break; | 708 break; |
| 675 case ui::VKEY_NONCONVERT: // Muhenkan key on JP106 keyboard | 709 case ui::VKEY_NONCONVERT: // Muhenkan key on JP106 keyboard |
| 676 input_method_ids_to_switch.push_back("xkb:jp::jpn"); | 710 input_method_ids_to_switch.push_back("xkb:jp::jpn"); |
| 677 break; | 711 break; |
| 678 case ui::VKEY_DBE_SBCSCHAR: // ZenkakuHankaku key on JP106 keyboard | 712 case ui::VKEY_DBE_SBCSCHAR: // ZenkakuHankaku key on JP106 keyboard |
| 679 case ui::VKEY_DBE_DBCSCHAR: | 713 case ui::VKEY_DBE_DBCSCHAR: |
| 680 input_method_ids_to_switch.push_back(nacl_mozc_jp_id); | 714 input_method_ids_to_switch.push_back(nacl_mozc_jp_id); |
| 681 input_method_ids_to_switch.push_back("xkb:jp::jpn"); | 715 input_method_ids_to_switch.push_back("xkb:jp::jpn"); |
| 682 break; | 716 break; |
| 683 case ui::VKEY_HANGUL: // Hangul (or right Alt) key on Korean keyboard | |
| 684 input_method_ids_to_switch.push_back("mozc-hangul"); | |
| 685 input_method_ids_to_switch.push_back("xkb:kr:kr104:kor"); | |
| 686 break; | |
| 687 default: | 717 default: |
| 688 NOTREACHED(); | 718 NOTREACHED(); |
| 689 break; | 719 break; |
| 690 } | 720 } |
| 691 if (input_method_ids_to_switch.empty()) { | 721 if (input_method_ids_to_switch.empty()) { |
| 692 DVLOG(1) << "Unexpected VKEY: " << accelerator.key_code(); | 722 DVLOG(1) << "Unexpected VKEY: " << accelerator.key_code(); |
| 693 return false; | 723 return false; |
| 694 } | 724 } |
| 695 | 725 |
| 696 // Obtain the intersection of input_method_ids_to_switch and | 726 // Obtain the intersection of input_method_ids_to_switch and |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 908 else | 938 else |
| 909 DVLOG(1) << "Failed to initialize the candidate window controller"; | 939 DVLOG(1) << "Failed to initialize the candidate window controller"; |
| 910 } | 940 } |
| 911 | 941 |
| 912 bool InputMethodManagerImpl::IsIBusConnectionAlive() { | 942 bool InputMethodManagerImpl::IsIBusConnectionAlive() { |
| 913 return DBusThreadManager::Get() && DBusThreadManager::Get()->GetIBusClient(); | 943 return DBusThreadManager::Get() && DBusThreadManager::Get()->GetIBusClient(); |
| 914 } | 944 } |
| 915 | 945 |
| 916 } // namespace input_method | 946 } // namespace input_method |
| 917 } // namespace chromeos | 947 } // namespace chromeos |
| OLD | NEW |