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 "ui/base/accelerators/accelerator_manager.h" | 5 #include "ui/base/accelerators/accelerator_manager.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/events/event_constants.h" | 9 #include "ui/events/event_constants.h" |
10 #include "ui/events/keycodes/keyboard_codes.h" | 10 #include "ui/events/keycodes/keyboard_codes.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 AcceleratorManager manager_; | 60 AcceleratorManager manager_; |
61 }; | 61 }; |
62 | 62 |
63 TEST_F(AcceleratorManagerTest, Register) { | 63 TEST_F(AcceleratorManagerTest, Register) { |
64 const Accelerator accelerator_a(VKEY_A, EF_NONE); | 64 const Accelerator accelerator_a(VKEY_A, EF_NONE); |
65 TestTarget target; | 65 TestTarget target; |
66 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, | 66 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, |
67 &target); | 67 &target); |
68 | 68 |
69 // The registered accelerator is processed. | 69 // The registered accelerator is processed. |
70 EXPECT_TRUE(manager_.Process(accelerator_a)); | 70 EXPECT_TRUE(manager_.ProcessAccelerator(accelerator_a)); |
71 EXPECT_EQ(1, target.accelerator_pressed_count()); | 71 EXPECT_EQ(1, target.accelerator_pressed_count()); |
72 } | 72 } |
73 | 73 |
74 TEST_F(AcceleratorManagerTest, RegisterMultipleTarget) { | 74 TEST_F(AcceleratorManagerTest, RegisterMultipleTarget) { |
75 const Accelerator accelerator_a(VKEY_A, EF_NONE); | 75 const Accelerator accelerator_a(VKEY_A, EF_NONE); |
76 TestTarget target1; | 76 TestTarget target1; |
77 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, | 77 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, |
78 &target1); | 78 &target1); |
79 TestTarget target2; | 79 TestTarget target2; |
80 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, | 80 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, |
81 &target2); | 81 &target2); |
82 | 82 |
83 // If multiple targets are registered with the same accelerator, the target | 83 // If multiple targets are registered with the same accelerator, the target |
84 // registered later processes the accelerator. | 84 // registered later processes the accelerator. |
85 EXPECT_TRUE(manager_.Process(accelerator_a)); | 85 EXPECT_TRUE(manager_.ProcessAccelerator(accelerator_a)); |
86 EXPECT_EQ(0, target1.accelerator_pressed_count()); | 86 EXPECT_EQ(0, target1.accelerator_pressed_count()); |
87 EXPECT_EQ(1, target2.accelerator_pressed_count()); | 87 EXPECT_EQ(1, target2.accelerator_pressed_count()); |
88 } | 88 } |
89 | 89 |
90 TEST_F(AcceleratorManagerTest, Unregister) { | 90 TEST_F(AcceleratorManagerTest, Unregister) { |
91 const Accelerator accelerator_a(VKEY_A, EF_NONE); | 91 const Accelerator accelerator_a(VKEY_A, EF_NONE); |
92 TestTarget target; | 92 TestTarget target; |
93 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, | 93 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, |
94 &target); | 94 &target); |
95 const Accelerator accelerator_b(VKEY_B, EF_NONE); | 95 const Accelerator accelerator_b(VKEY_B, EF_NONE); |
96 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority, | 96 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority, |
97 &target); | 97 &target); |
98 | 98 |
99 // Unregistering a different accelerator does not affect the other | 99 // Unregistering a different accelerator does not affect the other |
100 // accelerator. | 100 // accelerator. |
101 manager_.Unregister(accelerator_b, &target); | 101 manager_.Unregister(accelerator_b, &target); |
102 EXPECT_TRUE(manager_.Process(accelerator_a)); | 102 EXPECT_TRUE(manager_.ProcessAccelerator(accelerator_a)); |
103 EXPECT_EQ(1, target.accelerator_pressed_count()); | 103 EXPECT_EQ(1, target.accelerator_pressed_count()); |
104 | 104 |
105 // The unregistered accelerator is no longer processed. | 105 // The unregistered accelerator is no longer processed. |
106 target.set_accelerator_pressed_count(0); | 106 target.set_accelerator_pressed_count(0); |
107 manager_.Unregister(accelerator_a, &target); | 107 manager_.Unregister(accelerator_a, &target); |
108 EXPECT_FALSE(manager_.Process(accelerator_a)); | 108 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator_a)); |
109 EXPECT_EQ(0, target.accelerator_pressed_count()); | 109 EXPECT_EQ(0, target.accelerator_pressed_count()); |
110 } | 110 } |
111 | 111 |
112 TEST_F(AcceleratorManagerTest, UnregisterAll) { | 112 TEST_F(AcceleratorManagerTest, UnregisterAll) { |
113 const Accelerator accelerator_a(VKEY_A, EF_NONE); | 113 const Accelerator accelerator_a(VKEY_A, EF_NONE); |
114 TestTarget target1; | 114 TestTarget target1; |
115 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, | 115 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, |
116 &target1); | 116 &target1); |
117 const Accelerator accelerator_b(VKEY_B, EF_NONE); | 117 const Accelerator accelerator_b(VKEY_B, EF_NONE); |
118 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority, | 118 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority, |
119 &target1); | 119 &target1); |
120 const Accelerator accelerator_c(VKEY_C, EF_NONE); | 120 const Accelerator accelerator_c(VKEY_C, EF_NONE); |
121 TestTarget target2; | 121 TestTarget target2; |
122 manager_.Register(accelerator_c, AcceleratorManager::kNormalPriority, | 122 manager_.Register(accelerator_c, AcceleratorManager::kNormalPriority, |
123 &target2); | 123 &target2); |
124 manager_.UnregisterAll(&target1); | 124 manager_.UnregisterAll(&target1); |
125 | 125 |
126 // All the accelerators registered for |target1| are no longer processed. | 126 // All the accelerators registered for |target1| are no longer processed. |
127 EXPECT_FALSE(manager_.Process(accelerator_a)); | 127 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator_a)); |
128 EXPECT_FALSE(manager_.Process(accelerator_b)); | 128 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator_b)); |
129 EXPECT_EQ(0, target1.accelerator_pressed_count()); | 129 EXPECT_EQ(0, target1.accelerator_pressed_count()); |
130 | 130 |
131 // UnregisterAll with a different target does not affect the other target. | 131 // UnregisterAll with a different target does not affect the other target. |
132 EXPECT_TRUE(manager_.Process(accelerator_c)); | 132 EXPECT_TRUE(manager_.ProcessAccelerator(accelerator_c)); |
133 EXPECT_EQ(1, target2.accelerator_pressed_count()); | 133 EXPECT_EQ(1, target2.accelerator_pressed_count()); |
134 } | 134 } |
135 | 135 |
136 TEST_F(AcceleratorManagerTest, Process) { | 136 TEST_F(AcceleratorManagerTest, Process) { |
137 TestTarget target; | 137 TestTarget target; |
138 | 138 |
139 // Test all 2*2*2 cases (shift/control/alt = on/off). | 139 // Test all 2*2*2 cases (shift/control/alt = on/off). |
140 for (int mask = 0; mask < 2 * 2 * 2; ++mask) { | 140 for (int mask = 0; mask < 2 * 2 * 2; ++mask) { |
141 Accelerator accelerator(GetAccelerator(VKEY_A, mask)); | 141 Accelerator accelerator(GetAccelerator(VKEY_A, mask)); |
142 const base::string16 text = accelerator.GetShortcutText(); | 142 const base::string16 text = accelerator.GetShortcutText(); |
143 manager_.Register(accelerator, AcceleratorManager::kNormalPriority, | 143 manager_.Register(accelerator, AcceleratorManager::kNormalPriority, |
144 &target); | 144 &target); |
145 | 145 |
146 // The registered accelerator is processed. | 146 // The registered accelerator is processed. |
147 const int last_count = target.accelerator_pressed_count(); | 147 const int last_count = target.accelerator_pressed_count(); |
148 EXPECT_TRUE(manager_.Process(accelerator)) << text; | 148 EXPECT_TRUE(manager_.ProcessAccelerator(accelerator)) << text; |
149 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text; | 149 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text; |
150 | 150 |
151 // The non-registered accelerators are not processed. | 151 // The non-registered accelerators are not processed. |
152 accelerator.set_type(ET_UNKNOWN); | 152 accelerator.set_type(ET_UNKNOWN); |
153 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type | 153 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator)) |
| 154 << text; // different type |
154 accelerator.set_type(ET_TRANSLATED_KEY_PRESS); | 155 accelerator.set_type(ET_TRANSLATED_KEY_PRESS); |
155 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type | 156 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator)) |
| 157 << text; // different type |
156 accelerator.set_type(ET_KEY_RELEASED); | 158 accelerator.set_type(ET_KEY_RELEASED); |
157 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type | 159 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator)) |
| 160 << text; // different type |
158 accelerator.set_type(ET_TRANSLATED_KEY_RELEASE); | 161 accelerator.set_type(ET_TRANSLATED_KEY_RELEASE); |
159 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type | 162 EXPECT_FALSE(manager_.ProcessAccelerator(accelerator)) |
| 163 << text; // different type |
160 | 164 |
161 EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_UNKNOWN, mask))) | 165 EXPECT_FALSE( |
| 166 manager_.ProcessAccelerator(GetAccelerator(VKEY_UNKNOWN, mask))) |
162 << text; // different vkey | 167 << text; // different vkey |
163 EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_B, mask))) | 168 EXPECT_FALSE(manager_.ProcessAccelerator(GetAccelerator(VKEY_B, mask))) |
164 << text; // different vkey | 169 << text; // different vkey |
165 EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_SHIFT, mask))) | 170 EXPECT_FALSE(manager_.ProcessAccelerator(GetAccelerator(VKEY_SHIFT, mask))) |
166 << text; // different vkey | 171 << text; // different vkey |
167 | 172 |
168 for (int test_mask = 0; test_mask < 2 * 2 * 2; ++test_mask) { | 173 for (int test_mask = 0; test_mask < 2 * 2 * 2; ++test_mask) { |
169 if (test_mask == mask) | 174 if (test_mask == mask) |
170 continue; | 175 continue; |
171 const Accelerator test_accelerator(GetAccelerator(VKEY_A, test_mask)); | 176 const Accelerator test_accelerator(GetAccelerator(VKEY_A, test_mask)); |
172 const base::string16 test_text = test_accelerator.GetShortcutText(); | 177 const base::string16 test_text = test_accelerator.GetShortcutText(); |
173 EXPECT_FALSE(manager_.Process(test_accelerator)) | 178 EXPECT_FALSE(manager_.ProcessAccelerator(test_accelerator)) |
174 << text << ", " << test_text; // different modifiers | 179 << text << ", " << test_text; // different modifiers |
175 } | 180 } |
176 | 181 |
177 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text; | 182 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text; |
178 manager_.UnregisterAll(&target); | 183 manager_.UnregisterAll(&target); |
179 } | 184 } |
180 } | 185 } |
181 | 186 |
182 } // namespace test | 187 } // namespace test |
183 } // namespace ui | 188 } // namespace ui |
OLD | NEW |