summaryrefslogtreecommitdiffstats
path: root/chromeos/ime/component_extension_ime_manager.cc
diff options
context:
space:
mode:
authornona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-03 00:38:17 +0000
committernona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-03 00:38:17 +0000
commit561c37211b16fe1566c7b93d908903d121008d4b (patch)
tree2cdabf11753f83b00f9d009aa8a233872141e8f9 /chromeos/ime/component_extension_ime_manager.cc
parenta4180a032e389c40d1cd954073e9a69d23ce85ad (diff)
downloadchromium_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.cc56
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;