summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authoryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-14 02:46:54 +0000
committeryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-14 02:46:54 +0000
commit495caf3da866d8967176bf4102532dba412a1012 (patch)
tree917e3f49e978bf0f592b72bf18c581038e16aeeb /chrome/browser
parentd9fbd894c8088ec6187f000ee07ef45c411e4b36 (diff)
downloadchromium_src-495caf3da866d8967176bf4102532dba412a1012.zip
chromium_src-495caf3da866d8967176bf4102532dba412a1012.tar.gz
chromium_src-495caf3da866d8967176bf4102532dba412a1012.tar.bz2
Show "Hit Shift-Alt to switch keyboard layout" hint string in the message bubble
if more than one keyboard are active. BUG=chromium-os:3936 TEST=manual Review URL: http://codereview.chromium.org/2787008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49666 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/chromeos/cros/language_library.cc5
-rw-r--r--chrome/browser/chromeos/cros/language_library.h4
-rw-r--r--chrome/browser/chromeos/cros/mock_language_library.h1
-rw-r--r--chrome/browser/chromeos/login/screen_locker.cc4
4 files changed, 14 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/cros/language_library.cc b/chrome/browser/chromeos/cros/language_library.cc
index ccf37d7..8104b09 100644
--- a/chrome/browser/chromeos/cros/language_library.cc
+++ b/chrome/browser/chromeos/cros/language_library.cc
@@ -183,6 +183,11 @@ chromeos::InputMethodDescriptors* LanguageLibraryImpl::GetActiveInputMethods() {
return result;
}
+size_t LanguageLibraryImpl::GetNumActiveInputMethods() {
+ scoped_ptr<InputMethodDescriptors> input_methods(GetActiveInputMethods());
+ return input_methods->size();
+}
+
chromeos::InputMethodDescriptors*
LanguageLibraryImpl::GetSupportedInputMethods() {
chromeos::InputMethodDescriptors* result = NULL;
diff --git a/chrome/browser/chromeos/cros/language_library.h b/chrome/browser/chromeos/cros/language_library.h
index 3cf3d3f..c36bdb9 100644
--- a/chrome/browser/chromeos/cros/language_library.h
+++ b/chrome/browser/chromeos/cros/language_library.h
@@ -38,6 +38,9 @@ class LanguageLibrary {
// returns a fallback input method list (and never returns NULL).
virtual InputMethodDescriptors* GetActiveInputMethods() = 0;
+ // Returns the number of active input methods.
+ virtual size_t GetNumActiveInputMethods() = 0;
+
// Returns the list of input methods we support, including ones not active.
// If the cros library is not found or IBus/DBus daemon is not alive, this
// function returns a fallback input method list (and never returns NULL).
@@ -125,6 +128,7 @@ class LanguageLibraryImpl : public LanguageLibrary {
virtual void AddObserver(Observer* observer);
virtual void RemoveObserver(Observer* observer);
virtual InputMethodDescriptors* GetActiveInputMethods();
+ virtual size_t GetNumActiveInputMethods();
virtual InputMethodDescriptors* GetSupportedInputMethods();
virtual void ChangeInputMethod(const std::string& input_method_id);
virtual void SetImePropertyActivated(const std::string& key,
diff --git a/chrome/browser/chromeos/cros/mock_language_library.h b/chrome/browser/chromeos/cros/mock_language_library.h
index 2e9f9f5..101154f 100644
--- a/chrome/browser/chromeos/cros/mock_language_library.h
+++ b/chrome/browser/chromeos/cros/mock_language_library.h
@@ -21,6 +21,7 @@ class MockLanguageLibrary : public LanguageLibrary {
MOCK_METHOD1(RemoveObserver, void(Observer*));
MOCK_METHOD0(GetActiveInputMethods, InputMethodDescriptors*(void));
+ MOCK_METHOD0(GetNumActiveInputMethods, size_t(void));
MOCK_METHOD0(GetSupportedInputMethods, InputMethodDescriptors*(void));
MOCK_METHOD1(ChangeInputMethod, void(const std::string&));
MOCK_METHOD2(SetImePropertyActivated, void(const std::string&, bool));
diff --git a/chrome/browser/chromeos/login/screen_locker.cc b/chrome/browser/chromeos/login/screen_locker.cc
index 3c30fc2..e9f637e 100644
--- a/chrome/browser/chromeos/login/screen_locker.cc
+++ b/chrome/browser/chromeos/login/screen_locker.cc
@@ -410,6 +410,10 @@ void ScreenLocker::OnLoginFailure(const std::string& error) {
if (!error.empty())
msg += L"\n" + ASCIIToWide(error);
+ LanguageLibrary* language_library = CrosLibrary::Get()->GetLanguageLibrary();
+ if (language_library->GetNumActiveInputMethods() > 1)
+ msg += L"\n" + l10n_util::GetString(IDS_LOGIN_ERROR_KEYBOARD_SWITCH_HINT);
+
error_info_ = MessageBubble::ShowNoGrab(
lock_window_,
rect,