diff options
author | shuchen <shuchen@chromium.org> | 2014-09-29 20:50:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-30 03:50:41 +0000 |
commit | bc91aaa2ed163990f30a36b5999e722ed548977c (patch) | |
tree | 66928084a02eeae985f3f6cbb9168648a0a33e9e /chromeos/ime | |
parent | aebcdf88e420f281c950d741106e25dcdf0625e3 (diff) | |
download | chromium_src-bc91aaa2ed163990f30a36b5999e722ed548977c.zip chromium_src-bc91aaa2ed163990f30a36b5999e722ed548977c.tar.gz chromium_src-bc91aaa2ed163990f30a36b5999e722ed548977c.tar.bz2 |
Move all white-listed input method indicator text from InputMethodUtil to manifests of IME extensions.
BUG=232260
TEST=Verified on linux_chromeos.
Review URL: https://codereview.chromium.org/608183002
Cr-Commit-Position: refs/heads/master@{#297357}
Diffstat (limited to 'chromeos/ime')
-rw-r--r-- | chromeos/ime/component_extension_ime_manager.cc | 2 | ||||
-rw-r--r-- | chromeos/ime/component_extension_ime_manager.h | 1 | ||||
-rw-r--r-- | chromeos/ime/extension_ime_util.cc | 6 | ||||
-rw-r--r-- | chromeos/ime/input_method_descriptor.cc | 14 | ||||
-rw-r--r-- | chromeos/ime/input_method_descriptor.h | 3 |
5 files changed, 23 insertions, 3 deletions
diff --git a/chromeos/ime/component_extension_ime_manager.cc b/chromeos/ime/component_extension_ime_manager.cc index feb0347..5454a94 100644 --- a/chromeos/ime/component_extension_ime_manager.cc +++ b/chromeos/ime/component_extension_ime_manager.cc @@ -154,7 +154,7 @@ input_method::InputMethodDescriptors input_method::InputMethodDescriptor( input_method_id, ime.display_name, - std::string(), // TODO(uekawa): Set short name. + ime.indicator, layouts, ime.language_codes, // Enables extension based xkb keyboards on login screen. diff --git a/chromeos/ime/component_extension_ime_manager.h b/chromeos/ime/component_extension_ime_manager.h index 98e0bbc..0fcaded 100644 --- a/chromeos/ime/component_extension_ime_manager.h +++ b/chromeos/ime/component_extension_ime_manager.h @@ -24,6 +24,7 @@ struct CHROMEOS_EXPORT ComponentExtensionEngine { ~ComponentExtensionEngine(); std::string engine_id; // The engine id. std::string display_name; // The display name. + std::string indicator; // The indicator text. std::vector<std::string> language_codes; // The engine's language(ex. "en"). std::string description; // The engine description. std::vector<std::string> layouts; // The list of keyboard layout of engine. diff --git a/chromeos/ime/extension_ime_util.cc b/chromeos/ime/extension_ime_util.cc index ee37cae..bc0d078 100644 --- a/chromeos/ime/extension_ime_util.cc +++ b/chromeos/ime/extension_ime_util.cc @@ -116,8 +116,10 @@ bool IsMemberOfExtension(const std::string& input_method_id, } bool IsKeyboardLayoutExtension(const std::string& input_method_id) { - std::string prefix = kComponentExtensionIMEPrefix; - return StartsWithASCII(input_method_id, prefix + kXkbExtensionId, true); + if (IsComponentExtensionIME(input_method_id)) + return StartsWithASCII(GetComponentIDByInputMethodID(input_method_id), + "xkb:", true); + return false; } std::string MaybeGetLegacyXkbId(const std::string& input_method_id) { diff --git a/chromeos/ime/input_method_descriptor.cc b/chromeos/ime/input_method_descriptor.cc index 49b0360..6b9f42b 100644 --- a/chromeos/ime/input_method_descriptor.cc +++ b/chromeos/ime/input_method_descriptor.cc @@ -8,6 +8,8 @@ #include "base/logging.h" #include "base/strings/string_split.h" +#include "base/strings/string_util.h" +#include "chromeos/ime/extension_ime_util.h" #include "url/gurl.h" namespace chromeos { @@ -38,6 +40,18 @@ std::string InputMethodDescriptor::GetPreferredKeyboardLayout() const { return keyboard_layouts_.empty() ? "us" : keyboard_layouts_[0]; } +std::string InputMethodDescriptor::GetIndicator() const { + // If indicator is empty, use the first two character in its preferred + // keyboard layout or language code. + if (indicator_.empty()) { + if (extension_ime_util::IsKeyboardLayoutExtension(id_)) + return StringToUpperASCII(GetPreferredKeyboardLayout().substr(0, 2)); + DCHECK(language_codes_.size() > 0); + return StringToUpperASCII(language_codes_[0].substr(0, 2)); + } + return indicator_; +} + InputMethodDescriptor::InputMethodDescriptor() { } diff --git a/chromeos/ime/input_method_descriptor.h b/chromeos/ime/input_method_descriptor.h index ab7cfb4..e11b0eb 100644 --- a/chromeos/ime/input_method_descriptor.h +++ b/chromeos/ime/input_method_descriptor.h @@ -47,6 +47,9 @@ class CHROMEOS_EXPORT InputMethodDescriptor { // Returns preferred keyboard layout. std::string GetPreferredKeyboardLayout() const; + // Returns the indicator text of this input method. + std::string GetIndicator() const; + private: // An ID that identifies an input method engine (e.g., "t:latn-post", // "pinyin", "hangul"). |