diff options
author | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-03 00:38:17 +0000 |
---|---|---|
committer | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-03 00:38:17 +0000 |
commit | 561c37211b16fe1566c7b93d908903d121008d4b (patch) | |
tree | 2cdabf11753f83b00f9d009aa8a233872141e8f9 /chromeos/ime/component_extension_ime_manager.cc | |
parent | a4180a032e389c40d1cd954073e9a69d23ce85ad (diff) | |
download | chromium_src-561c37211b16fe1566c7b93d908903d121008d4b.zip chromium_src-561c37211b16fe1566c7b93d908903d121008d4b.tar.gz chromium_src-561c37211b16fe1566c7b93d908903d121008d4b.tar.bz2 |
Introduce component extension specific id format.
Component Extension IME should be treated as default install input method. Thus
it should not have same format of id with normal extension ime.
BUG=164377
TEST=None
Review URL: https://chromiumcodereview.appspot.com/13451003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191949 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/ime/component_extension_ime_manager.cc')
-rw-r--r-- | chromeos/ime/component_extension_ime_manager.cc | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/chromeos/ime/component_extension_ime_manager.cc b/chromeos/ime/component_extension_ime_manager.cc index f004846..e5af80d 100644 --- a/chromeos/ime/component_extension_ime_manager.cc +++ b/chromeos/ime/component_extension_ime_manager.cc @@ -3,10 +3,13 @@ // found in the LICENSE file. #include "base/logging.h" +#include "base/string_util.h" #include "chromeos/ime/component_extension_ime_manager.h" -#include "chromeos/ime/extension_ime_util.h" namespace chromeos { +namespace { +const char* kComponentExtensionIMEPrefix = "_comp_ime_"; +} // namespace ComponentExtensionIME::ComponentExtensionIME() { } @@ -57,9 +60,45 @@ bool ComponentExtensionIMEManager::UnloadComponentExtensionIME( return false; } +// static +std::string ComponentExtensionIMEManager::GetComponentExtensionIMEId( + const std::string& extension_id, + const std::string& engine_id) { + return kComponentExtensionIMEPrefix + extension_id + engine_id; +} + +// static bool ComponentExtensionIMEManager::IsComponentExtensionIMEId( const std::string& input_method_id) { - return FindEngineEntry(input_method_id, NULL, NULL); + return StartsWithASCII(input_method_id, + kComponentExtensionIMEPrefix, + true); // Case sensitive. +} + +bool ComponentExtensionIMEManager::IsWhitelisted( + const std::string& input_method_id) { + return IsComponentExtensionIMEId(input_method_id) && + FindEngineEntry(input_method_id, NULL, NULL); +} + +bool ComponentExtensionIMEManager::IsWhitelistedExtension( + const std::string& extension_id) { + for (size_t i = 0; i < component_extension_imes_.size(); ++i) { + if (component_extension_imes_[i].id == extension_id) + return true; + } + return false; +} + +std::string ComponentExtensionIMEManager::GetId( + const std::string& extension_id, + const std::string& engine_id) { + IBusComponent::EngineDescription engine; + const std::string& input_method_id = + GetComponentExtensionIMEId(extension_id, engine_id); + if (!FindEngineEntry(input_method_id, NULL, &engine)) + return ""; + return input_method_id; } std::string ComponentExtensionIMEManager::GetName( @@ -85,7 +124,7 @@ std::vector<std::string> ComponentExtensionIMEManager::ListIMEByLanguage( for (size_t j = 0; j < component_extension_imes_[i].engines.size(); ++j) { if (component_extension_imes_[i].engines[j].language_code == language) result.push_back( - extension_ime_util::GetInputMethodID( + GetComponentExtensionIMEId( component_extension_imes_[i].id, component_extension_imes_[i].engines[j].engine_id)); } @@ -100,7 +139,7 @@ input_method::InputMethodDescriptors for (size_t j = 0; j < component_extension_imes_[i].engines.size(); ++j) { result.push_back( input_method::InputMethodDescriptor( - extension_ime_util::GetInputMethodID( + GetComponentExtensionIMEId( component_extension_imes_[i].id, component_extension_imes_[i].engines[j].engine_id), component_extension_imes_[i].engines[j].display_name, @@ -124,19 +163,16 @@ bool ComponentExtensionIMEManager::FindEngineEntry( const std::string& input_method_id, ComponentExtensionIME* out_extension, IBusComponent::EngineDescription* out_engine) { - if (!extension_ime_util::IsExtensionIME(input_method_id)) + if (!IsComponentExtensionIMEId(input_method_id)) return false; for (size_t i = 0; i < component_extension_imes_.size(); ++i) { const std::string extension_id = component_extension_imes_[i].id; - if (!extension_ime_util::IsMemberOfExtension(input_method_id, extension_id)) - continue; const std::vector<IBusComponent::EngineDescription>& engines = component_extension_imes_[i].engines; for (size_t j = 0; j < engines.size(); ++j) { - const std::string trial_ime_id = - extension_ime_util::GetInputMethodID(extension_id, - engines[j].engine_id); + const std::string trial_ime_id = GetComponentExtensionIMEId( + extension_id, engines[j].engine_id); if (trial_ime_id != input_method_id) continue; |