summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-19 07:59:01 +0000
committerzork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-19 07:59:01 +0000
commit20f00091826b936b317cf1268aac0cd763b3cfd4 (patch)
treead21f06df708fda9ec84bd4e7a2bbb9ae02d35af
parentc77f4b8e588862e568feb8a659edf653eb17b14b (diff)
downloadchromium_src-20f00091826b936b317cf1268aac0cd763b3cfd4.zip
chromium_src-20f00091826b936b317cf1268aac0cd763b3cfd4.tar.gz
chromium_src-20f00091826b936b317cf1268aac0cd763b3cfd4.tar.bz2
Display the correct name in the Language menu for Extension APIs
R=yusukes@chromium.org BUG=chromium-os:21354 TEST=Install an IME extension. Check that the name shows up correctly. Review URL: http://codereview.chromium.org/8308017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106244 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller.cc19
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller.h7
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller_unittest.cc2
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager.cc2
-rw-r--r--chrome/browser/chromeos/input_method/input_method_util_unittest.cc3
-rw-r--r--chrome/browser/chromeos/status/input_method_menu.cc11
-rw-r--r--chrome/browser/chromeos/status/input_method_menu_unittest.cc3
-rw-r--r--chrome/browser/ui/webui/options/language_options_handler_unittest.cc3
8 files changed, 38 insertions, 12 deletions
diff --git a/chrome/browser/chromeos/input_method/ibus_controller.cc b/chrome/browser/chromeos/input_method/ibus_controller.cc
index a613e7d..fde64a6 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller.cc
+++ b/chrome/browser/chromeos/input_method/ibus_controller.cc
@@ -37,6 +37,7 @@ InputMethodDescriptors* GetSupportedInputMethodsInternal(
input_methods->push_back(InputMethodDescriptor(
whitelist,
kIBusEngines[i].input_method_id,
+ "",
kIBusEngines[i].xkb_layout_id,
kIBusEngines[i].language_code));
}
@@ -76,9 +77,11 @@ class InputMethodWhitelist {
InputMethodDescriptor::InputMethodDescriptor(
const InputMethodWhitelist& whitelist,
const std::string& id,
+ const std::string& name,
const std::string& raw_layout,
const std::string& language_code)
: id_(id),
+ name_(name),
language_code_(language_code) {
keyboard_layout_ = kFallbackLayout;
base::SplitString(raw_layout, ',', &virtual_keyboard_layouts_);
@@ -103,10 +106,12 @@ InputMethodDescriptor::~InputMethodDescriptor() {
InputMethodDescriptor::InputMethodDescriptor(
const std::string& in_id,
+ const std::string& in_name,
const std::string& in_keyboard_layout,
const std::string& in_virtual_keyboard_layouts,
const std::string& in_language_code)
: id_(in_id),
+ name_(in_name),
keyboard_layout_(in_keyboard_layout),
language_code_(in_language_code) {
DCHECK(keyboard_layout_.find(",") == std::string::npos);
@@ -118,12 +123,13 @@ InputMethodDescriptor::InputMethodDescriptor(
InputMethodDescriptor
InputMethodDescriptor::GetFallbackInputMethodDescriptor() {
return InputMethodDescriptor(
- "xkb:us::eng", kFallbackLayout, kFallbackLayout, "eng");
+ "xkb:us::eng", "", kFallbackLayout, kFallbackLayout, "eng");
}
std::string InputMethodDescriptor::ToString() const {
std::stringstream stream;
stream << "id=" << id()
+ << ", name=" << name()
<< ", keyboard_layout=" << keyboard_layout()
<< ", virtual_keyboard_layouts=" << virtual_keyboard_layouts_.size()
<< ", language_code=" << language_code();
@@ -770,9 +776,11 @@ class IBusControllerImpl : public IBusController {
virtual InputMethodDescriptor CreateInputMethodDescriptor(
const std::string& id,
+ const std::string& name,
const std::string& raw_layout,
const std::string& language_code) {
- return InputMethodDescriptor(whitelist_, id, raw_layout, language_code);
+ return InputMethodDescriptor(whitelist_, id, name, raw_layout,
+ language_code);
}
virtual InputMethodDescriptors* GetSupportedInputMethods() {
@@ -994,6 +1002,7 @@ class IBusControllerImpl : public IBusController {
if (engine_info) {
current_input_method = CreateInputMethodDescriptor(
engine_info->input_method_id,
+ "",
engine_info->xkb_layout_id,
engine_info->language_code);
} else {
@@ -1211,7 +1220,7 @@ class IBusControllerImpl : public IBusController {
const gchar* layout = ibus_engine_desc_get_layout(engine_desc);
const gchar* language = ibus_engine_desc_get_language(engine_desc);
if (whitelist_.InputMethodIdIsWhitelisted(name)) {
- out->push_back(CreateInputMethodDescriptor(name, layout, language));
+ out->push_back(CreateInputMethodDescriptor(name, "", layout, language));
VLOG(1) << name << " (preloaded)";
}
}
@@ -1319,9 +1328,11 @@ class IBusControllerStubImpl : public IBusController {
// IBusControllerImpl.
virtual InputMethodDescriptor CreateInputMethodDescriptor(
const std::string& id,
+ const std::string& name,
const std::string& raw_layout,
const std::string& language_code) {
- return InputMethodDescriptor(whitelist_, id, raw_layout, language_code);
+ return InputMethodDescriptor(whitelist_, id, name, raw_layout,
+ language_code);
}
// See the comment above. We have to keep the implementation the same as
// IBusControllerImpl.
diff --git a/chrome/browser/chromeos/input_method/ibus_controller.h b/chrome/browser/chromeos/input_method/ibus_controller.h
index 7a76af1..432f16e 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller.h
+++ b/chrome/browser/chromeos/input_method/ibus_controller.h
@@ -26,6 +26,7 @@ class InputMethodDescriptor {
InputMethodDescriptor();
InputMethodDescriptor(const InputMethodWhitelist& whitelist,
const std::string& in_id,
+ const std::string& in_name,
const std::string& in_raw_layout,
const std::string& in_language_code);
~InputMethodDescriptor();
@@ -38,6 +39,7 @@ class InputMethodDescriptor {
std::string ToString() const;
const std::string& id() const { return id_; }
+ const std::string& name() const { return name_; }
const std::string& keyboard_layout() const { return keyboard_layout_; }
const std::vector<std::string>& virtual_keyboard_layouts() const {
return virtual_keyboard_layouts_;
@@ -52,6 +54,7 @@ class InputMethodDescriptor {
private:
// For GetFallbackInputMethodDescriptor(). Use the public constructor instead.
InputMethodDescriptor(const std::string& in_id,
+ const std::string& in_name,
const std::string& in_keyboard_layout,
const std::string& in_virtual_keyboard_layouts,
const std::string& in_language_code);
@@ -59,6 +62,9 @@ class InputMethodDescriptor {
// An ID that identifies an input method engine (e.g., "t:latn-post",
// "pinyin", "hangul").
std::string id_;
+ // A name used to specify the user-visible name of this input method. It is
+ // only used by extension IMEs, and should be blank for internal IMEs.
+ std::string name_;
// A preferred physical keyboard layout for the input method (e.g., "us",
// "us(dvorak)", "jp"). Comma separated layout names do NOT appear.
std::string keyboard_layout_;
@@ -250,6 +256,7 @@ class IBusController {
// (e.g. "special-us-virtual-keyboard-for-the-input-method,us")
virtual InputMethodDescriptor CreateInputMethodDescriptor(
const std::string& id,
+ const std::string& name,
const std::string& raw_layout,
const std::string& language_code) = 0;
diff --git a/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc b/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc
index 9f91b498..9ee8cea 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc
+++ b/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc
@@ -23,7 +23,7 @@ namespace {
InputMethodDescriptor GetDesc(IBusController* controller,
const std::string& raw_layout) {
return controller->CreateInputMethodDescriptor(
- "id", raw_layout, "language_code");
+ "id", "", raw_layout, "language_code");
}
} // namespace
diff --git a/chrome/browser/chromeos/input_method/input_method_manager.cc b/chrome/browser/chromeos/input_method/input_method_manager.cc
index 107cc33..efed586 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager.cc
@@ -397,7 +397,7 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
std::string virtual_layouts = JoinString(layouts, ',');
extra_input_method_ids_[id] = ibus_controller_->CreateInputMethodDescriptor(
- id, virtual_layouts, language);
+ id, name, virtual_layouts, language);
active_input_method_ids_.push_back(id);
// TODO(yusukes): Call UpdateInputMethodSpecificHotkeys() here once IME
// extension supports hotkeys.
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 fae521b..dac7b72 100644
--- a/chrome/browser/chromeos/input_method/input_method_util_unittest.cc
+++ b/chrome/browser/chromeos/input_method/input_method_util_unittest.cc
@@ -38,7 +38,8 @@ InputMethodDescriptor GetDesc(IBusController* controller,
const std::string& id,
const std::string& raw_layout,
const std::string& language_code) {
- return controller->CreateInputMethodDescriptor(id, raw_layout, language_code);
+ return controller->CreateInputMethodDescriptor(id, "", raw_layout,
+ language_code);
}
class TestableInputMethodUtil : public InputMethodUtil {
diff --git a/chrome/browser/chromeos/status/input_method_menu.cc b/chrome/browser/chromeos/status/input_method_menu.cc
index 18eaf44..f91fabd 100644
--- a/chrome/browser/chromeos/status/input_method_menu.cc
+++ b/chrome/browser/chromeos/status/input_method_menu.cc
@@ -659,6 +659,11 @@ string16 InputMethodMenu::GetTextForIndicator(
string16 InputMethodMenu::GetTextForMenu(
const input_method::InputMethodDescriptor& input_method) {
+ if (!input_method.name().empty()) {
+ // If the descriptor has a name, use it.
+ return UTF8ToUTF16(input_method.name());
+ }
+
// We don't show language here. Name of keyboard layout or input method
// usually imply (or explicitly include) its language.
@@ -678,9 +683,9 @@ string16 InputMethodMenu::GetTextForMenu(
string16 text =
manager->GetInputMethodUtil()->TranslateString(input_method.id());
if (text == standard_input_method_text ||
- language_code == "de" ||
- language_code == "fr" ||
- language_code == "nl") {
+ language_code == "de" ||
+ language_code == "fr" ||
+ language_code == "nl") {
text = GetLanguageName(language_code) + UTF8ToUTF16(" - ") + text;
}
diff --git a/chrome/browser/chromeos/status/input_method_menu_unittest.cc b/chrome/browser/chromeos/status/input_method_menu_unittest.cc
index a2686e1..ed33f5a 100644
--- a/chrome/browser/chromeos/status/input_method_menu_unittest.cc
+++ b/chrome/browser/chromeos/status/input_method_menu_unittest.cc
@@ -21,7 +21,8 @@ InputMethodDescriptor GetDesc(IBusController* controller,
const std::string& id,
const std::string& raw_layout,
const std::string& language_code) {
- return controller->CreateInputMethodDescriptor(id, raw_layout, language_code);
+ return controller->CreateInputMethodDescriptor(id, "", raw_layout,
+ language_code);
}
} // namespace
diff --git a/chrome/browser/ui/webui/options/language_options_handler_unittest.cc b/chrome/browser/ui/webui/options/language_options_handler_unittest.cc
index f91afe8..c7d0fa4 100644
--- a/chrome/browser/ui/webui/options/language_options_handler_unittest.cc
+++ b/chrome/browser/ui/webui/options/language_options_handler_unittest.cc
@@ -26,7 +26,8 @@ static InputMethodDescriptor GetDesc(IBusController* controller,
const std::string& id,
const std::string& raw_layout,
const std::string& language_code) {
- return controller->CreateInputMethodDescriptor(id, raw_layout, language_code);
+ return controller->CreateInputMethodDescriptor(id, "", raw_layout,
+ language_code);
}
static InputMethodDescriptors CreateInputMethodDescriptors() {