| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chromeos/ime/extension_ime_util.h" |
| |
| #include "base/strings/string_util.h" |
| |
| namespace chromeos { |
| namespace { |
| const char kExtensionIMEPrefix[] = "_ext_ime_"; |
| const int kExtensionIMEPrefixLength = |
| sizeof(kExtensionIMEPrefix) / sizeof(kExtensionIMEPrefix[0]) - 1; |
| const char kComponentExtensionIMEPrefix[] = "_comp_ime_"; |
| const int kComponentExtensionIMEPrefixLength = |
| sizeof(kComponentExtensionIMEPrefix) / |
| sizeof(kComponentExtensionIMEPrefix[0]) - 1; |
| const int kExtensionIdLength = 32; |
| } // namespace |
| |
| namespace extension_ime_util { |
| std::string GetInputMethodID(const std::string& extension_id, |
| const std::string& engine_id) { |
| DCHECK(!extension_id.empty()); |
| DCHECK(!engine_id.empty()); |
| return kExtensionIMEPrefix + extension_id + engine_id; |
| } |
| |
| std::string GetComponentInputMethodID(const std::string& extension_id, |
| const std::string& engine_id) { |
| DCHECK(!extension_id.empty()); |
| DCHECK(!engine_id.empty()); |
| return kComponentExtensionIMEPrefix + extension_id + engine_id; |
| } |
| |
| std::string GetExtensionIDFromInputMethodID( |
| const std::string& input_method_id) { |
| if (IsExtensionIME(input_method_id) && |
| input_method_id.size() >= kExtensionIMEPrefixLength + |
| kExtensionIdLength) { |
| return input_method_id.substr(kExtensionIMEPrefixLength, |
| kExtensionIdLength); |
| } |
| if (IsComponentExtensionIME(input_method_id) && |
| input_method_id.size() >= kComponentExtensionIMEPrefixLength + |
| kExtensionIdLength) { |
| return input_method_id.substr(kComponentExtensionIMEPrefixLength, |
| kExtensionIdLength); |
| } |
| return ""; |
| } |
| |
| bool IsExtensionIME(const std::string& input_method_id) { |
| return StartsWithASCII(input_method_id, |
| kExtensionIMEPrefix, |
| true); // Case sensitive. |
| } |
| |
| bool IsComponentExtensionIME(const std::string& input_method_id) { |
| return StartsWithASCII(input_method_id, |
| kComponentExtensionIMEPrefix, |
| true); // Case sensitive. |
| } |
| |
| bool IsMemberOfExtension(const std::string& input_method_id, |
| const std::string& extension_id) { |
| return StartsWithASCII(input_method_id, |
| kExtensionIMEPrefix + extension_id, |
| true); // Case sensitive. |
| } |
| |
| } // namespace extension_ime_util |
| } // namespace chromeos |