OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/views/ash/caps_lock_handler.h" | 5 #include "chrome/browser/ui/views/ash/caps_lock_handler.h" |
6 #include "chrome/test/base/in_process_browser_test.h" | 6 #include "chrome/test/base/in_process_browser_test.h" |
7 #include "chrome/test/base/ui_test_utils.h" | 7 #include "chrome/test/base/ui_test_utils.h" |
8 | 8 |
9 #if defined(OS_CHROMEOS) | 9 #if defined(OS_CHROMEOS) |
10 #include "chrome/browser/chromeos/input_method/xkeyboard.h" | 10 #include "chrome/browser/chromeos/input_method/mock_xkeyboard.h" |
11 using namespace chromeos::input_method; | 11 using namespace chromeos::input_method; |
12 #endif | 12 #endif |
13 | 13 |
14 namespace { | 14 namespace { |
15 | 15 |
16 #if defined(OS_CHROMEOS) | 16 #if defined(OS_CHROMEOS) |
17 class DummyXKeyboard : public XKeyboard { | |
18 public: | |
19 explicit DummyXKeyboard(bool initial_caps_lock_state) | |
20 : caps_lock_is_enabled_(initial_caps_lock_state) {} | |
21 virtual ~DummyXKeyboard() {} | |
22 | |
23 // Overridden from chrome::input_method::XKeyboard: | |
24 virtual bool SetCurrentKeyboardLayoutByName( | |
25 const std::string& layout_name) OVERRIDE { | |
26 return true; | |
27 } | |
28 virtual bool RemapModifierKeys(const ModifierMap& modifier_map) OVERRIDE { | |
29 return true; | |
30 } | |
31 virtual bool ReapplyCurrentKeyboardLayout() OVERRIDE { | |
32 return true; | |
33 } | |
34 virtual void ReapplyCurrentModifierLockStatus() OVERRIDE {} | |
35 virtual void SetLockedModifiers( | |
36 ModifierLockStatus new_caps_lock_status, | |
37 ModifierLockStatus new_num_lock_status) OVERRIDE {} | |
38 virtual void SetNumLockEnabled(bool enable_num_lock) OVERRIDE {} | |
39 virtual void SetCapsLockEnabled(bool enable_caps_lock) OVERRIDE { | |
40 caps_lock_is_enabled_ = enable_caps_lock; | |
41 } | |
42 virtual bool NumLockIsEnabled() OVERRIDE { | |
43 return true; | |
44 } | |
45 virtual bool CapsLockIsEnabled() OVERRIDE { | |
46 return caps_lock_is_enabled_; | |
47 } | |
48 virtual std::string CreateFullXkbLayoutName( | |
49 const std::string& layout_name, | |
50 const ModifierMap& modifire_map) OVERRIDE { | |
51 return ""; | |
52 } | |
53 virtual unsigned int GetNumLockMask() OVERRIDE { | |
54 return 0; | |
55 } | |
56 virtual void GetLockedModifiers(bool* out_caps_lock_enabled, | |
57 bool* out_num_lock_enabled) OVERRIDE {} | |
58 | |
59 private: | |
60 bool caps_lock_is_enabled_; | |
61 | |
62 DISALLOW_COPY_AND_ASSIGN(DummyXKeyboard); | |
63 }; | |
64 | |
65 class CapsLockHandlerTest : public InProcessBrowserTest { | 17 class CapsLockHandlerTest : public InProcessBrowserTest { |
66 public: | 18 public: |
67 CapsLockHandlerTest() | 19 CapsLockHandlerTest() |
68 : initial_caps_lock_state_(false), | 20 : initial_caps_lock_state_(false) { |
69 xkeyboard_(initial_caps_lock_state_) { | |
70 } | 21 } |
71 virtual void SetUp() OVERRIDE { | 22 virtual void SetUp() OVERRIDE { |
72 handler_.reset(new CapsLockHandler(&xkeyboard_)); | 23 handler_.reset(new CapsLockHandler(&xkeyboard_)); |
73 // Force CapsLockHandler::HandleToggleCapsLock() to toggle the lock state. | 24 // Force CapsLockHandler::HandleToggleCapsLock() to toggle the lock state. |
74 handler_->set_is_running_on_chromeos_for_test(true); | 25 handler_->set_is_running_on_chromeos_for_test(true); |
75 } | 26 } |
76 virtual void TearDown() OVERRIDE { | 27 virtual void TearDown() OVERRIDE { |
77 handler_.reset(); | 28 handler_.reset(); |
78 } | 29 } |
79 | 30 |
80 protected: | 31 protected: |
81 const bool initial_caps_lock_state_; | 32 const bool initial_caps_lock_state_; |
82 DummyXKeyboard xkeyboard_; | 33 MockXKeyboard xkeyboard_; |
83 scoped_ptr<CapsLockHandler> handler_; | 34 scoped_ptr<CapsLockHandler> handler_; |
84 | 35 |
85 DISALLOW_COPY_AND_ASSIGN(CapsLockHandlerTest); | 36 DISALLOW_COPY_AND_ASSIGN(CapsLockHandlerTest); |
86 }; | 37 }; |
87 #endif | 38 #endif |
88 | 39 |
89 } // namespace | 40 } // namespace |
90 | 41 |
91 #if defined(OS_CHROMEOS) | 42 #if defined(OS_CHROMEOS) |
92 // Check if HandleToggleCapsLock() really changes the lock state. | 43 // Check if HandleToggleCapsLock() really changes the lock state. |
93 IN_PROC_BROWSER_TEST_F(CapsLockHandlerTest, TestCapsLock) { | 44 IN_PROC_BROWSER_TEST_F(CapsLockHandlerTest, TestCapsLock) { |
94 EXPECT_EQ(initial_caps_lock_state_, handler_->caps_lock_is_on_for_test()); | 45 EXPECT_EQ(initial_caps_lock_state_, handler_->caps_lock_is_on_for_test()); |
95 EXPECT_TRUE(handler_->HandleToggleCapsLock()); | 46 EXPECT_TRUE(handler_->HandleToggleCapsLock()); |
96 EXPECT_EQ(!initial_caps_lock_state_, xkeyboard_.CapsLockIsEnabled()); | 47 EXPECT_EQ(!initial_caps_lock_state_, xkeyboard_.CapsLockIsEnabled()); |
97 handler_->OnCapsLockChange(!initial_caps_lock_state_); | 48 handler_->OnCapsLockChange(!initial_caps_lock_state_); |
98 EXPECT_EQ(!initial_caps_lock_state_, handler_->caps_lock_is_on_for_test()); | 49 EXPECT_EQ(!initial_caps_lock_state_, handler_->caps_lock_is_on_for_test()); |
99 EXPECT_TRUE(handler_->HandleToggleCapsLock()); | 50 EXPECT_TRUE(handler_->HandleToggleCapsLock()); |
100 handler_->OnCapsLockChange(initial_caps_lock_state_); | 51 handler_->OnCapsLockChange(initial_caps_lock_state_); |
101 EXPECT_EQ(initial_caps_lock_state_, xkeyboard_.CapsLockIsEnabled()); | 52 EXPECT_EQ(initial_caps_lock_state_, xkeyboard_.CapsLockIsEnabled()); |
102 EXPECT_EQ(initial_caps_lock_state_, handler_->caps_lock_is_on_for_test()); | 53 EXPECT_EQ(initial_caps_lock_state_, handler_->caps_lock_is_on_for_test()); |
103 } | 54 } |
104 #endif | 55 #endif |
OLD | NEW |