// 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