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/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 29 matching lines...) Expand all Loading... |
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) { | 49 Accelerator GetAccelerator(KeyboardCode code, int mask) { |
50 return Accelerator(code, mask & (1 << 0), mask & (1 << 1), mask & (1 << 2)); | 50 return Accelerator(code, mask); |
51 } | 51 } |
52 | 52 |
53 } // namespace | 53 } // namespace |
54 | 54 |
55 class AcceleratorManagerTest : public testing::Test { | 55 class AcceleratorManagerTest : public testing::Test { |
56 public: | 56 public: |
57 AcceleratorManagerTest() {} | 57 AcceleratorManagerTest() {} |
58 virtual ~AcceleratorManagerTest() {} | 58 virtual ~AcceleratorManagerTest() {} |
59 | 59 |
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, false, false, false); | 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_.Process(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, false, false, false); | 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_.Process(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, false, false, false); | 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, false, false, false); | 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_.Process(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_.Process(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, false, false, false); | 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, false, false, false); | 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, false, false, false); | 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_.Process(accelerator_a)); |
128 EXPECT_FALSE(manager_.Process(accelerator_b)); | 128 EXPECT_FALSE(manager_.Process(accelerator_b)); |
129 EXPECT_EQ(0, target1.accelerator_pressed_count()); | 129 EXPECT_EQ(0, target1.accelerator_pressed_count()); |
130 | 130 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |
OLD | NEW |