diff options
author | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-07 14:57:52 +0000 |
---|---|---|
committer | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-07 14:57:52 +0000 |
commit | cab247c9edbee48c440c5166fa7dec67cca25f49 (patch) | |
tree | c9843e1b3c148d794094ed06f116beca3adfa610 /chrome | |
parent | be684c6fc1f8c6aebd39f050128e471f091d8d97 (diff) | |
download | chromium_src-cab247c9edbee48c440c5166fa7dec67cca25f49.zip chromium_src-cab247c9edbee48c440c5166fa7dec67cca25f49.tar.gz chromium_src-cab247c9edbee48c440c5166fa7dec67cca25f49.tar.bz2 |
Move NormalizeLanguageCode() and IsKeyboardLayout() to LanguageLibrary.
So that we can use these functions outside of LanguageConfigView.
TEST=unit_tests
BUG=none
Review URL: http://codereview.chromium.org/1562015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43835 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/chromeos/cros/language_library.cc | 23 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/language_library.h | 8 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/language_library_test.cc | 28 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_config_view.cc | 29 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_config_view.h | 10 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/language_config_view_test.cc | 17 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 1 |
7 files changed, 63 insertions, 53 deletions
diff --git a/chrome/browser/chromeos/cros/language_library.cc b/chrome/browser/chromeos/cros/language_library.cc index bc6d413..78e3c42 100644 --- a/chrome/browser/chromeos/cros/language_library.cc +++ b/chrome/browser/chromeos/cros/language_library.cc @@ -8,6 +8,7 @@ #include "base/string_util.h" #include "chrome/browser/chrome_thread.h" #include "chrome/browser/chromeos/cros/cros_library.h" +#include "third_party/icu/public/common/unicode/uloc.h" // Allows InvokeLater without adding refcounting. This class is a Singleton and // won't be deleted until it's last InvokeLater is run. @@ -41,6 +42,28 @@ bool FindAndUpdateProperty(const chromeos::ImeProperty& new_prop, namespace chromeos { +std::string LanguageLibrary::NormalizeLanguageCode( + const std::string& language_code) { + // We only handle two-letter codes here. + // Some ibus engines return locale codes like "zh_CN" as language codes, + // and we don't want to rewrite this to "zho". + if (language_code.size() != 2) { + return language_code; + } + const char* three_letter_code = uloc_getISO3Language( + language_code.c_str()); + if (three_letter_code && strlen(three_letter_code) > 0) { + return three_letter_code; + } + return language_code; +} + +bool LanguageLibrary::IsKeyboardLayout( + const std::string& input_method_id) { + const bool case_insensitive = false; + return StartsWithASCII(input_method_id, "xkb:", case_insensitive); +} + LanguageLibraryImpl::LanguageLibraryImpl() : language_status_connection_(NULL) { } diff --git a/chrome/browser/chromeos/cros/language_library.h b/chrome/browser/chromeos/cros/language_library.h index 0feb16b..08a4111 100644 --- a/chrome/browser/chromeos/cros/language_library.h +++ b/chrome/browser/chromeos/cros/language_library.h @@ -90,6 +90,14 @@ class LanguageLibrary { virtual const ImePropertyList& current_ime_properties() const = 0; + // Normalizes the language code and returns the normalized version. + // The function concverts a two-letter language code to its + // corresponding three-letter code like "ja" => "jpn". Otherwise, + // returns the given language code as-is. + static std::string NormalizeLanguageCode(const std::string& language_code); + + // Returns true if the given input method id is for a keyboard layout. + static bool IsKeyboardLayout(const std::string& input_method_id); }; // This class handles the interaction with the ChromeOS language library APIs. diff --git a/chrome/browser/chromeos/cros/language_library_test.cc b/chrome/browser/chromeos/cros/language_library_test.cc new file mode 100644 index 0000000..f921674 --- /dev/null +++ b/chrome/browser/chromeos/cros/language_library_test.cc @@ -0,0 +1,28 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/cros/language_library.h" +#include <string> +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { + +TEST(LanguageLibraryTest, NormalizeLanguageCode) { + // TODO(yusukes): test all language codes that IBus provides. + EXPECT_EQ("jpn", + LanguageLibrary::NormalizeLanguageCode("ja")); + EXPECT_EQ("jpn", + LanguageLibrary::NormalizeLanguageCode("jpn")); + EXPECT_EQ("t", + LanguageLibrary::NormalizeLanguageCode("t")); + EXPECT_EQ("zh_CN", + LanguageLibrary::NormalizeLanguageCode("zh_CN")); +} + +TEST(LanguageLibraryTest, IsKeyboardLayout) { + EXPECT_TRUE(LanguageLibrary::IsKeyboardLayout("xkb:us::eng")); + EXPECT_FALSE(LanguageLibrary::IsKeyboardLayout("anthy")); +} + +} // namespace chromeos diff --git a/chrome/browser/chromeos/options/language_config_view.cc b/chrome/browser/chromeos/options/language_config_view.cc index f7e51eb..447a3a5 100644 --- a/chrome/browser/chromeos/options/language_config_view.cc +++ b/chrome/browser/chromeos/options/language_config_view.cc @@ -21,7 +21,6 @@ #include "gfx/font.h" #include "grit/generated_resources.h" #include "grit/locale_settings.h" -#include "third_party/icu/public/common/unicode/uloc.h" #include "views/controls/button/radio_button.h" #include "views/controls/combobox/combobox.h" #include "views/controls/label.h" @@ -320,7 +319,7 @@ views::View* LanguageConfigView::CreatePerLanguageConfigView( const std::string display_name = GetDisplayNameFromId(input_method_id); if (language_code == target_language_code && // For now, we ignore keyboard layouts. - !IsKeyboardLayout(input_method_id)) { + !LanguageLibrary::IsKeyboardLayout(input_method_id)) { layout->StartRow(0, kDoubleColumnSetId); InputMethodRadioButton* radio_button = new InputMethodRadioButton(UTF8ToWide(display_name), @@ -461,8 +460,8 @@ void LanguageConfigView::InitInputMethodIdMaps() { // Normalize the language code as some engines return three-letter // codes like "jpn" wheres some other engines return two-letter codes // like "ja". - const std::string language_code = NormalizeLanguageCode( - input_method.language_code); + std::string language_code = + LanguageLibrary::NormalizeLanguageCode(input_method.language_code); id_to_language_code_map_.insert( std::make_pair(input_method.id, language_code)); id_to_display_name_map_.insert( @@ -700,26 +699,4 @@ std::wstring LanguageConfigView::MaybeRewriteLanguageName( return language_name; } -std::string LanguageConfigView::NormalizeLanguageCode( - const std::string& language_code) { - // We only handle two-letter codes here. - // Some ibus engines return locale codes like "zh_CN" as language codes, - // and we don't want to rewrite this to "zho". - if (language_code.size() != 2) { - return language_code; - } - const char* three_letter_code = uloc_getISO3Language( - language_code.c_str()); - if (three_letter_code && strlen(three_letter_code) > 0) { - return three_letter_code; - } - return language_code; -} - -bool LanguageConfigView::IsKeyboardLayout( - const std::string& input_method_id) { - const bool case_insensitive = false; - return StartsWithASCII(input_method_id, "xkb:", case_insensitive); -} - } // namespace chromeos diff --git a/chrome/browser/chromeos/options/language_config_view.h b/chrome/browser/chromeos/options/language_config_view.h index 03fc711..ac3c170 100644 --- a/chrome/browser/chromeos/options/language_config_view.h +++ b/chrome/browser/chromeos/options/language_config_view.h @@ -83,16 +83,6 @@ class LanguageConfigView : public TableModel, static std::wstring MaybeRewriteLanguageName( const std::wstring& language_name); - // Normalizes the language code and returns the normalized version. - // The function concverts a two-letter language code to its - // corresponding three-letter code like "ja" => "jpn". Otherwise, - // returns the given language code as-is. - static std::string NormalizeLanguageCode( - const std::string& language_code); - - // Returns true if the given input method id is for a keyboard layout. - static bool IsKeyboardLayout(const std::string& input_method_id); - private: // Initializes the input method config view. void InitInputMethodConfigViewMap(); diff --git a/chrome/browser/chromeos/options/language_config_view_test.cc b/chrome/browser/chromeos/options/language_config_view_test.cc index 2d254cb..eaea4271 100644 --- a/chrome/browser/chromeos/options/language_config_view_test.cc +++ b/chrome/browser/chromeos/options/language_config_view_test.cc @@ -15,21 +15,4 @@ TEST(LanguageConfigViewTest, MaybeRewriteLanguageName) { LanguageConfigView::MaybeRewriteLanguageName(L"t")); } -TEST(LanguageConfigViewTest, NormalizeLanguageCode) { - // TODO(yusukes): test all language codes that IBus provides. - EXPECT_EQ("jpn", - LanguageConfigView::NormalizeLanguageCode("ja")); - EXPECT_EQ("jpn", - LanguageConfigView::NormalizeLanguageCode("jpn")); - EXPECT_EQ("t", - LanguageConfigView::NormalizeLanguageCode("t")); - EXPECT_EQ("zh_CN", - LanguageConfigView::NormalizeLanguageCode("zh_CN")); -} - -TEST(LanguageConfigViewTest, IsKeyboardLayout) { - EXPECT_TRUE(LanguageConfigView::IsKeyboardLayout("xkb:us::eng")); - EXPECT_FALSE(LanguageConfigView::IsKeyboardLayout("anthy")); -} - } // namespace chromeos diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index e236955..f710254 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -588,6 +588,7 @@ 'browser/chromeos/external_cookie_handler_unittest.cc', 'browser/chromeos/external_metrics_unittest.cc', 'browser/chromeos/gview_request_interceptor_unittest.cc', + 'browser/chromeos/cros/language_library_test.cc', 'browser/chromeos/login/cookie_fetcher_unittest.cc', 'browser/chromeos/login/google_authenticator_unittest.cc', 'browser/chromeos/login/mock_auth_response_handler.cc', |