1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROMEOS_IME_EXTENSION_IME_UTIL_H_ 6#define CHROMEOS_IME_EXTENSION_IME_UTIL_H_ 7 8#include <string> 9 10#include "base/auto_reset.h" 11#include "chromeos/chromeos_export.h" 12 13namespace chromeos { 14 15// Extension IME related utilities. 16namespace extension_ime_util { 17 18#if defined(GOOGLE_CHROME_BUILD) 19const char kXkbExtensionId[] = "jkghodnilhceideoidjikpgommlajknk"; 20const char kM17nExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 21const char kHangulExtensionId[] = "bdgdidmhaijohebebipajioienkglgfo"; 22const char kMozcExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 23const char kT13nExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 24const char kChinesePinyinExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 25const char kChineseZhuyinExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 26const char kChineseCangjieExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 27#else 28const char kXkbExtensionId[] = "fgoepimhcoialccpbmpnnblemnepkkao"; 29const char kM17nExtensionId[] = "jhffeifommiaekmbkkjlpmilogcfdohp"; 30const char kHangulExtensionId[] = "bdgdidmhaijohebebipajioienkglgfo"; 31const char kMozcExtensionId[] = "bbaiamgfapehflhememkfglaehiobjnk"; 32const char kT13nExtensionId[] = "gjaehgfemfahhmlgpdfknkhdnemmolop"; 33const char kChinesePinyinExtensionId[] = "cpgalbafkoofkjmaeonnfijgpfennjjn"; 34const char kChineseZhuyinExtensionId[] = "ekbifjdfhkmdeeajnolmgdlmkllopefi"; 35const char kChineseCangjieExtensionId[] = "aeebooiibjahgpgmhkeocbeekccfknbj"; 36#endif 37 38// Returns InputMethodID for |engine_id| in |extension_id| of extension IME. 39// This function does not check |extension_id| is installed extension IME nor 40// |engine_id| is really a member of |extension_id|. 41std::string CHROMEOS_EXPORT GetInputMethodID(const std::string& extension_id, 42 const std::string& engine_id); 43 44// Returns InputMethodID for |engine_id| in |extension_id| of component 45// extension IME, This function does not check |extension_id| is component one 46// nor |engine_id| is really a member of |extension_id|. 47std::string CHROMEOS_EXPORT GetComponentInputMethodID( 48 const std::string& extension_id, 49 const std::string& engine_id); 50 51// Returns extension ID if |input_method_id| is extension IME ID or component 52// extension IME ID. Otherwise returns an empty string (""). 53std::string CHROMEOS_EXPORT GetExtensionIDFromInputMethodID( 54 const std::string& input_method_id); 55 56// Returns InputMethodID from engine id (e.g. xkb:fr:fra), or returns itself if 57// the |engine_id| is not a known engine id. 58// The caller must make sure the |engine_id| is from system input methods 59// instead of 3rd party input methods. 60std::string CHROMEOS_EXPORT GetInputMethodIDByEngineID( 61 const std::string& engine_id); 62 63// Returns true if |input_method_id| is extension IME ID. This function does not 64// check |input_method_id| is installed extension IME. 65bool CHROMEOS_EXPORT IsExtensionIME(const std::string& input_method_id); 66 67// Returns true if |input_method_id| is component extension IME ID. This 68// function does not check |input_method_id| is really whitelisted one or not. 69// If you want to check |input_method_id| is whitelisted component extension 70// IME, please use ComponentExtensionIMEManager::IsWhitelisted instead. 71bool CHROMEOS_EXPORT IsComponentExtensionIME( 72 const std::string& input_method_id); 73 74// Returns true if the |input_method| is a member of |extension_id| of extension 75// IME, otherwise returns false. 76bool CHROMEOS_EXPORT IsMemberOfExtension(const std::string& input_method_id, 77 const std::string& extension_id); 78 79// Returns true if the |input_method_id| is the extension based xkb keyboard, 80// otherwise returns false. 81bool CHROMEOS_EXPORT IsKeyboardLayoutExtension( 82 const std::string& input_method_id); 83 84// Returns input method component id from the extension-based InputMethodID 85// for component IME extensions. This function does not check that 86// |input_method_id| is installed. 87std::string CHROMEOS_EXPORT 88 GetComponentIDByInputMethodID(const std::string& input_method_id); 89 90// Gets legacy xkb id (e.g. xkb:us::eng) from the new extension based xkb id 91// (e.g. _comp_ime_...xkb:us::eng). If the given id is not prefixed with 92// 'xkb:', just return the same as the given id. 93std::string CHROMEOS_EXPORT MaybeGetLegacyXkbId( 94 const std::string& input_method_id); 95 96} // namespace extension_ime_util 97 98} // namespace chromeos 99 100#endif // CHROMEOS_IME_EXTENSION_IME_UTIL_H_ 101