OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/input_method/xkeyboard.h" | 5 #include "chrome/browser/chromeos/input_method/xkeyboard.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 24 matching lines...) Expand all Loading... |
35 namespace { | 35 namespace { |
36 | 36 |
37 class TestableXKeyboard : public XKeyboard { | 37 class TestableXKeyboard : public XKeyboard { |
38 public: | 38 public: |
39 explicit TestableXKeyboard(const InputMethodUtil& util) : XKeyboard(util) { | 39 explicit TestableXKeyboard(const InputMethodUtil& util) : XKeyboard(util) { |
40 } | 40 } |
41 | 41 |
42 // Change access rights. | 42 // Change access rights. |
43 using XKeyboard::CreateFullXkbLayoutName; | 43 using XKeyboard::CreateFullXkbLayoutName; |
44 using XKeyboard::ContainsModifierKeyAsReplacement; | 44 using XKeyboard::ContainsModifierKeyAsReplacement; |
| 45 using XKeyboard::GetAutoRepeatEnabled; |
| 46 using XKeyboard::GetAutoRepeatRate; |
45 }; | 47 }; |
46 | 48 |
47 class XKeyboardTest : public testing::Test { | 49 class XKeyboardTest : public testing::Test { |
48 public: | 50 public: |
49 XKeyboardTest() | 51 XKeyboardTest() |
50 : controller_(IBusController::Create()), | 52 : controller_(IBusController::Create()), |
51 util_(controller_->GetSupportedInputMethods()), | 53 util_(controller_->GetSupportedInputMethods()), |
52 ui_thread_(BrowserThread::UI, &message_loop_) { | 54 ui_thread_(BrowserThread::UI, &message_loop_) { |
53 } | 55 } |
54 | 56 |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 << "layout: " << layout; | 250 << "layout: " << layout; |
249 // All 4*3*3 layouts should be different. | 251 // All 4*3*3 layouts should be different. |
250 EXPECT_TRUE(layouts.insert(layout).second) << "layout: " << layout; | 252 EXPECT_TRUE(layouts.insert(layout).second) << "layout: " << layout; |
251 } | 253 } |
252 } | 254 } |
253 } | 255 } |
254 } | 256 } |
255 | 257 |
256 TEST_F(XKeyboardTest, TestSetCapsLockEnabled) { | 258 TEST_F(XKeyboardTest, TestSetCapsLockEnabled) { |
257 if (!DisplayAvailable()) { | 259 if (!DisplayAvailable()) { |
| 260 // Do not fail the test to allow developers to run unit_tests without an X |
| 261 // server (e.g. via ssh). Note that both try bots and waterfall always have |
| 262 // an X server for running browser_tests. |
| 263 LOG(INFO) << "X server is not available. Skip the test."; |
258 return; | 264 return; |
259 } | 265 } |
260 const bool initial_lock_state = xkey_->CapsLockIsEnabled(); | 266 const bool initial_lock_state = xkey_->CapsLockIsEnabled(); |
261 xkey_->SetCapsLockEnabled(true); | 267 xkey_->SetCapsLockEnabled(true); |
262 EXPECT_TRUE(TestableXKeyboard::CapsLockIsEnabled()); | 268 EXPECT_TRUE(TestableXKeyboard::CapsLockIsEnabled()); |
263 xkey_->SetCapsLockEnabled(false); | 269 xkey_->SetCapsLockEnabled(false); |
264 EXPECT_FALSE(TestableXKeyboard::CapsLockIsEnabled()); | 270 EXPECT_FALSE(TestableXKeyboard::CapsLockIsEnabled()); |
265 xkey_->SetCapsLockEnabled(true); | 271 xkey_->SetCapsLockEnabled(true); |
266 EXPECT_TRUE(TestableXKeyboard::CapsLockIsEnabled()); | 272 EXPECT_TRUE(TestableXKeyboard::CapsLockIsEnabled()); |
267 xkey_->SetCapsLockEnabled(false); | 273 xkey_->SetCapsLockEnabled(false); |
268 EXPECT_FALSE(TestableXKeyboard::CapsLockIsEnabled()); | 274 EXPECT_FALSE(TestableXKeyboard::CapsLockIsEnabled()); |
269 xkey_->SetCapsLockEnabled(initial_lock_state); | 275 xkey_->SetCapsLockEnabled(initial_lock_state); |
270 } | 276 } |
271 | 277 |
272 TEST_F(XKeyboardTest, TestSetNumLockEnabled) { | 278 TEST_F(XKeyboardTest, TestSetNumLockEnabled) { |
273 if (!DisplayAvailable()) { | 279 if (!DisplayAvailable()) { |
| 280 LOG(INFO) << "X server is not available. Skip the test."; |
274 return; | 281 return; |
275 } | 282 } |
276 const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); | 283 const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); |
277 ASSERT_NE(0U, num_lock_mask); | 284 ASSERT_NE(0U, num_lock_mask); |
278 | 285 |
279 const bool initial_lock_state = xkey_->NumLockIsEnabled(num_lock_mask); | 286 const bool initial_lock_state = xkey_->NumLockIsEnabled(num_lock_mask); |
280 xkey_->SetNumLockEnabled(true); | 287 xkey_->SetNumLockEnabled(true); |
281 EXPECT_TRUE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); | 288 EXPECT_TRUE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
282 xkey_->SetNumLockEnabled(false); | 289 xkey_->SetNumLockEnabled(false); |
283 EXPECT_FALSE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); | 290 EXPECT_FALSE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
284 xkey_->SetNumLockEnabled(true); | 291 xkey_->SetNumLockEnabled(true); |
285 EXPECT_TRUE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); | 292 EXPECT_TRUE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
286 xkey_->SetNumLockEnabled(false); | 293 xkey_->SetNumLockEnabled(false); |
287 EXPECT_FALSE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); | 294 EXPECT_FALSE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
288 xkey_->SetNumLockEnabled(initial_lock_state); | 295 xkey_->SetNumLockEnabled(initial_lock_state); |
289 } | 296 } |
290 | 297 |
291 TEST_F(XKeyboardTest, TestSetCapsLockAndNumLockAtTheSameTime) { | 298 TEST_F(XKeyboardTest, TestSetCapsLockAndNumLockAtTheSameTime) { |
292 if (!DisplayAvailable()) { | 299 if (!DisplayAvailable()) { |
| 300 LOG(INFO) << "X server is not available. Skip the test."; |
293 return; | 301 return; |
294 } | 302 } |
295 const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); | 303 const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); |
296 ASSERT_NE(0U, num_lock_mask); | 304 ASSERT_NE(0U, num_lock_mask); |
297 | 305 |
298 const bool initial_caps_lock_state = xkey_->CapsLockIsEnabled(); | 306 const bool initial_caps_lock_state = xkey_->CapsLockIsEnabled(); |
299 const bool initial_num_lock_state = xkey_->NumLockIsEnabled(num_lock_mask); | 307 const bool initial_num_lock_state = xkey_->NumLockIsEnabled(num_lock_mask); |
300 | 308 |
301 // Flip both. | 309 // Flip both. |
302 xkey_->SetLockedModifiers( | 310 xkey_->SetLockedModifiers( |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( | 354 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( |
347 GetMap(kVoidKey, kVoidKey, kCapsLockKey), kCapsLockKey)); | 355 GetMap(kVoidKey, kVoidKey, kCapsLockKey), kCapsLockKey)); |
348 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( | 356 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( |
349 GetMap(kCapsLockKey, kCapsLockKey, kVoidKey), kCapsLockKey)); | 357 GetMap(kCapsLockKey, kCapsLockKey, kVoidKey), kCapsLockKey)); |
350 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( | 358 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( |
351 GetMap(kCapsLockKey, kCapsLockKey, kCapsLockKey), kCapsLockKey)); | 359 GetMap(kCapsLockKey, kCapsLockKey, kCapsLockKey), kCapsLockKey)); |
352 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( | 360 EXPECT_TRUE(TestableXKeyboard::ContainsModifierKeyAsReplacement( |
353 GetMap(kSearchKey, kVoidKey, kVoidKey), kSearchKey)); | 361 GetMap(kSearchKey, kVoidKey, kVoidKey), kSearchKey)); |
354 } | 362 } |
355 | 363 |
| 364 TEST_F(XKeyboardTest, TestSetAutoRepeatEnabled) { |
| 365 if (!DisplayAvailable()) { |
| 366 LOG(INFO) << "X server is not available. Skip the test."; |
| 367 return; |
| 368 } |
| 369 const bool state = TestableXKeyboard::GetAutoRepeatEnabled(); |
| 370 TestableXKeyboard::SetAutoRepeatEnabled(!state); |
| 371 EXPECT_EQ(!state, TestableXKeyboard::GetAutoRepeatEnabled()); |
| 372 // Restore the initial state. |
| 373 TestableXKeyboard::SetAutoRepeatEnabled(state); |
| 374 EXPECT_EQ(state, TestableXKeyboard::GetAutoRepeatEnabled()); |
| 375 } |
| 376 |
| 377 TEST_F(XKeyboardTest, TestSetAutoRepeatRate) { |
| 378 if (!DisplayAvailable()) { |
| 379 LOG(INFO) << "X server is not available. Skip the test."; |
| 380 return; |
| 381 } |
| 382 AutoRepeatRate rate; |
| 383 EXPECT_TRUE(TestableXKeyboard::GetAutoRepeatRate(&rate)); |
| 384 |
| 385 AutoRepeatRate tmp(rate); |
| 386 ++tmp.initial_delay_in_ms; |
| 387 ++tmp.repeat_interval_in_ms; |
| 388 EXPECT_TRUE(TestableXKeyboard::SetAutoRepeatRate(tmp)); |
| 389 EXPECT_TRUE(TestableXKeyboard::GetAutoRepeatRate(&tmp)); |
| 390 EXPECT_EQ(rate.initial_delay_in_ms + 1, tmp.initial_delay_in_ms); |
| 391 EXPECT_EQ(rate.repeat_interval_in_ms + 1, tmp.repeat_interval_in_ms); |
| 392 |
| 393 // Restore the initial state. |
| 394 EXPECT_TRUE(TestableXKeyboard::SetAutoRepeatRate(rate)); |
| 395 EXPECT_TRUE(TestableXKeyboard::GetAutoRepeatRate(&tmp)); |
| 396 EXPECT_EQ(rate.initial_delay_in_ms, tmp.initial_delay_in_ms); |
| 397 EXPECT_EQ(rate.repeat_interval_in_ms, tmp.repeat_interval_in_ms); |
| 398 } |
| 399 |
356 } // namespace input_method | 400 } // namespace input_method |
357 } // namespace chromeos | 401 } // namespace chromeos |
OLD | NEW |