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

Side by Side Diff: content/browser/renderer_host/input/web_input_event_builders_mac_unittest.mm

Issue 2573073003: Collapse the API surface on WebInputEvent via accessor functions. (Closed)
Patch Set: Fix nits Created 3 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "content/browser/renderer_host/input/web_input_event_builders_mac.h" 5 #include "content/browser/renderer_host/input/web_input_event_builders_mac.h"
6 6
7 #include <Carbon/Carbon.h> 7 #include <Carbon/Carbon.h>
8 #import <Cocoa/Cocoa.h> 8 #import <Cocoa/Cocoa.h>
9 #include <stddef.h> 9 #include <stddef.h>
10 10
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 } 67 }
68 68
69 } // namespace 69 } // namespace
70 70
71 // Test that arrow keys don't have numpad modifier set. 71 // Test that arrow keys don't have numpad modifier set.
72 TEST(WebInputEventBuilderMacTest, ArrowKeyNumPad) { 72 TEST(WebInputEventBuilderMacTest, ArrowKeyNumPad) {
73 // Left 73 // Left
74 NSEvent* mac_event = BuildFakeKeyEvent(0x7B, NSLeftArrowFunctionKey, 74 NSEvent* mac_event = BuildFakeKeyEvent(0x7B, NSLeftArrowFunctionKey,
75 NSNumericPadKeyMask, NSKeyDown); 75 NSNumericPadKeyMask, NSKeyDown);
76 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event); 76 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event);
77 EXPECT_EQ(0, web_event.modifiers); 77 EXPECT_EQ(0, web_event.modifiers());
78 EXPECT_EQ(ui::DomCode::ARROW_LEFT, 78 EXPECT_EQ(ui::DomCode::ARROW_LEFT,
79 static_cast<ui::DomCode>(web_event.domCode)); 79 static_cast<ui::DomCode>(web_event.domCode));
80 EXPECT_EQ(ui::DomKey::ARROW_LEFT, web_event.domKey); 80 EXPECT_EQ(ui::DomKey::ARROW_LEFT, web_event.domKey);
81 81
82 // Right 82 // Right
83 mac_event = BuildFakeKeyEvent(0x7C, NSRightArrowFunctionKey, 83 mac_event = BuildFakeKeyEvent(0x7C, NSRightArrowFunctionKey,
84 NSNumericPadKeyMask, NSKeyDown); 84 NSNumericPadKeyMask, NSKeyDown);
85 web_event = WebKeyboardEventBuilder::Build(mac_event); 85 web_event = WebKeyboardEventBuilder::Build(mac_event);
86 EXPECT_EQ(0, web_event.modifiers); 86 EXPECT_EQ(0, web_event.modifiers());
87 EXPECT_EQ(ui::DomCode::ARROW_RIGHT, 87 EXPECT_EQ(ui::DomCode::ARROW_RIGHT,
88 static_cast<ui::DomCode>(web_event.domCode)); 88 static_cast<ui::DomCode>(web_event.domCode));
89 EXPECT_EQ(ui::DomKey::ARROW_RIGHT, web_event.domKey); 89 EXPECT_EQ(ui::DomKey::ARROW_RIGHT, web_event.domKey);
90 90
91 // Down 91 // Down
92 mac_event = BuildFakeKeyEvent(0x7D, NSDownArrowFunctionKey, 92 mac_event = BuildFakeKeyEvent(0x7D, NSDownArrowFunctionKey,
93 NSNumericPadKeyMask, NSKeyDown); 93 NSNumericPadKeyMask, NSKeyDown);
94 web_event = WebKeyboardEventBuilder::Build(mac_event); 94 web_event = WebKeyboardEventBuilder::Build(mac_event);
95 EXPECT_EQ(0, web_event.modifiers); 95 EXPECT_EQ(0, web_event.modifiers());
96 EXPECT_EQ(ui::DomCode::ARROW_DOWN, 96 EXPECT_EQ(ui::DomCode::ARROW_DOWN,
97 static_cast<ui::DomCode>(web_event.domCode)); 97 static_cast<ui::DomCode>(web_event.domCode));
98 EXPECT_EQ(ui::DomKey::ARROW_DOWN, web_event.domKey); 98 EXPECT_EQ(ui::DomKey::ARROW_DOWN, web_event.domKey);
99 99
100 // Up 100 // Up
101 mac_event = BuildFakeKeyEvent(0x7E, NSUpArrowFunctionKey, NSNumericPadKeyMask, 101 mac_event = BuildFakeKeyEvent(0x7E, NSUpArrowFunctionKey, NSNumericPadKeyMask,
102 NSKeyDown); 102 NSKeyDown);
103 web_event = WebKeyboardEventBuilder::Build(mac_event); 103 web_event = WebKeyboardEventBuilder::Build(mac_event);
104 EXPECT_EQ(0, web_event.modifiers); 104 EXPECT_EQ(0, web_event.modifiers());
105 EXPECT_EQ(ui::DomCode::ARROW_UP, static_cast<ui::DomCode>(web_event.domCode)); 105 EXPECT_EQ(ui::DomCode::ARROW_UP, static_cast<ui::DomCode>(web_event.domCode));
106 EXPECT_EQ(ui::DomKey::ARROW_UP, web_event.domKey); 106 EXPECT_EQ(ui::DomKey::ARROW_UP, web_event.domKey);
107 } 107 }
108 108
109 // Test that control sequence generate the correct vkey code. 109 // Test that control sequence generate the correct vkey code.
110 TEST(WebInputEventBuilderMacTest, ControlSequence) { 110 TEST(WebInputEventBuilderMacTest, ControlSequence) {
111 // Ctrl-[ generates escape. 111 // Ctrl-[ generates escape.
112 NSEvent* mac_event = 112 NSEvent* mac_event =
113 BuildFakeKeyEvent(0x21, 0x1b, NSControlKeyMask, NSKeyDown); 113 BuildFakeKeyEvent(0x21, 0x1b, NSControlKeyMask, NSKeyDown);
114 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event); 114 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 // pressed simultaneously. 173 // pressed simultaneously.
174 TEST(WebInputEventFactoryTestMac, SimultaneousModifierKeys) { 174 TEST(WebInputEventFactoryTestMac, SimultaneousModifierKeys) {
175 for (size_t i = 0; i < arraysize(kModifierKeys) / 2; ++i) { 175 for (size_t i = 0; i < arraysize(kModifierKeys) / 2; ++i) {
176 const ModifierKey& left = kModifierKeys[2 * i]; 176 const ModifierKey& left = kModifierKeys[2 * i];
177 const ModifierKey& right = kModifierKeys[2 * i + 1]; 177 const ModifierKey& right = kModifierKeys[2 * i + 1];
178 // Press the left key. 178 // Press the left key.
179 NSEvent* mac_event = BuildFakeKeyEvent( 179 NSEvent* mac_event = BuildFakeKeyEvent(
180 left.mac_key_code, 0, left.left_or_right_mask | left.non_specific_mask, 180 left.mac_key_code, 0, left.left_or_right_mask | left.non_specific_mask,
181 NSFlagsChanged); 181 NSFlagsChanged);
182 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event); 182 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event);
183 EXPECT_EQ(WebInputEvent::RawKeyDown, web_event.type); 183 EXPECT_EQ(WebInputEvent::RawKeyDown, web_event.type());
184 // Press the right key 184 // Press the right key
185 mac_event = 185 mac_event =
186 BuildFakeKeyEvent(right.mac_key_code, 0, 186 BuildFakeKeyEvent(right.mac_key_code, 0,
187 left.left_or_right_mask | right.left_or_right_mask | 187 left.left_or_right_mask | right.left_or_right_mask |
188 left.non_specific_mask, 188 left.non_specific_mask,
189 NSFlagsChanged); 189 NSFlagsChanged);
190 web_event = WebKeyboardEventBuilder::Build(mac_event); 190 web_event = WebKeyboardEventBuilder::Build(mac_event);
191 EXPECT_EQ(WebInputEvent::RawKeyDown, web_event.type); 191 EXPECT_EQ(WebInputEvent::RawKeyDown, web_event.type());
192 // Release the right key 192 // Release the right key
193 mac_event = BuildFakeKeyEvent( 193 mac_event = BuildFakeKeyEvent(
194 right.mac_key_code, 0, left.left_or_right_mask | left.non_specific_mask, 194 right.mac_key_code, 0, left.left_or_right_mask | left.non_specific_mask,
195 NSFlagsChanged); 195 NSFlagsChanged);
196 // Release the left key 196 // Release the left key
197 mac_event = BuildFakeKeyEvent(left.mac_key_code, 0, 0, NSFlagsChanged); 197 mac_event = BuildFakeKeyEvent(left.mac_key_code, 0, 0, NSFlagsChanged);
198 web_event = WebKeyboardEventBuilder::Build(mac_event); 198 web_event = WebKeyboardEventBuilder::Build(mac_event);
199 EXPECT_EQ(WebInputEvent::KeyUp, web_event.type); 199 EXPECT_EQ(WebInputEvent::KeyUp, web_event.type());
200 } 200 }
201 } 201 }
202 202
203 // Test that individual modifier keys are still reported correctly, even if the 203 // Test that individual modifier keys are still reported correctly, even if the
204 // undocumented left- or right-hand flags are not set. 204 // undocumented left- or right-hand flags are not set.
205 TEST(WebInputEventBuilderMacTest, MissingUndocumentedModifierFlags) { 205 TEST(WebInputEventBuilderMacTest, MissingUndocumentedModifierFlags) {
206 for (size_t i = 0; i < arraysize(kModifierKeys); ++i) { 206 for (size_t i = 0; i < arraysize(kModifierKeys); ++i) {
207 const ModifierKey& key = kModifierKeys[i]; 207 const ModifierKey& key = kModifierKeys[i];
208 NSEvent* mac_event = BuildFakeKeyEvent( 208 NSEvent* mac_event = BuildFakeKeyEvent(
209 key.mac_key_code, 0, key.non_specific_mask, NSFlagsChanged); 209 key.mac_key_code, 0, key.non_specific_mask, NSFlagsChanged);
210 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event); 210 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event);
211 EXPECT_EQ(WebInputEvent::RawKeyDown, web_event.type); 211 EXPECT_EQ(WebInputEvent::RawKeyDown, web_event.type());
212 mac_event = BuildFakeKeyEvent(key.mac_key_code, 0, 0, NSFlagsChanged); 212 mac_event = BuildFakeKeyEvent(key.mac_key_code, 0, 0, NSFlagsChanged);
213 web_event = WebKeyboardEventBuilder::Build(mac_event); 213 web_event = WebKeyboardEventBuilder::Build(mac_event);
214 EXPECT_EQ(WebInputEvent::KeyUp, web_event.type); 214 EXPECT_EQ(WebInputEvent::KeyUp, web_event.type());
215 } 215 }
216 } 216 }
217 217
218 // Test system key events recognition. 218 // Test system key events recognition.
219 TEST(WebInputEventBuilderMacTest, SystemKeyEvents) { 219 TEST(WebInputEventBuilderMacTest, SystemKeyEvents) {
220 // Cmd + B should not be treated as system event. 220 // Cmd + B should not be treated as system event.
221 NSEvent* macEvent = 221 NSEvent* macEvent =
222 BuildFakeKeyEvent(kVK_ANSI_B, 'B', NSCommandKeyMask, NSKeyDown); 222 BuildFakeKeyEvent(kVK_ANSI_B, 'B', NSCommandKeyMask, NSKeyDown);
223 WebKeyboardEvent webEvent = WebKeyboardEventBuilder::Build(macEvent); 223 WebKeyboardEvent webEvent = WebKeyboardEventBuilder::Build(macEvent);
224 EXPECT_FALSE(webEvent.isSystemKey); 224 EXPECT_FALSE(webEvent.isSystemKey);
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 EXPECT_EQ(web_event.deltaY, ui_event.y_offset()); 610 EXPECT_EQ(web_event.deltaY, ui_event.y_offset());
611 611
612 EXPECT_EQ(11, web_event.x); 612 EXPECT_EQ(11, web_event.x);
613 EXPECT_EQ(web_event.x, ui_event.x()); 613 EXPECT_EQ(web_event.x, ui_event.x());
614 614
615 // Both ui:: and blink:: events use an origin at the top-left. 615 // Both ui:: and blink:: events use an origin at the top-left.
616 EXPECT_EQ(100 - 22, web_event.y); 616 EXPECT_EQ(100 - 22, web_event.y);
617 EXPECT_EQ(web_event.y, ui_event.y()); 617 EXPECT_EQ(web_event.y, ui_event.y());
618 [window close]; 618 [window close];
619 } 619 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698