summaryrefslogtreecommitdiffstats
path: root/chromeos/ime
diff options
context:
space:
mode:
authorshuchen <shuchen@chromium.org>2014-09-29 20:50:03 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-30 03:50:41 +0000
commitbc91aaa2ed163990f30a36b5999e722ed548977c (patch)
tree66928084a02eeae985f3f6cbb9168648a0a33e9e /chromeos/ime
parentaebcdf88e420f281c950d741106e25dcdf0625e3 (diff)
downloadchromium_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.cc2
-rw-r--r--chromeos/ime/component_extension_ime_manager.h1
-rw-r--r--chromeos/ime/extension_ime_util.cc6
-rw-r--r--chromeos/ime/input_method_descriptor.cc14
-rw-r--r--chromeos/ime/input_method_descriptor.h3
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").