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

Side by Side Diff: ui/base/cocoa/events_mac_unittest.mm

Issue 8953037: Aura needs event translation for Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Nico's comment #5. Created 9 years 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/cocoa/events_mac.mm ('k') | ui/base/events.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #import <Cocoa/Cocoa.h>
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/base/events.h"
9 #include "ui/base/test/cocoa_test_event_utils.h"
10 #import "ui/base/test/ui_cocoa_test_helper.h"
11 #include "ui/gfx/point.h"
12
13 using namespace cocoa_test_event_utils;
14
15 namespace {
16
17 class EventsMacTest : public ui::CocoaTest {
18 public:
19 EventsMacTest() {}
20
21 private:
22 DISALLOW_COPY_AND_ASSIGN(EventsMacTest);
23 };
24
25 TEST_F(EventsMacTest, EventTypeFromNative) {
26 NSEvent* native_event = nil;
27 ui::EventType type = ui::ET_UNKNOWN;
28
29 native_event = MouseEventWithType(NSLeftMouseDown, 0);
30 type = ui::EventTypeFromNative(native_event);
31 EXPECT_EQ(ui::ET_MOUSE_PRESSED, type);
32
33 native_event = MouseEventWithType(NSLeftMouseUp, 0);
34 type = ui::EventTypeFromNative(native_event);
35 EXPECT_EQ(ui::ET_MOUSE_RELEASED, type);
36
37 native_event = MouseEventWithType(NSRightMouseDown, 0);
38 type = ui::EventTypeFromNative(native_event);
39 EXPECT_EQ(ui::ET_MOUSE_PRESSED, type);
40
41 native_event = MouseEventWithType(NSRightMouseUp, 0);
42 type = ui::EventTypeFromNative(native_event);
43 EXPECT_EQ(ui::ET_MOUSE_RELEASED, type);
44
45 native_event = MouseEventWithType(NSMouseMoved, 0);
46 type = ui::EventTypeFromNative(native_event);
47 EXPECT_EQ(ui::ET_MOUSE_MOVED, type);
48
49 native_event = MouseEventWithType(NSLeftMouseDragged, 0);
50 type = ui::EventTypeFromNative(native_event);
51 EXPECT_EQ(ui::ET_MOUSE_DRAGGED, type);
52
53 native_event = MouseEventWithType(NSRightMouseDragged, 0);
54 type = ui::EventTypeFromNative(native_event);
55 EXPECT_EQ(ui::ET_MOUSE_DRAGGED, type);
56
57 native_event = EnterExitEventWithType(NSMouseEntered);
58 type = ui::EventTypeFromNative(native_event);
59 EXPECT_EQ(ui::ET_MOUSE_ENTERED, type);
60
61 native_event = EnterExitEventWithType(NSMouseExited);
62 type = ui::EventTypeFromNative(native_event);
63 EXPECT_EQ(ui::ET_MOUSE_EXITED, type);
64
65 native_event = KeyEventWithType(NSKeyDown, 0);
66 type = ui::EventTypeFromNative(native_event);
67 EXPECT_EQ(ui::ET_KEY_PRESSED, type);
68
69 native_event = KeyEventWithType(NSKeyUp, 0);
70 type = ui::EventTypeFromNative(native_event);
71 EXPECT_EQ(ui::ET_KEY_RELEASED, type);
72
73 native_event = KeyEventWithType(NSFlagsChanged, 0);
74 type = ui::EventTypeFromNative(native_event);
75 EXPECT_EQ(ui::ET_KEY_PRESSED, type);
76
77 native_event = OtherEventWithType(NSAppKitDefined);
78 type = ui::EventTypeFromNative(native_event);
79 EXPECT_EQ(ui::ET_UNKNOWN, type);
80
81 native_event = OtherEventWithType(NSSystemDefined);
82 type = ui::EventTypeFromNative(native_event);
83 EXPECT_EQ(ui::ET_UNKNOWN, type);
84
85 native_event = OtherEventWithType(NSApplicationDefined);
86 type = ui::EventTypeFromNative(native_event);
87 EXPECT_EQ(ui::ET_UNKNOWN, type);
88
89 native_event = OtherEventWithType(NSPeriodic);
90 type = ui::EventTypeFromNative(native_event);
91 EXPECT_EQ(ui::ET_UNKNOWN, type);
92
93 native_event = EnterExitEventWithType(NSCursorUpdate);
94 type = ui::EventTypeFromNative(native_event);
95 EXPECT_EQ(ui::ET_UNKNOWN, type);
96
97 native_event = MouseEventWithType(NSOtherMouseDown, 0);
98 type = ui::EventTypeFromNative(native_event);
99 EXPECT_EQ(ui::ET_MOUSE_PRESSED, type);
100
101 native_event = MouseEventWithType(NSOtherMouseUp, 0);
102 type = ui::EventTypeFromNative(native_event);
103 EXPECT_EQ(ui::ET_MOUSE_RELEASED, type);
104
105 native_event = MouseEventWithType(NSOtherMouseDragged, 0);
106 type = ui::EventTypeFromNative(native_event);
107 EXPECT_EQ(ui::ET_MOUSE_DRAGGED, type);
108 }
109
110 TEST_F(EventsMacTest, EventFlagsFromNative) {
111 NSEvent* native_event = nil;
112 int flags = 0;
113
114 // No key flags.
115 native_event = KeyEventWithType(NSKeyDown, 0);
116 flags = ui::EventFlagsFromNative(native_event);
117 EXPECT_EQ(0, flags);
118
119 // All key flags.
120 native_event = KeyEventWithType(NSKeyDown,
121 NSAlphaShiftKeyMask |
122 NSShiftKeyMask |
123 NSControlKeyMask |
124 NSAlternateKeyMask |
125 NSCommandKeyMask);
126 flags = ui::EventFlagsFromNative(native_event);
127 EXPECT_EQ(ui::EF_CAPS_LOCK_DOWN |
128 ui::EF_SHIFT_DOWN |
129 ui::EF_CONTROL_DOWN |
130 ui::EF_ALT_DOWN |
131 ui::EF_COMMAND_DOWN,
132 flags);
133
134 // Left mouse flags.
135 native_event = MouseEventWithType(NSLeftMouseDown, 0);
136 flags = ui::EventFlagsFromNative(native_event);
137 EXPECT_EQ(ui::EF_LEFT_BUTTON_DOWN, flags);
138
139 // Right mouse flags.
140 native_event = MouseEventWithType(NSRightMouseDown, 0);
141 flags = ui::EventFlagsFromNative(native_event);
142 EXPECT_EQ(ui::EF_RIGHT_BUTTON_DOWN, flags);
143
144 // Center mouse flags.
145 native_event = MouseEventWithType(NSOtherMouseDown, 0);
146 flags = ui::EventFlagsFromNative(native_event);
147 EXPECT_EQ(ui::EF_MIDDLE_BUTTON_DOWN, flags);
148 }
149
150 TEST_F(EventsMacTest, EventLocationFromNative) {
151 NSWindow* window = [[NSWindow alloc]
152 initWithContentRect:NSMakeRect(10, 25, 200, 205)
153 styleMask:NSTitledWindowMask
154 backing:NSBackingStoreBuffered
155 defer:NO];
156 [window orderFront:nil];
157
158 // Construct mouse event from window number having position at bottom-left.
159 // Cocoa origin is at bottom-left. ui::Event origin is top-left.
160 NSEvent* native_event =
161 [NSEvent mouseEventWithType:NSLeftMouseDown
162 location:NSMakePoint(10, 15)
163 modifierFlags:0
164 timestamp:[NSDate timeIntervalSinceReferenceDate]
165 windowNumber:[window windowNumber]
166 context:[window graphicsContext]
167 eventNumber:0
168 clickCount:1
169 pressure:0.0f];
170
171 // Expect resulting event to be positioned relative to top-left.
172 gfx::Point location = ui::EventLocationFromNative(native_event);
173 EXPECT_EQ(gfx::Point(10, 190), location);
174
175 [window orderOut:nil];
176 [window close];
177 }
178
179 TEST_F(EventsMacTest, KeyboardCodeFromNative) {
180 NSEvent* native_event = nil;
181 ui::KeyboardCode code = ui::VKEY_UNKNOWN;
182
183 // Simple "x". No modifiers.
184 native_event =
185 [NSEvent keyEventWithType:NSKeyDown
186 location:NSZeroPoint
187 modifierFlags:0
188 timestamp:[NSDate timeIntervalSinceReferenceDate]
189 windowNumber:0
190 context:nil
191 characters:@"x"
192 charactersIgnoringModifiers:@"x"
193 isARepeat:NO
194 keyCode:0x58];
195 code = ui::KeyboardCodeFromNative(native_event);
196 EXPECT_EQ(ui::VKEY_X, code);
197
198 // Option/Alt "x".
199 native_event =
200 [NSEvent keyEventWithType:NSKeyDown
201 location:NSZeroPoint
202 modifierFlags:NSAlternateKeyMask
203 timestamp:[NSDate timeIntervalSinceReferenceDate]
204 windowNumber:0
205 context:nil
206 characters:@"\0x2248" // opt-x
207 charactersIgnoringModifiers:@"x"
208 isARepeat:NO
209 keyCode:0x58];
210 code = ui::KeyboardCodeFromNative(native_event);
211 EXPECT_EQ(ui::VKEY_X, code);
212
213 // Option/Alt (alone).
214 native_event =
215 [NSEvent keyEventWithType:NSFlagsChanged
216 location:NSZeroPoint
217 modifierFlags:NSAlternateKeyMask
218 timestamp:[NSDate timeIntervalSinceReferenceDate]
219 windowNumber:0
220 context:nil
221 characters:@""
222 charactersIgnoringModifiers:@""
223 isARepeat:NO
224 keyCode:0x3a];
225 code = ui::KeyboardCodeFromNative(native_event);
226 EXPECT_EQ(ui::VKEY_MENU, code);
227 }
228
229 TEST_F(EventsMacTest, IsMouseEvent) {
230 NSEvent* native_event = nil;
231
232 native_event = MouseEventWithType(NSLeftMouseDown, 0);
233 EXPECT_TRUE(ui::IsMouseEvent(native_event));
234
235 native_event = MouseEventWithType(NSLeftMouseUp, 0);
236 EXPECT_TRUE(ui::IsMouseEvent(native_event));
237
238 native_event = MouseEventWithType(NSRightMouseDown, 0);
239 EXPECT_TRUE(ui::IsMouseEvent(native_event));
240
241 native_event = MouseEventWithType(NSRightMouseUp, 0);
242 EXPECT_TRUE(ui::IsMouseEvent(native_event));
243
244 native_event = MouseEventWithType(NSMouseMoved, 0);
245 EXPECT_TRUE(ui::IsMouseEvent(native_event));
246
247 native_event = MouseEventWithType(NSLeftMouseDragged, 0);
248 EXPECT_TRUE(ui::IsMouseEvent(native_event));
249
250 native_event = MouseEventWithType(NSRightMouseDragged, 0);
251 EXPECT_TRUE(ui::IsMouseEvent(native_event));
252
253 native_event = EnterExitEventWithType(NSMouseEntered);
254 EXPECT_TRUE(ui::IsMouseEvent(native_event));
255
256 native_event = EnterExitEventWithType(NSMouseExited);
257 EXPECT_TRUE(ui::IsMouseEvent(native_event));
258
259 native_event = KeyEventWithType(NSKeyDown, 0);
260 EXPECT_FALSE(ui::IsMouseEvent(native_event));
261
262 native_event = KeyEventWithType(NSKeyUp, 0);
263 EXPECT_FALSE(ui::IsMouseEvent(native_event));
264
265 native_event = KeyEventWithType(NSFlagsChanged, 0);
266 EXPECT_FALSE(ui::IsMouseEvent(native_event));
267
268 native_event = OtherEventWithType(NSAppKitDefined);
269 EXPECT_FALSE(ui::IsMouseEvent(native_event));
270
271 native_event = OtherEventWithType(NSSystemDefined);
272 EXPECT_FALSE(ui::IsMouseEvent(native_event));
273
274 native_event = OtherEventWithType(NSApplicationDefined);
275 EXPECT_FALSE(ui::IsMouseEvent(native_event));
276
277 native_event = OtherEventWithType(NSPeriodic);
278 EXPECT_FALSE(ui::IsMouseEvent(native_event));
279
280 native_event = EnterExitEventWithType(NSCursorUpdate);
281 EXPECT_FALSE(ui::IsMouseEvent(native_event));
282
283 native_event = MouseEventWithType(NSOtherMouseDown, 0);
284 EXPECT_TRUE(ui::IsMouseEvent(native_event));
285
286 native_event = MouseEventWithType(NSOtherMouseUp, 0);
287 EXPECT_TRUE(ui::IsMouseEvent(native_event));
288
289 native_event = MouseEventWithType(NSOtherMouseDragged, 0);
290 EXPECT_TRUE(ui::IsMouseEvent(native_event));
291 }
292
293 TEST_F(EventsMacTest, CreateNoopEvent) {
294 NSEvent* native_event = ui::CreateNoopEvent();
295 EXPECT_TRUE(native_event != nil);
296 }
297
298 } // namespace
OLDNEW
« no previous file with comments | « ui/base/cocoa/events_mac.mm ('k') | ui/base/events.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698