summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorsatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 14:57:52 +0000
committersatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 14:57:52 +0000
commitcab247c9edbee48c440c5166fa7dec67cca25f49 (patch)
treec9843e1b3c148d794094ed06f116beca3adfa610 /chrome
parentbe684c6fc1f8c6aebd39f050128e471f091d8d97 (diff)
downloadchromium_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.cc23
-rw-r--r--chrome/browser/chromeos/cros/language_library.h8
-rw-r--r--chrome/browser/chromeos/cros/language_library_test.cc28
-rw-r--r--chrome/browser/chromeos/options/language_config_view.cc29
-rw-r--r--chrome/browser/chromeos/options/language_config_view.h10
-rw-r--r--chrome/browser/chromeos/options/language_config_view_test.cc17
-rw-r--r--chrome/chrome_tests.gypi1
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',