summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-15 01:50:03 +0000
committeryusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-15 01:50:03 +0000
commit0b6da80b684557f26cab8986fa5e4995731160fc (patch)
tree19ff1ee381976ef4c8af7a02ea1c18d7df98a72b
parenta3cd44aefa9d4091d287a62130180ba75a87bbd6 (diff)
downloadchromium_src-0b6da80b684557f26cab8986fa5e4995731160fc.zip
chromium_src-0b6da80b684557f26cab8986fa5e4995731160fc.tar.gz
chromium_src-0b6da80b684557f26cab8986fa5e4995731160fc.tar.bz2
Share the same keyboard layout among all windows.
- Call SetKeyboardLayoutPerWindow(false) in LanguageMenuButton::LanguageMenuButton(). - Mock Keyboard APIs so LanguageMenuButton::LanguageMenuButton() can call the function even in browser_tests. In browser_tests, code like "if (CrosLibrary::Get()->EnsureLoaded()) SetKeyboardLayoutPerWindow(false);" does not work since the EnsureLoaded() function is replaced so it always returns true without loading libcros.so (i.e. the function pointer |SetKeyboardLayoutPerWindow| is NULL). We could fix this by either of the following: 1) Add NULL check: if (CrosLibrary::Get()->EnsureLoaded() && (SetKeyboardLayoutPerWindow != NULL)) SetKeyboardLayoutPerWindow(false); 2) Mock keyboard APIs and just call: CrosLibrary::Get()->GetKeyboardLibrary()->SetKeyboardLayoutPerWindow(false); I'd choose 2), since 1) looks a bit error-prone and inconsistent with other libcros libraries (e.g. power, language, ...) FYI, we can use the new cros/keyboard_library.h interface to implement the "swap ctrl/caps" feature in a clean way. BUG=chromium-os:2433 TEST=manually Review URL: http://codereview.chromium.org/2781006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49754 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/cros/cros_in_process_browser_test.cc33
-rw-r--r--chrome/browser/chromeos/cros/cros_in_process_browser_test.h8
-rw-r--r--chrome/browser/chromeos/cros/cros_library.cc18
-rw-r--r--chrome/browser/chromeos/cros/cros_library.h10
-rw-r--r--chrome/browser/chromeos/cros/keyboard_library.cc42
-rw-r--r--chrome/browser/chromeos/cros/keyboard_library.h56
-rw-r--r--chrome/browser/chromeos/cros/language_library.cc4
-rw-r--r--chrome/browser/chromeos/cros/mock_keyboard_library.h28
-rw-r--r--chrome/browser/chromeos/login/login_browsertest.cc3
-rw-r--r--chrome/browser/chromeos/status/language_menu_button.cc4
-rwxr-xr-xchrome/chrome_browser.gypi2
-rwxr-xr-xchrome/chrome_tests.gypi2
12 files changed, 205 insertions, 5 deletions
diff --git a/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc b/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc
index 4a73ceb..570067c 100644
--- a/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc
+++ b/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/mock_cryptohome_library.h"
+#include "chrome/browser/chromeos/cros/mock_keyboard_library.h"
#include "chrome/browser/chromeos/cros/mock_language_library.h"
#include "chrome/browser/chromeos/cros/mock_library_loader.h"
#include "chrome/browser/chromeos/cros/mock_network_library.h"
@@ -33,6 +34,7 @@ using ::testing::_;
CrosInProcessBrowserTest::CrosInProcessBrowserTest()
: loader_(NULL),
mock_cryptohome_library_(NULL),
+ mock_keyboard_library_(NULL),
mock_language_library_(NULL),
mock_network_library_(NULL),
mock_power_library_(NULL),
@@ -47,6 +49,7 @@ chromeos::CrosLibrary::TestApi* CrosInProcessBrowserTest::test_api() {
}
void CrosInProcessBrowserTest::InitStatusAreaMocks() {
+ InitMockKeyboardLibrary();
InitMockLanguageLibrary();
InitMockNetworkLibrary();
InitMockPowerLibrary();
@@ -71,6 +74,14 @@ void CrosInProcessBrowserTest::InitMockCryptohomeLibrary() {
test_api()->SetCryptohomeLibrary(mock_cryptohome_library_, true);
}
+void CrosInProcessBrowserTest::InitMockKeyboardLibrary() {
+ InitMockLibraryLoader();
+ if (mock_keyboard_library_)
+ return;
+ mock_keyboard_library_ = new MockKeyboardLibrary();
+ test_api()->SetKeyboardLibrary(mock_keyboard_library_, true);
+}
+
void CrosInProcessBrowserTest::InitMockLanguageLibrary() {
InitMockLibraryLoader();
if (mock_language_library_)
@@ -112,12 +123,32 @@ void CrosInProcessBrowserTest::InitMockSynapticsLibrary() {
}
void CrosInProcessBrowserTest::SetStatusAreaMocksExpectations() {
+ SetKeyboardLibraryStatusAreaExpectations();
SetLanguageLibraryStatusAreaExpectations();
SetNetworkLibraryStatusAreaExpectations();
SetPowerLibraryStatusAreaExpectations();
SetSynapticsLibraryExpectations();
}
+void CrosInProcessBrowserTest::SetKeyboardLibraryStatusAreaExpectations() {
+ EXPECT_CALL(*mock_keyboard_library_, GetCurrentKeyboardLayoutName())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return("us")))
+ .RetiresOnSaturation();
+ EXPECT_CALL(*mock_keyboard_library_, SetCurrentKeyboardLayoutByName(_))
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(true)))
+ .RetiresOnSaturation();
+ EXPECT_CALL(*mock_keyboard_library_, SetKeyboardLayoutPerWindow(_))
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(true)))
+ .RetiresOnSaturation();
+ EXPECT_CALL(*mock_keyboard_library_, GetKeyboardLayoutPerWindow(_))
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(true)))
+ .RetiresOnSaturation();
+}
+
void CrosInProcessBrowserTest::SetLanguageLibraryStatusAreaExpectations() {
EXPECT_CALL(*mock_language_library_, AddObserver(_))
.Times(1)
@@ -218,6 +249,8 @@ void CrosInProcessBrowserTest::TearDownInProcessBrowserTestFixture() {
test_api()->SetLibraryLoader(NULL, false);
if (mock_cryptohome_library_)
test_api()->SetCryptohomeLibrary(NULL, false);
+ if (mock_keyboard_library_)
+ test_api()->SetKeyboardLibrary(NULL, false);
if (mock_language_library_)
test_api()->SetLanguageLibrary(NULL, false);
if (mock_network_library_)
diff --git a/chrome/browser/chromeos/cros/cros_in_process_browser_test.h b/chrome/browser/chromeos/cros/cros_in_process_browser_test.h
index 84f26aa..0a0b7ad 100644
--- a/chrome/browser/chromeos/cros/cros_in_process_browser_test.h
+++ b/chrome/browser/chromeos/cros/cros_in_process_browser_test.h
@@ -12,13 +12,14 @@
namespace chromeos {
-class MockLibraryLoader;
-class MockScreenLockLibrary;
class MockCryptohomeLibrary;
+class MockKeyboardLibrary;
class MockLanguageLibrary;
+class MockLibraryLoader;
class MockNetworkLibrary;
class MockPowerLibrary;
class MockScreenLockLibrary;
+class MockScreenLockLibrary;
class MockSynapticsLibrary;
// Base class for Chromium OS tests wanting to bring up a browser in the
@@ -47,6 +48,7 @@ class CrosInProcessBrowserTest : public InProcessBrowserTest {
// Initialization of mocks.
void InitMockCryptohomeLibrary();
+ void InitMockKeyboardLibrary();
void InitMockLanguageLibrary();
void InitMockNetworkLibrary();
void InitMockPowerLibrary();
@@ -62,6 +64,7 @@ class CrosInProcessBrowserTest : public InProcessBrowserTest {
void SetStatusAreaMocksExpectations();
// Methods to setup minimal mocks expectations for status area.
+ void SetKeyboardLibraryStatusAreaExpectations();
void SetLanguageLibraryStatusAreaExpectations();
void SetNetworkLibraryStatusAreaExpectations();
void SetPowerLibraryStatusAreaExpectations();
@@ -76,6 +79,7 @@ class CrosInProcessBrowserTest : public InProcessBrowserTest {
// Mocks, destroyed by CrosLibrary class.
MockLibraryLoader* loader_;
MockCryptohomeLibrary* mock_cryptohome_library_;
+ MockKeyboardLibrary* mock_keyboard_library_;
MockLanguageLibrary* mock_language_library_;
MockNetworkLibrary* mock_network_library_;
MockPowerLibrary* mock_power_library_;
diff --git a/chrome/browser/chromeos/cros/cros_library.cc b/chrome/browser/chromeos/cros/cros_library.cc
index 023bc01..46e59cd 100644
--- a/chrome/browser/chromeos/cros/cros_library.cc
+++ b/chrome/browser/chromeos/cros/cros_library.cc
@@ -6,6 +6,7 @@
#include "chrome/browser/chromeos/cros/cros_library_loader.h"
#include "chrome/browser/chromeos/cros/cryptohome_library.h"
+#include "chrome/browser/chromeos/cros/keyboard_library.h"
#include "chrome/browser/chromeos/cros/language_library.h"
#include "chrome/browser/chromeos/cros/login_library.h"
#include "chrome/browser/chromeos/cros/mount_library.h"
@@ -20,6 +21,7 @@ namespace chromeos {
CrosLibrary::CrosLibrary() : library_loader_(NULL),
crypto_lib_(NULL),
+ keyboard_lib_(NULL),
language_lib_(NULL),
login_lib_(NULL),
mount_lib_(NULL),
@@ -51,6 +53,8 @@ CrosLibrary::~CrosLibrary() {
delete library_loader_;
if (own_cryptohome_lib_)
delete crypto_lib_;
+ if (own_keyboard_lib_)
+ delete keyboard_lib_;
if (own_language_lib_)
delete language_lib_;
if (own_login_lib_)
@@ -83,6 +87,12 @@ CryptohomeLibrary* CrosLibrary::GetCryptohomeLibrary() {
return crypto_lib_;
}
+KeyboardLibrary* CrosLibrary::GetKeyboardLibrary() {
+ if (!keyboard_lib_)
+ keyboard_lib_ = new KeyboardLibraryImpl();
+ return keyboard_lib_;
+}
+
LanguageLibrary* CrosLibrary::GetLanguageLibrary() {
if (!language_lib_)
language_lib_ = new LanguageLibraryImpl();
@@ -174,6 +184,14 @@ void CrosLibrary::TestApi::SetCryptohomeLibrary(CryptohomeLibrary* library,
library_->crypto_lib_ = library;
}
+void CrosLibrary::TestApi::SetKeyboardLibrary(KeyboardLibrary* library,
+ bool own) {
+ if (library_->own_keyboard_lib_)
+ delete library_->keyboard_lib_;
+ library_->own_keyboard_lib_ = own;
+ library_->keyboard_lib_ = library;
+}
+
void CrosLibrary::TestApi::SetLanguageLibrary(LanguageLibrary* library,
bool own) {
if (library_->own_language_lib_)
diff --git a/chrome/browser/chromeos/cros/cros_library.h b/chrome/browser/chromeos/cros/cros_library.h
index 13ac5ed..ea36b29 100644
--- a/chrome/browser/chromeos/cros/cros_library.h
+++ b/chrome/browser/chromeos/cros/cros_library.h
@@ -12,6 +12,7 @@
namespace chromeos {
class CryptohomeLibrary;
+class KeyboardLibrary;
class LanguageLibrary;
class LibraryLoader;
class LoginLibrary;
@@ -40,6 +41,8 @@ class CrosLibrary {
void SetLibraryLoader(LibraryLoader* loader, bool own);
// Setter for CryptohomeLibrary.
void SetCryptohomeLibrary(CryptohomeLibrary* library, bool own);
+ // Setter for KeyboardLibrary
+ void SetKeyboardLibrary(KeyboardLibrary* library, bool own);
// Setter for LanguageLibrary
void SetLanguageLibrary(LanguageLibrary* library, bool own);
// Setter for LoginLibrary.
@@ -71,7 +74,10 @@ class CrosLibrary {
// Getter for CryptohomeLibrary.
CryptohomeLibrary* GetCryptohomeLibrary();
- // // Getter for LanguageLibrary
+ // Getter for KeyboardLibrary
+ KeyboardLibrary* GetKeyboardLibrary();
+
+ // Getter for LanguageLibrary
LanguageLibrary* GetLanguageLibrary();
// Getter for LoginLibrary.
@@ -119,6 +125,7 @@ class CrosLibrary {
LibraryLoader* library_loader_;
CryptohomeLibrary* crypto_lib_;
+ KeyboardLibrary* keyboard_lib_;
LanguageLibrary* language_lib_;
LoginLibrary* login_lib_;
MountLibrary* mount_lib_;
@@ -131,6 +138,7 @@ class CrosLibrary {
bool own_library_loader_;
bool own_cryptohome_lib_;
+ bool own_keyboard_lib_;
bool own_language_lib_;
bool own_login_lib_;
bool own_mount_lib_;
diff --git a/chrome/browser/chromeos/cros/keyboard_library.cc b/chrome/browser/chromeos/cros/keyboard_library.cc
new file mode 100644
index 0000000..c9c9ab2
--- /dev/null
+++ b/chrome/browser/chromeos/cros/keyboard_library.cc
@@ -0,0 +1,42 @@
+// Copyright (c) 2009 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/keyboard_library.h"
+
+#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "third_party/cros/chromeos_keyboard.h"
+
+namespace chromeos {
+
+std::string KeyboardLibraryImpl::GetCurrentKeyboardLayoutName() const {
+ if (CrosLibrary::Get()->EnsureLoaded()) {
+ return chromeos::GetCurrentKeyboardLayoutName();
+ }
+ return "";
+}
+
+bool KeyboardLibraryImpl::SetCurrentKeyboardLayoutByName(
+ const std::string& layout_name) {
+ if (CrosLibrary::Get()->EnsureLoaded()) {
+ return chromeos::SetCurrentKeyboardLayoutByName(layout_name);
+ }
+ return false;
+}
+
+bool KeyboardLibraryImpl::GetKeyboardLayoutPerWindow(
+ bool* is_per_window) const {
+ if (CrosLibrary::Get()->EnsureLoaded()) {
+ return chromeos::GetKeyboardLayoutPerWindow(is_per_window);
+ }
+ return false;
+}
+
+bool KeyboardLibraryImpl::SetKeyboardLayoutPerWindow(bool is_per_window) {
+ if (CrosLibrary::Get()->EnsureLoaded()) {
+ return chromeos::SetKeyboardLayoutPerWindow(is_per_window);
+ }
+ return false;
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/cros/keyboard_library.h b/chrome/browser/chromeos/cros/keyboard_library.h
new file mode 100644
index 0000000..fcdec9e
--- /dev/null
+++ b/chrome/browser/chromeos/cros/keyboard_library.h
@@ -0,0 +1,56 @@
+// 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.
+
+#ifndef CHROME_BROWSER_CHROMEOS_CROS_KEYBOARD_LIBRARY_H_
+#define CHROME_BROWSER_CHROMEOS_CROS_KEYBOARD_LIBRARY_H_
+
+#include "third_party/cros/chromeos_keyboard.h"
+
+#include <string>
+
+#include "base/basictypes.h"
+
+namespace chromeos {
+
+// This class handles the interaction with the ChromeOS keyboard library APIs.
+class KeyboardLibrary {
+ public:
+ virtual ~KeyboardLibrary() {}
+
+ // Returns the current layout name like "us". On error, returns "".
+ virtual std::string GetCurrentKeyboardLayoutName() const = 0;
+
+ // Sets the current keyboard layout to |layout_name|. Returns true on
+ // success.
+ virtual bool SetCurrentKeyboardLayoutByName(
+ const std::string& layout_name) = 0;
+
+ // Gets whehter we have separate keyboard layout per window, or not. The
+ // result is stored in |is_per_window|. Returns true on success.
+ virtual bool GetKeyboardLayoutPerWindow(bool* is_per_window) const = 0;
+
+ // Sets whether we have separate keyboard layout per window, or not. If false
+ // is given, the same keyboard layout will be shared for all applications.
+ // Returns true on success.
+ virtual bool SetKeyboardLayoutPerWindow(bool is_per_window) = 0;
+};
+
+class KeyboardLibraryImpl : public KeyboardLibrary {
+ public:
+ KeyboardLibraryImpl() {}
+ virtual ~KeyboardLibraryImpl() {}
+
+ // KeyboardLibrary overrides.
+ virtual std::string GetCurrentKeyboardLayoutName() const;
+ virtual bool SetCurrentKeyboardLayoutByName(const std::string& layout_name);
+ virtual bool GetKeyboardLayoutPerWindow(bool* is_per_window) const;
+ virtual bool SetKeyboardLayoutPerWindow(bool is_per_window);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(KeyboardLibraryImpl);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_CROS_KEYBOARD_LIBRARY_H_
diff --git a/chrome/browser/chromeos/cros/language_library.cc b/chrome/browser/chromeos/cros/language_library.cc
index 8104b09..f7346bc 100644
--- a/chrome/browser/chromeos/cros/language_library.cc
+++ b/chrome/browser/chromeos/cros/language_library.cc
@@ -9,8 +9,8 @@
#include "base/string_util.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/cros/keyboard_library.h"
#include "chrome/browser/chromeos/language_preferences.h"
-#include "third_party/cros/chromeos_keyboard.h"
#include "third_party/icu/public/common/unicode/uloc.h"
// Allows InvokeLater without adding refcounting. This class is a Singleton and
@@ -357,7 +357,7 @@ void LanguageLibraryImpl::UpdateCurrentInputMethod(
DLOG(INFO) << "UpdateCurrentInputMethod (UI thread)";
// Change the keyboard layout to a preferred layout for the input method.
- chromeos::SetCurrentKeyboardLayoutByName(
+ CrosLibrary::Get()->GetKeyboardLibrary()->SetCurrentKeyboardLayoutByName(
new_input_method.keyboard_layout);
if (current_input_method_.id != new_input_method.id) {
diff --git a/chrome/browser/chromeos/cros/mock_keyboard_library.h b/chrome/browser/chromeos/cros/mock_keyboard_library.h
new file mode 100644
index 0000000..67bcdce
--- /dev/null
+++ b/chrome/browser/chromeos/cros/mock_keyboard_library.h
@@ -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.
+
+#ifndef CHROME_BROWSER_CHROMEOS_CROS_MOCK_KEYBOARD_LIBRARY_H_
+#define CHROME_BROWSER_CHROMEOS_CROS_MOCK_KEYBOARD_LIBRARY_H_
+
+#include <string>
+
+#include "chrome/browser/chromeos/cros/keyboard_library.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace chromeos {
+
+class MockKeyboardLibrary : public KeyboardLibrary {
+ public:
+ MockKeyboardLibrary() {}
+ virtual ~MockKeyboardLibrary() {}
+
+ MOCK_CONST_METHOD0(GetCurrentKeyboardLayoutName, std::string(void));
+ MOCK_METHOD1(SetCurrentKeyboardLayoutByName, bool(const std::string&));
+ MOCK_CONST_METHOD1(GetKeyboardLayoutPerWindow, bool(bool*));
+ MOCK_METHOD1(SetKeyboardLayoutPerWindow, bool(bool));
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_CROS_MOCK_KEYBOARD_LIBRARY_H_
diff --git a/chrome/browser/chromeos/login/login_browsertest.cc b/chrome/browser/chromeos/login/login_browsertest.cc
index 6c3a94c..c359a1b 100644
--- a/chrome/browser/chromeos/login/login_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_browsertest.cc
@@ -8,6 +8,7 @@
#include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h"
#include "chrome/browser/profile_manager.h"
#include "chrome/browser/chromeos/cros/mock_cryptohome_library.h"
+#include "chrome/browser/chromeos/cros/mock_keyboard_library.h"
#include "chrome/browser/chromeos/cros/mock_language_library.h"
#include "chrome/browser/chromeos/cros/mock_library_loader.h"
#include "chrome/browser/chromeos/cros/mock_network_library.h"
@@ -35,6 +36,7 @@ class LoginTestBase : public InProcessBrowserTest {
EXPECT_CALL(loader_, Load(_))
.WillRepeatedly(Return(true));
+ testApi_->SetKeyboardLibrary(&mock_keyboard_library_, false);
testApi_->SetLanguageLibrary(&mock_language_library_, false);
EXPECT_CALL(mock_language_library_, GetActiveInputMethods())
.WillRepeatedly(
@@ -56,6 +58,7 @@ class LoginTestBase : public InProcessBrowserTest {
protected:
NiceMock<MockLibraryLoader> loader_;
NiceMock<MockCryptohomeLibrary> mock_cryptohome_library_;
+ NiceMock<MockKeyboardLibrary> mock_keyboard_library_;
NiceMock<MockLanguageLibrary> mock_language_library_;
NiceMock<MockNetworkLibrary> mock_network_library_;
NiceMock<MockPowerLibrary> mock_power_library_;
diff --git a/chrome/browser/chromeos/status/language_menu_button.cc b/chrome/browser/chromeos/status/language_menu_button.cc
index d7a8edb..b07eec1 100644
--- a/chrome/browser/chromeos/status/language_menu_button.cc
+++ b/chrome/browser/chromeos/status/language_menu_button.cc
@@ -12,6 +12,7 @@
#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/cros/keyboard_library.h"
#include "chrome/browser/chromeos/status/language_menu_l10n_util.h"
#include "chrome/browser/chromeos/status/status_area_host.h"
#include "chrome/browser/metrics/user_metrics.h"
@@ -144,6 +145,9 @@ LanguageMenuButton::LanguageMenuButton(StatusAreaHost* host)
// initial OS boot).
UpdateIndicator(L"EN", L"");
+ // Use the same keyboard layout on all windows.
+ CrosLibrary::Get()->GetKeyboardLibrary()->SetKeyboardLayoutPerWindow(false);
+
// Sync current and previous input methods on Chrome prefs with ibus-daemon.
// InputMethodChanged() will be called soon and the indicator will be updated.
LanguageLibrary* library = CrosLibrary::Get()->GetLanguageLibrary();
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index cc75e14..de982fd 100755
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -359,6 +359,8 @@
'browser/chromeos/cros/cros_library_loader.h',
'browser/chromeos/cros/cryptohome_library.cc',
'browser/chromeos/cros/cryptohome_library.h',
+ 'browser/chromeos/cros/keyboard_library.cc',
+ 'browser/chromeos/cros/keyboard_library.h',
'browser/chromeos/cros/language_library.cc',
'browser/chromeos/cros/language_library.h',
'browser/chromeos/cros/login_library.cc',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 8b06e38..4103883 100755
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1457,6 +1457,8 @@
'browser/chromeos/cros/cros_in_process_browser_test.h',
'browser/chromeos/cros/mock_cros_library.h',
'browser/chromeos/cros/mock_cryptohome_library.h',
+ 'browser/chromeos/cros/mock_keyboard_library.h',
+ 'browser/chromeos/cros/mock_language_library.h',
'browser/chromeos/cros/mock_mount_library.cc',
'browser/chromeos/cros/mock_mount_library.h',
'browser/chromeos/cros/mock_network_library.h',