-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(extension_ime_util::MaybeGetLegacyXkbId(
- imes[i].id()), "xkb:", true))
- return true;
- }
- return false;
-}
-
-void InputMethodManagerImpl::OnComponentExtensionInitialized(
- scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate) {
- DCHECK(thread_checker_.CalledOnValidThread());
- component_extension_ime_manager_->Initialize(delegate.Pass());
- InputMethodDescriptors imes =
- 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.
- if (IsXkbComponentExtensionAvailable())
- util_.ResetInputMethods(imes);
- else
- util_.AppendInputMethods(imes);
-
- LoadNecessaryComponentExtensions();
-
- if (!pending_input_method_.empty())
- ChangeInputMethodInternal(pending_input_method_, false);
-}
-