| Index: chrome/browser/chromeos/input_method/input_method_manager_impl.cc
|
| 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 5db79918d225c8b855a2a05be3e93fa079dca0ca..c7e086cfaa8b911dbddd18d9de02587101649fed 100644
|
| --- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
|
| +++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
|
| @@ -110,10 +110,8 @@ void InputMethodManagerImpl::SetState(State new_state) {
|
|
|
| scoped_ptr<InputMethodDescriptors>
|
| InputMethodManagerImpl::GetSupportedInputMethods() const {
|
| - scoped_ptr<InputMethodDescriptors> whitelist_imes =
|
| - whitelist_.GetSupportedInputMethods();
|
| - if (!component_extension_ime_manager_->IsInitialized())
|
| - return whitelist_imes.Pass();
|
| + if (!IsXkbComponentExtensionAvailable())
|
| + return whitelist_.GetSupportedInputMethods().Pass();
|
| return scoped_ptr<InputMethodDescriptors>(new InputMethodDescriptors).Pass();
|
| }
|
|
|
| @@ -325,9 +323,7 @@ bool InputMethodManagerImpl::ChangeInputMethodInternal(
|
| }
|
|
|
| if (!component_extension_ime_manager_->IsInitialized() &&
|
| - (!InputMethodUtil::IsKeyboardLayout(input_method_id_to_switch) ||
|
| - extension_ime_util::IsKeyboardLayoutExtension(
|
| - input_method_id_to_switch))) {
|
| + !InputMethodUtil::IsKeyboardLayout(input_method_id_to_switch)) {
|
| // We can't change input method before the initialization of
|
| // component extension ime manager. ChangeInputMethod will be
|
| // called with |pending_input_method_| when the initialization is
|
| @@ -405,6 +401,18 @@ bool InputMethodManagerImpl::ChangeInputMethodInternal(
|
| return true;
|
| }
|
|
|
| +bool InputMethodManagerImpl::IsXkbComponentExtensionAvailable() const {
|
| + if (!component_extension_ime_manager_->IsInitialized())
|
| + return false;
|
| + InputMethodDescriptors imes =
|
| + component_extension_ime_manager_->GetAllIMEAsInputMethodDescriptor();
|
| + for (size_t i = 0; i < imes.size(); ++i) {
|
| + if (StartsWithASCII(imes[i].id(), "xkb:", true))
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| void InputMethodManagerImpl::OnComponentExtensionInitialized(
|
| scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| @@ -413,14 +421,7 @@ void InputMethodManagerImpl::OnComponentExtensionInitialized(
|
| component_extension_ime_manager_->GetAllIMEAsInputMethodDescriptor();
|
| // In case of XKB extension is not available (e.g. linux_chromeos), don't
|
| // reset the input methods in InputMethodUtil, Instead append input methods.
|
| - bool xkb_found = false;
|
| - for (size_t i = 0; i < imes.size(); ++i) {
|
| - if (StartsWithASCII(imes[i].id(), "xkb:", true)) {
|
| - xkb_found = true;
|
| - break;
|
| - }
|
| - }
|
| - if (xkb_found)
|
| + if (IsXkbComponentExtensionAvailable())
|
| util_.ResetInputMethods(imes);
|
| else
|
| util_.AppendInputMethods(imes);
|
|
|