diff options
| author | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-19 07:59:01 +0000 |
|---|---|---|
| committer | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-19 07:59:01 +0000 |
| commit | 20f00091826b936b317cf1268aac0cd763b3cfd4 (patch) | |
| tree | ad21f06df708fda9ec84bd4e7a2bbb9ae02d35af | |
| parent | c77f4b8e588862e568feb8a659edf653eb17b14b (diff) | |
| download | chromium_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
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() { |
