Index: chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
diff --git a/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc b/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
index 901c27b83c661bc1cc42c69fd9ee4cc3a903ac51..e0eccaf28c9bfff08e9a37f9fa6661dd54695b95 100644 |
--- a/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
+++ b/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
@@ -42,6 +42,8 @@ class TestableXKeyboard : public XKeyboard { |
// Change access rights. |
using XKeyboard::CreateFullXkbLayoutName; |
using XKeyboard::ContainsModifierKeyAsReplacement; |
+ using XKeyboard::GetAutoRepeatEnabled; |
+ using XKeyboard::GetAutoRepeatRate; |
}; |
class XKeyboardTest : public testing::Test { |
@@ -255,6 +257,10 @@ TEST_F(XKeyboardTest, TestCreateFullXkbLayoutNameModifierKeys) { |
TEST_F(XKeyboardTest, TestSetCapsLockEnabled) { |
if (!DisplayAvailable()) { |
+ // Do not fail the test to allow developers to run unit_tests without an X |
+ // server (e.g. via ssh). Note that both try bots and waterfall always have |
+ // an X server for running browser_tests. |
+ LOG(INFO) << "X server is not available. Skip the test."; |
return; |
} |
const bool initial_lock_state = xkey_->CapsLockIsEnabled(); |
@@ -271,6 +277,7 @@ TEST_F(XKeyboardTest, TestSetCapsLockEnabled) { |
TEST_F(XKeyboardTest, TestSetNumLockEnabled) { |
if (!DisplayAvailable()) { |
+ LOG(INFO) << "X server is not available. Skip the test."; |
return; |
} |
const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); |
@@ -290,6 +297,7 @@ TEST_F(XKeyboardTest, TestSetNumLockEnabled) { |
TEST_F(XKeyboardTest, TestSetCapsLockAndNumLockAtTheSameTime) { |
if (!DisplayAvailable()) { |
+ LOG(INFO) << "X server is not available. Skip the test."; |
return; |
} |
const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); |
@@ -353,5 +361,41 @@ TEST_F(XKeyboardTest, TestContainsModifierKeyAsReplacement) { |
GetMap(kSearchKey, kVoidKey, kVoidKey), kSearchKey)); |
} |
+TEST_F(XKeyboardTest, TestSetAutoRepeatEnabled) { |
+ if (!DisplayAvailable()) { |
+ LOG(INFO) << "X server is not available. Skip the test."; |
+ return; |
+ } |
+ const bool state = TestableXKeyboard::GetAutoRepeatEnabled(); |
+ TestableXKeyboard::SetAutoRepeatEnabled(!state); |
+ EXPECT_EQ(!state, TestableXKeyboard::GetAutoRepeatEnabled()); |
+ // Restore the initial state. |
+ TestableXKeyboard::SetAutoRepeatEnabled(state); |
+ EXPECT_EQ(state, TestableXKeyboard::GetAutoRepeatEnabled()); |
+} |
+ |
+TEST_F(XKeyboardTest, TestSetAutoRepeatRate) { |
+ if (!DisplayAvailable()) { |
+ LOG(INFO) << "X server is not available. Skip the test."; |
+ return; |
+ } |
+ AutoRepeatRate rate; |
+ EXPECT_TRUE(TestableXKeyboard::GetAutoRepeatRate(&rate)); |
+ |
+ AutoRepeatRate tmp(rate); |
+ ++tmp.initial_delay_in_ms; |
+ ++tmp.repeat_interval_in_ms; |
+ EXPECT_TRUE(TestableXKeyboard::SetAutoRepeatRate(tmp)); |
+ EXPECT_TRUE(TestableXKeyboard::GetAutoRepeatRate(&tmp)); |
+ EXPECT_EQ(rate.initial_delay_in_ms + 1, tmp.initial_delay_in_ms); |
+ EXPECT_EQ(rate.repeat_interval_in_ms + 1, tmp.repeat_interval_in_ms); |
+ |
+ // Restore the initial state. |
+ EXPECT_TRUE(TestableXKeyboard::SetAutoRepeatRate(rate)); |
+ EXPECT_TRUE(TestableXKeyboard::GetAutoRepeatRate(&tmp)); |
+ EXPECT_EQ(rate.initial_delay_in_ms, tmp.initial_delay_in_ms); |
+ EXPECT_EQ(rate.repeat_interval_in_ms, tmp.repeat_interval_in_ms); |
+} |
+ |
} // namespace input_method |
} // namespace chromeos |