summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/input_method/input_method_engine_ibus.cc5
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl.cc4
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl.h2
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc10
-rw-r--r--chrome/browser/chromeos/input_method/input_method_util.cc31
-rw-r--r--chrome/browser/chromeos/input_method/input_method_util_unittest.cc9
-rw-r--r--chrome/browser/chromeos/input_method/mock_input_method_manager.cc4
-rw-r--r--chrome/browser/chromeos/input_method/mock_input_method_manager.h2
-rw-r--r--chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc20
-rw-r--r--chrome/browser/ui/webui/options/chromeos/cros_language_options_handler_unittest.cc4
-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
15 files changed, 80 insertions, 46 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc b/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc
index f991506a..a7b5056 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc
@@ -110,7 +110,10 @@ void InputMethodEngineIBus::Initialize(
engine_desc.author = ibus_id_;
component_->mutable_engine_description()->push_back(engine_desc);
- manager->AddInputMethodExtension(ibus_id_, engine_name, layouts, language,
+
+ std::vector<std::string> languages;
+ languages.push_back(language);
+ manager->AddInputMethodExtension(ibus_id_, engine_name, layouts, languages,
options_page, this);
// If connection is avaiable, register component. If there are no connection
// to ibus-daemon, OnConnected callback will register component instead.
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
index 1b1f297..f2c5d8d 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
@@ -441,7 +441,7 @@ void InputMethodManagerImpl::AddInputMethodExtension(
const std::string& id,
const std::string& name,
const std::vector<std::string>& layouts,
- const std::string& language,
+ const std::vector<std::string>& languages,
const GURL& options_url,
InputMethodEngine* engine) {
if (state_ == STATE_TERMINATING)
@@ -454,7 +454,7 @@ void InputMethodManagerImpl::AddInputMethodExtension(
}
extra_input_methods_[id] =
- InputMethodDescriptor(id, name, layouts, language, options_url);
+ InputMethodDescriptor(id, name, layouts, languages, options_url);
if (Contains(enabled_extension_imes_, id) &&
!ComponentExtensionIMEManager::IsComponentExtensionIMEId(id)) {
if (!Contains(active_input_method_ids_, id)) {
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.h b/chrome/browser/chromeos/input_method/input_method_manager_impl.h
index 3b2e2bc..c585b46 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.h
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.h
@@ -75,7 +75,7 @@ class InputMethodManagerImpl : public InputMethodManager,
const std::string& id,
const std::string& name,
const std::vector<std::string>& layouts,
- const std::string& language,
+ const std::vector<std::string>& languages,
const GURL& options_page,
InputMethodEngine* instance) OVERRIDE;
virtual void RemoveInputMethodExtension(const std::string& id) OVERRIDE;
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
index 66f2bb7..f08cbf9 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl_unittest.cc
@@ -1003,11 +1003,13 @@ TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) {
// Add two Extension IMEs.
std::vector<std::string> layouts;
layouts.push_back("us");
+ std::vector<std::string> languages;
+ languages.push_back("en-US");
manager_->AddInputMethodExtension(
extension_ime_util::GetInputMethodID("deadbeef", "engine_id"),
"deadbeef input method",
layouts,
- "en-US",
+ languages,
GURL(),
NULL);
@@ -1034,7 +1036,7 @@ TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) {
extension_ime_util::GetInputMethodID("cafebabe", "engine_id"),
"cafebabe input method",
layouts,
- "en-US",
+ languages,
GURL(),
NULL);
EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
@@ -1083,11 +1085,13 @@ TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) {
// Add an Extension IME.
std::vector<std::string> layouts;
layouts.push_back("us(dvorak)");
+ std::vector<std::string> languages;
+ languages.push_back("en-US");
manager_->AddInputMethodExtension(
extension_ime_util::GetInputMethodID("deadbeef", "engine_id"),
"deadbeef input method",
layouts,
- "en-US",
+ languages,
GURL(),
NULL);
// Extension IME is not enabled by default.
diff --git a/chrome/browser/chromeos/input_method/input_method_util.cc b/chrome/browser/chromeos/input_method/input_method_util.cc
index cc1c4b0..f70f0eb 100644
--- a/chrome/browser/chromeos/input_method/input_method_util.cc
+++ b/chrome/browser/chromeos/input_method/input_method_util.cc
@@ -402,7 +402,8 @@ string16 InputMethodUtil::GetInputMethodShortName(
if (text.empty()) {
const size_t kMaxLanguageNameLen = 2;
- const std::string language_code = input_method.language_code();
+ DCHECK(!input_method.language_codes().empty());
+ const std::string language_code = input_method.language_codes().at(0);
text = StringToUpperASCII(UTF8ToUTF16(language_code)).substr(
0, kMaxLanguageNameLen);
}
@@ -441,7 +442,8 @@ string16 InputMethodUtil::GetInputMethodLongName(
// Indic languages: they share "Standard Input Method".
const string16 standard_input_method_text = delegate_->GetLocalizedString(
IDS_OPTIONS_SETTINGS_LANGUAGES_M17N_STANDARD_INPUT_METHOD);
- const std::string language_code = input_method.language_code();
+ DCHECK(!input_method.language_codes().empty());
+ const std::string language_code = input_method.language_codes().at(0);
string16 text = TranslateString(input_method.id());
if (text == standard_input_method_text ||
@@ -591,7 +593,8 @@ void InputMethodUtil::GetLanguageCodesFromInputMethodIds(
DVLOG(1) << "Unknown input method ID: " << input_method_ids[i];
continue;
}
- const std::string language_code = input_method->language_code();
+ DCHECK(!input_method->language_codes().empty());
+ const std::string language_code = input_method->language_codes().at(0);
// Add it if it's not already present.
if (std::count(out_language_codes->begin(), out_language_codes->end(),
language_code) == 0) {
@@ -617,7 +620,8 @@ void InputMethodUtil::SetComponentExtensions(
component_extension_ime_id_to_descriptor_.clear();
for (size_t i = 0; i < imes.size(); ++i) {
const InputMethodDescriptor& input_method = imes.at(i);
- const std::string language_code = input_method.language_code();
+ DCHECK(!input_method.language_codes().empty());
+ const std::string language_code = input_method.language_codes().at(0);
id_to_language_code_.insert(
std::make_pair(input_method.id(), language_code));
id_to_descriptor_.insert(
@@ -628,10 +632,12 @@ void InputMethodUtil::SetComponentExtensions(
InputMethodDescriptor InputMethodUtil::GetFallbackInputMethodDescriptor() {
std::vector<std::string> layouts;
layouts.push_back("us");
+ std::vector<std::string> languages;
+ languages.push_back("en-US");
return InputMethodDescriptor("xkb:us::eng",
"",
layouts,
- "en-US",
+ languages,
GURL()); // options page, not available.
}
@@ -650,12 +656,15 @@ void InputMethodUtil::ReloadInternalMaps() {
for (size_t i = 0; i < supported_input_methods_->size(); ++i) {
const InputMethodDescriptor& input_method =
supported_input_methods_->at(i);
- const std::string language_code = input_method.language_code();
- language_code_to_ids_.insert(
- std::make_pair(language_code, input_method.id()));
- // Remember the pairs.
- id_to_language_code_.insert(
- std::make_pair(input_method.id(), language_code));
+ const std::vector<std::string>& language_codes =
+ input_method.language_codes();
+ for (size_t i = 0; i < language_codes.size(); ++i) {
+ language_code_to_ids_.insert(
+ std::make_pair(language_codes[i], input_method.id()));
+ // Remember the pairs.
+ id_to_language_code_.insert(
+ std::make_pair(input_method.id(), language_codes[i]));
+ }
id_to_descriptor_.insert(
std::make_pair(input_method.id(), input_method));
if (IsKeyboardLayout(input_method.id())) {
diff --git a/chrome/browser/chromeos/input_method/input_method_util_unittest.cc b/chrome/browser/chromeos/input_method/input_method_util_unittest.cc
index a6b7140..7a4a33f 100644
--- a/chrome/browser/chromeos/input_method/input_method_util_unittest.cc
+++ b/chrome/browser/chromeos/input_method/input_method_util_unittest.cc
@@ -54,10 +54,12 @@ class InputMethodUtilTest : public testing::Test {
const std::string& language_code) {
std::vector<std::string> layouts;
layouts.push_back(raw_layout);
+ std::vector<std::string> languages;
+ languages.push_back(language_code);
return InputMethodDescriptor(id,
"",
layouts,
- language_code,
+ languages,
GURL()); // options page url
}
@@ -329,7 +331,8 @@ TEST_F(InputMethodUtilTest, TestGetInputMethodDescriptorFromId) {
EXPECT_EQ("us", descriptor->GetPreferredKeyboardLayout());
// This used to be "zh" but now we have "zh-CN" in input_methods.h,
// hence this should be zh-CN now.
- EXPECT_EQ("zh-CN", descriptor->language_code());
+ ASSERT_TRUE(!descriptor->language_codes().empty());
+ EXPECT_EQ("zh-CN", descriptor->language_codes().at(0));
}
TEST_F(InputMethodUtilTest, TestGetInputMethodIdsForLanguageCode) {
@@ -465,7 +468,7 @@ TEST_F(InputMethodUtilTest, TestGetLanguageCodesFromInputMethodIds) {
TEST_F(InputMethodUtilTest, TestIBusInputMethodText) {
for (size_t i = 0; i < util_.supported_input_methods_->size(); ++i) {
const std::string language_code =
- util_.supported_input_methods_->at(i).language_code();
+ util_.supported_input_methods_->at(i).language_codes().at(0);
const string16 display_name =
l10n_util::GetDisplayNameForLocale(language_code, "en", false);
// Only two formats, like "fr" (lower case) and "en-US" (lower-upper), are
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_manager.cc b/chrome/browser/chromeos/input_method/mock_input_method_manager.cc
index bf83f20..9efe97f 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_manager.cc
+++ b/chrome/browser/chromeos/input_method/mock_input_method_manager.cc
@@ -87,7 +87,7 @@ void MockInputMethodManager::AddInputMethodExtension(
const std::string& id,
const std::string& name,
const std::vector<std::string>& layouts,
- const std::string& language,
+ const std::vector<std::string>& languages,
const GURL& options_url,
InputMethodEngine* instance) {
}
@@ -123,7 +123,7 @@ InputMethodDescriptor MockInputMethodManager::GetCurrentInputMethod() const {
return InputMethodDescriptor(current_input_method_id_,
descriptor.name(),
descriptor.keyboard_layouts(),
- descriptor.language_code(),
+ descriptor.language_codes(),
GURL()); // options page url.
}
return descriptor;
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_manager.h b/chrome/browser/chromeos/input_method/mock_input_method_manager.h
index cbefc92..77d760d 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_manager.h
+++ b/chrome/browser/chromeos/input_method/mock_input_method_manager.h
@@ -48,7 +48,7 @@ class MockInputMethodManager : public InputMethodManager {
const std::string& id,
const std::string& name,
const std::vector<std::string>& layouts,
- const std::string& language,
+ const std::vector<std::string>& languages,
const GURL& options_url,
InputMethodEngine* instance) OVERRIDE;
virtual void RemoveInputMethodExtension(const std::string& id) OVERRIDE;
diff --git a/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc
index 0629f69..315738b 100644
--- a/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc
+++ b/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc
@@ -161,7 +161,6 @@ ListValue* CrosLanguageOptionsHandler::GetInputMethodList(
for (size_t i = 0; i < descriptors.size(); ++i) {
const input_method::InputMethodDescriptor& descriptor =
descriptors[i];
- const std::string language_code = descriptor.language_code();
const std::string display_name =
manager->GetInputMethodUtil()->GetInputMethodDisplayNameFromId(
descriptor.id());
@@ -171,16 +170,18 @@ ListValue* CrosLanguageOptionsHandler::GetInputMethodList(
// One input method can be associated with multiple languages, hence
// we use a dictionary here.
- DictionaryValue* language_codes = new DictionaryValue();
- language_codes->SetBoolean(language_code, true);
+ DictionaryValue* languages = new DictionaryValue();
+ for (size_t i = 0; i < descriptor.language_codes().size(); ++i) {
+ languages->SetBoolean(descriptor.language_codes().at(i), true);
+ }
// Check extra languages to see if there are languages associated with
// this input method. If these are present, add these.
const std::vector<std::string> extra_language_codes =
manager->GetInputMethodUtil()->GetExtraLanguageCodesFromId(
descriptor.id());
for (size_t j = 0; j < extra_language_codes.size(); ++j)
- language_codes->SetBoolean(extra_language_codes[j], true);
- dictionary->Set("languageCodeSet", language_codes);
+ languages->SetBoolean(extra_language_codes[j], true);
+ dictionary->Set("languageCodeSet", languages);
input_method_list->Append(dictionary);
}
@@ -198,8 +199,10 @@ ListValue* CrosLanguageOptionsHandler::GetLanguageListInternal(
// Collect the language codes from the supported input methods.
for (size_t i = 0; i < descriptors.size(); ++i) {
const input_method::InputMethodDescriptor& descriptor = descriptors[i];
- const std::string language_code = descriptor.language_code();
- language_codes.insert(language_code);
+ const std::vector<std::string>& languages =
+ descriptor.language_codes();
+ for (size_t i = 0; i < languages.size(); ++i)
+ language_codes.insert(languages[i]);
}
// Collect the language codes from extra languages.
const std::vector<std::string> extra_language_codes =
@@ -316,7 +319,8 @@ base::ListValue*
dictionary->SetString("displayName", descriptor.name());
dictionary->SetString("optionsPage", descriptor.options_page_url().spec());
scoped_ptr<DictionaryValue> language_codes(new DictionaryValue());
- language_codes->SetBoolean(descriptor.language_code(), true);
+ for (size_t i = 0; i < descriptor.language_codes().size(); ++i)
+ language_codes->SetBoolean(descriptor.language_codes().at(i), true);
dictionary->Set("languageCodeSet", language_codes.release());
ime_ids_list->Append(dictionary.release());
}
diff --git a/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler_unittest.cc b/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler_unittest.cc
index fab2730..b51e0f0 100644
--- a/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler_unittest.cc
+++ b/chrome/browser/ui/webui/options/chromeos/cros_language_options_handler_unittest.cc
@@ -45,10 +45,12 @@ class CrosLanguageOptionsHandlerTest : public testing::Test {
const std::string& language_code) {
std::vector<std::string> layouts;
layouts.push_back(raw_layout);
+ std::vector<std::string> languages;
+ languages.push_back(language_code);
return InputMethodDescriptor(id,
"", // name
layouts,
- language_code,
+ languages,
GURL()); // options page url
}
};
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.
}