summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authornona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-18 13:51:31 +0000
committernona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-18 13:51:31 +0000
commitd4f45da56975c4ccc8bf3d7ad5a6382ca7f4bfbe (patch)
treecebdc51464a1ba5e336c4c840959018044647cdf /chromeos
parent8d7019c5f7be9ffe7ff8241e11a62e85c22d0042 (diff)
downloadchromium_src-d4f45da56975c4ccc8bf3d7ad5a6382ca7f4bfbe.zip
chromium_src-d4f45da56975c4ccc8bf3d7ad5a6382ca7f4bfbe.tar.gz
chromium_src-d4f45da56975c4ccc8bf3d7ad5a6382ca7f4bfbe.tar.bz2
Support multiple languages.
There is a case which the input method is used in multiple languages, e.g. US international is used in many non US languages. This is also helpful for language code variations, e.g. "zh" and "zh-CN". BUG=249200 TEST=ran all tests. Review URL: https://chromiumcodereview.appspot.com/16843010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206974 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/ime/component_extension_ime_manager.cc5
-rw-r--r--chromeos/ime/input_method_descriptor.cc4
-rw-r--r--chromeos/ime/input_method_descriptor.h8
-rw-r--r--chromeos/ime/input_method_manager.h13
-rw-r--r--chromeos/ime/input_method_whitelist.cc5
5 files changed, 22 insertions, 13 deletions
diff --git a/chromeos/ime/component_extension_ime_manager.cc b/chromeos/ime/component_extension_ime_manager.cc
index 40aeb76..c557d09 100644
--- a/chromeos/ime/component_extension_ime_manager.cc
+++ b/chromeos/ime/component_extension_ime_manager.cc
@@ -143,6 +143,9 @@ input_method::InputMethodDescriptors
input_method::InputMethodDescriptors result;
for (size_t i = 0; i < component_extension_imes_.size(); ++i) {
for (size_t j = 0; j < component_extension_imes_[i].engines.size(); ++j) {
+ std::vector<std::string> languages;
+ languages.push_back(
+ component_extension_imes_[i].engines[j].language_code);
result.push_back(
input_method::InputMethodDescriptor(
GetComponentExtensionIMEId(
@@ -150,7 +153,7 @@ input_method::InputMethodDescriptors
component_extension_imes_[i].engines[j].engine_id),
component_extension_imes_[i].engines[j].display_name,
component_extension_imes_[i].engines[j].layouts,
- component_extension_imes_[i].engines[j].language_code,
+ languages,
component_extension_imes_[i].options_page_url));
}
}
diff --git a/chromeos/ime/input_method_descriptor.cc b/chromeos/ime/input_method_descriptor.cc
index c19ae8b..785884e 100644
--- a/chromeos/ime/input_method_descriptor.cc
+++ b/chromeos/ime/input_method_descriptor.cc
@@ -17,12 +17,12 @@ InputMethodDescriptor::InputMethodDescriptor(
const std::string& id,
const std::string& name,
const std::vector<std::string>& keyboard_layouts,
- const std::string& language_code,
+ const std::vector<std::string>& language_codes,
const GURL& options_page_url)
: id_(id),
name_(name),
keyboard_layouts_(keyboard_layouts),
- language_code_(language_code),
+ language_codes_(language_codes),
options_page_url_(options_page_url) {
}
diff --git a/chromeos/ime/input_method_descriptor.h b/chromeos/ime/input_method_descriptor.h
index fbe687a..fc2cf27 100644
--- a/chromeos/ime/input_method_descriptor.h
+++ b/chromeos/ime/input_method_descriptor.h
@@ -22,14 +22,16 @@ class CHROMEOS_EXPORT InputMethodDescriptor {
InputMethodDescriptor(const std::string& id,
const std::string& name,
const std::vector<std::string>& keyboard_layouts,
- const std::string& language_code,
+ const std::vector<std::string>& language_codes,
const GURL& options_page_url);
~InputMethodDescriptor();
// Accessors
const std::string& id() const { return id_; }
const std::string& name() const { return name_; }
- const std::string& language_code() const { return language_code_; }
+ const std::vector<std::string>& language_codes() const {
+ return language_codes_;
+ }
const GURL& options_page_url() const { return options_page_url_; }
const std::vector<std::string>& keyboard_layouts() const {
return keyboard_layouts_;
@@ -52,7 +54,7 @@ class CHROMEOS_EXPORT InputMethodDescriptor {
std::vector<std::string> keyboard_layouts_;
// Language code like "ko", "ja", "en-US", and "zh-CN".
- std::string language_code_;
+ std::vector<std::string> language_codes_;
// Options page URL e.g.
// "chrome-extension://ceaajjmckiakobniehbjpdcidfpohlin/options.html".
diff --git a/chromeos/ime/input_method_manager.h b/chromeos/ime/input_method_manager.h
index 56dcee5..075804e 100644
--- a/chromeos/ime/input_method_manager.h
+++ b/chromeos/ime/input_method_manager.h
@@ -140,12 +140,13 @@ class CHROMEOS_EXPORT InputMethodManager {
// Adds an input method extension. This function does not takes ownership of
// |instance|.
- virtual void AddInputMethodExtension(const std::string& id,
- const std::string& name,
- const std::vector<std::string>& layouts,
- const std::string& language,
- const GURL& options_url,
- InputMethodEngine* instance) = 0;
+ virtual void AddInputMethodExtension(
+ const std::string& id,
+ const std::string& name,
+ const std::vector<std::string>& layouts,
+ const std::vector<std::string>& languages,
+ const GURL& options_url,
+ InputMethodEngine* instance) = 0;
// Removes an input method extension.
virtual void RemoveInputMethodExtension(const std::string& id) = 0;
diff --git a/chromeos/ime/input_method_whitelist.cc b/chromeos/ime/input_method_whitelist.cc
index 0f90787..cea052c 100644
--- a/chromeos/ime/input_method_whitelist.cc
+++ b/chromeos/ime/input_method_whitelist.cc
@@ -34,11 +34,14 @@ InputMethodWhitelist::GetSupportedInputMethods() const {
std::vector<std::string> layouts;
layouts.push_back(kInputMethods[i].xkb_layout_id);
+ std::vector<std::string> languages;
+ languages.push_back(kInputMethods[i].language_code);
+
input_methods->push_back(InputMethodDescriptor(
kInputMethods[i].input_method_id,
"",
layouts,
- kInputMethods[i].language_code,
+ languages,
GURL())); // options page url, not available for non-extension input
// method.
}