Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: ui/base/accelerators/accelerator_manager_unittest.cc

Issue 10446010: wip: Add ui::EventType parameter. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: wip - views_unittests Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/accelerators/accelerator_gtk.cc ('k') | ui/views/accessible_pane_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/base/events.h" 9 #include "ui/base/events.h"
10 #include "ui/base/keycodes/keyboard_codes.h" 10 #include "ui/base/keycodes/keyboard_codes.h"
(...skipping 28 matching lines...) Expand all
39 39
40 bool TestTarget::AcceleratorPressed(const Accelerator& accelerator) { 40 bool TestTarget::AcceleratorPressed(const Accelerator& accelerator) {
41 ++accelerator_pressed_count_; 41 ++accelerator_pressed_count_;
42 return true; 42 return true;
43 } 43 }
44 44
45 bool TestTarget::CanHandleAccelerators() const { 45 bool TestTarget::CanHandleAccelerators() const {
46 return true; 46 return true;
47 } 47 }
48 48
49 Accelerator GetAccelerator(KeyboardCode code, int mask) {
50 return Accelerator(code, mask);
51 }
52
53 } // namespace 49 } // namespace
54 50
55 class AcceleratorManagerTest : public testing::Test { 51 class AcceleratorManagerTest : public testing::Test {
56 public: 52 public:
57 AcceleratorManagerTest() {} 53 AcceleratorManagerTest() {}
58 virtual ~AcceleratorManagerTest() {} 54 virtual ~AcceleratorManagerTest() {}
59 55
60 AcceleratorManager manager_; 56 AcceleratorManager manager_;
61 }; 57 };
62 58
63 TEST_F(AcceleratorManagerTest, Register) { 59 TEST_F(AcceleratorManagerTest, Register) {
64 const Accelerator accelerator_a(VKEY_A, EF_NONE); 60 const Accelerator accelerator_a(VKEY_A, EF_NONE, ET_KEY_PRESSED);
65 TestTarget target; 61 TestTarget target;
66 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, 62 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
67 &target); 63 &target);
68 64
69 // The registered accelerator is processed. 65 // The registered accelerator is processed.
70 EXPECT_TRUE(manager_.Process(accelerator_a)); 66 EXPECT_TRUE(manager_.Process(accelerator_a));
71 EXPECT_EQ(1, target.accelerator_pressed_count()); 67 EXPECT_EQ(1, target.accelerator_pressed_count());
72 } 68 }
73 69
74 TEST_F(AcceleratorManagerTest, RegisterMultipleTarget) { 70 TEST_F(AcceleratorManagerTest, RegisterMultipleTarget) {
75 const Accelerator accelerator_a(VKEY_A, EF_NONE); 71 const Accelerator accelerator_a(VKEY_A, EF_NONE, ET_KEY_PRESSED);
76 TestTarget target1; 72 TestTarget target1;
77 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, 73 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
78 &target1); 74 &target1);
79 TestTarget target2; 75 TestTarget target2;
80 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, 76 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
81 &target2); 77 &target2);
82 78
83 // If multiple targets are registered with the same accelerator, the target 79 // If multiple targets are registered with the same accelerator, the target
84 // registered later processes the accelerator. 80 // registered later processes the accelerator.
85 EXPECT_TRUE(manager_.Process(accelerator_a)); 81 EXPECT_TRUE(manager_.Process(accelerator_a));
86 EXPECT_EQ(0, target1.accelerator_pressed_count()); 82 EXPECT_EQ(0, target1.accelerator_pressed_count());
87 EXPECT_EQ(1, target2.accelerator_pressed_count()); 83 EXPECT_EQ(1, target2.accelerator_pressed_count());
88 } 84 }
89 85
90 TEST_F(AcceleratorManagerTest, Unregister) { 86 TEST_F(AcceleratorManagerTest, Unregister) {
91 const Accelerator accelerator_a(VKEY_A, EF_NONE); 87 const Accelerator accelerator_a(VKEY_A, EF_NONE, ET_KEY_PRESSED);
92 TestTarget target; 88 TestTarget target;
93 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, 89 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
94 &target); 90 &target);
95 const Accelerator accelerator_b(VKEY_B, EF_NONE); 91 const Accelerator accelerator_b(VKEY_B, EF_NONE, ET_KEY_PRESSED);
96 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority, 92 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority,
97 &target); 93 &target);
98 94
99 // Unregistering a different accelerator does not affect the other 95 // Unregistering a different accelerator does not affect the other
100 // accelerator. 96 // accelerator.
101 manager_.Unregister(accelerator_b, &target); 97 manager_.Unregister(accelerator_b, &target);
102 EXPECT_TRUE(manager_.Process(accelerator_a)); 98 EXPECT_TRUE(manager_.Process(accelerator_a));
103 EXPECT_EQ(1, target.accelerator_pressed_count()); 99 EXPECT_EQ(1, target.accelerator_pressed_count());
104 100
105 // The unregistered accelerator is no longer processed. 101 // The unregistered accelerator is no longer processed.
106 target.set_accelerator_pressed_count(0); 102 target.set_accelerator_pressed_count(0);
107 manager_.Unregister(accelerator_a, &target); 103 manager_.Unregister(accelerator_a, &target);
108 EXPECT_FALSE(manager_.Process(accelerator_a)); 104 EXPECT_FALSE(manager_.Process(accelerator_a));
109 EXPECT_EQ(0, target.accelerator_pressed_count()); 105 EXPECT_EQ(0, target.accelerator_pressed_count());
110 } 106 }
111 107
112 TEST_F(AcceleratorManagerTest, UnregisterAll) { 108 TEST_F(AcceleratorManagerTest, UnregisterAll) {
113 const Accelerator accelerator_a(VKEY_A, EF_NONE); 109 const Accelerator accelerator_a(VKEY_A, EF_NONE, ET_KEY_PRESSED);
114 TestTarget target1; 110 TestTarget target1;
115 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority, 111 manager_.Register(accelerator_a, AcceleratorManager::kNormalPriority,
116 &target1); 112 &target1);
117 const Accelerator accelerator_b(VKEY_B, EF_NONE); 113 const Accelerator accelerator_b(VKEY_B, EF_NONE, ET_KEY_PRESSED);
118 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority, 114 manager_.Register(accelerator_b, AcceleratorManager::kNormalPriority,
119 &target1); 115 &target1);
120 const Accelerator accelerator_c(VKEY_C, EF_NONE); 116 const Accelerator accelerator_c(VKEY_C, EF_NONE, ET_KEY_PRESSED);
121 TestTarget target2; 117 TestTarget target2;
122 manager_.Register(accelerator_c, AcceleratorManager::kNormalPriority, 118 manager_.Register(accelerator_c, AcceleratorManager::kNormalPriority,
123 &target2); 119 &target2);
124 manager_.UnregisterAll(&target1); 120 manager_.UnregisterAll(&target1);
125 121
126 // All the accelerators registered for |target1| are no longer processed. 122 // All the accelerators registered for |target1| are no longer processed.
127 EXPECT_FALSE(manager_.Process(accelerator_a)); 123 EXPECT_FALSE(manager_.Process(accelerator_a));
128 EXPECT_FALSE(manager_.Process(accelerator_b)); 124 EXPECT_FALSE(manager_.Process(accelerator_b));
129 EXPECT_EQ(0, target1.accelerator_pressed_count()); 125 EXPECT_EQ(0, target1.accelerator_pressed_count());
130 126
131 // UnregisterAll with a different target does not affect the other target. 127 // UnregisterAll with a different target does not affect the other target.
132 EXPECT_TRUE(manager_.Process(accelerator_c)); 128 EXPECT_TRUE(manager_.Process(accelerator_c));
133 EXPECT_EQ(1, target2.accelerator_pressed_count()); 129 EXPECT_EQ(1, target2.accelerator_pressed_count());
134 } 130 }
135 131
136 TEST_F(AcceleratorManagerTest, Process) { 132 TEST_F(AcceleratorManagerTest, Process) {
137 TestTarget target; 133 TestTarget target;
138 134
139 // Test all 2*2*2 cases (shift/control/alt = on/off). 135 // Test all 2*2*2 cases (shift/control/alt = on/off).
140 for (int mask = 0; mask < 2 * 2 * 2; ++mask) { 136 for (int mask = 0; mask < 2 * 2 * 2; ++mask) {
141 Accelerator accelerator(GetAccelerator(VKEY_A, mask)); 137 Accelerator accelerator(VKEY_A, mask, ET_KEY_PRESSED);
142 const string16 text = accelerator.GetShortcutText(); 138 const string16 text = accelerator.GetShortcutText();
143 manager_.Register(accelerator, AcceleratorManager::kNormalPriority, 139 manager_.Register(accelerator, AcceleratorManager::kNormalPriority,
144 &target); 140 &target);
145 141
146 // The registered accelerator is processed. 142 // The registered accelerator is processed.
147 const int last_count = target.accelerator_pressed_count(); 143 const int last_count = target.accelerator_pressed_count();
148 EXPECT_TRUE(manager_.Process(accelerator)) << text; 144 EXPECT_TRUE(manager_.Process(accelerator)) << text;
149 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text; 145 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text;
150 146
151 // The non-registered accelerators are not processed. 147 // The non-registered accelerators are not processed.
152 accelerator.set_type(ET_UNKNOWN); 148 Accelerator accelerator2(VKEY_A, mask, ET_UNKNOWN);
153 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type 149 EXPECT_FALSE(manager_.Process(accelerator2)) << text; // different type
154 accelerator.set_type(ET_TRANSLATED_KEY_PRESS); 150 Accelerator accelerator3(VKEY_A, mask, ET_TRANSLATED_KEY_PRESS);
155 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type 151 EXPECT_FALSE(manager_.Process(accelerator3)) << text; // different type
156 accelerator.set_type(ET_KEY_RELEASED); 152 Accelerator accelerator4(VKEY_A, mask, ET_KEY_RELEASED);
157 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type 153 EXPECT_FALSE(manager_.Process(accelerator4)) << text; // different type
158 accelerator.set_type(ET_TRANSLATED_KEY_RELEASE); 154 Accelerator accelerator5(VKEY_A, mask, ET_TRANSLATED_KEY_RELEASE);
159 EXPECT_FALSE(manager_.Process(accelerator)) << text; // different type 155 EXPECT_FALSE(manager_.Process(accelerator5)) << text; // different type
160 156
161 EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_UNKNOWN, mask))) 157 EXPECT_FALSE(manager_.Process(Accelerator(VKEY_UNKNOWN,
158 mask,
159 ET_KEY_PRESSED)))
162 << text; // different vkey 160 << text; // different vkey
163 EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_B, mask))) 161 EXPECT_FALSE(manager_.Process(Accelerator(VKEY_B, mask, ET_KEY_PRESSED)))
164 << text; // different vkey 162 << text; // different vkey
165 EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_SHIFT, mask))) 163 EXPECT_FALSE(manager_.Process(Accelerator(VKEY_SHIFT,
164 mask,
165 ET_KEY_PRESSED)))
166 << text; // different vkey 166 << text; // different vkey
167 167
168 for (int test_mask = 0; test_mask < 2 * 2 * 2; ++test_mask) { 168 for (int test_mask = 0; test_mask < 2 * 2 * 2; ++test_mask) {
169 if (test_mask == mask) 169 if (test_mask == mask)
170 continue; 170 continue;
171 const Accelerator test_accelerator(GetAccelerator(VKEY_A, test_mask)); 171 const Accelerator test_accelerator(VKEY_A, test_mask, ET_KEY_PRESSED);
172 const string16 test_text = test_accelerator.GetShortcutText(); 172 const string16 test_text = test_accelerator.GetShortcutText();
173 EXPECT_FALSE(manager_.Process(test_accelerator)) 173 EXPECT_FALSE(manager_.Process(test_accelerator))
174 << text << ", " << test_text; // different modifiers 174 << text << ", " << test_text; // different modifiers
175 } 175 }
176 176
177 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text; 177 EXPECT_EQ(last_count + 1, target.accelerator_pressed_count()) << text;
178 manager_.UnregisterAll(&target); 178 manager_.UnregisterAll(&target);
179 } 179 }
180 } 180 }
181 181
182 } // namespace test 182 } // namespace test
183 } // namespace ui 183 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/accelerators/accelerator_gtk.cc ('k') | ui/views/accessible_pane_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698