| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |