| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 <AppKit/NSEvent.h> | 5 #include <AppKit/NSEvent.h> |
| 6 #include <Carbon/Carbon.h> | 6 #include <Carbon/Carbon.h> |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "chrome/browser/global_keyboard_shortcuts_mac.h" | 9 #include "chrome/browser/global_keyboard_shortcuts_mac.h" |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "chrome/app/chrome_command_ids.h" | 12 #include "chrome/app/chrome_command_ids.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 TEST(GlobalKeyboardShortcuts, ShortcutsToWindowCommand) { | 15 TEST(GlobalKeyboardShortcuts, ShortcutsToWindowCommand) { |
| 16 // Test that an invalid shortcut translates into an invalid command id. | 16 // Test that an invalid shortcut translates into an invalid command id. |
| 17 EXPECT_EQ( | 17 EXPECT_EQ( |
| 18 -1, CommandForWindowKeyboardShortcut(false, false, false, false, 0, 0)); | 18 -1, CommandForWindowKeyboardShortcut(false, false, false, false, 0, 0)); |
| 19 | 19 |
| 20 // Check that all known keyboard shortcuts return valid results. | 20 // Check that all known keyboard shortcuts return valid results. |
| 21 size_t num_shortcuts = 0; | 21 for (const auto& shortcut : GetWindowKeyboardShortcutTable()) { |
| 22 const KeyboardShortcutData *it = | |
| 23 GetWindowKeyboardShortcutTable(&num_shortcuts); | |
| 24 ASSERT_GT(num_shortcuts, 0U); | |
| 25 for (size_t i = 0; i < num_shortcuts; ++i, ++it) { | |
| 26 int cmd_num = CommandForWindowKeyboardShortcut( | 22 int cmd_num = CommandForWindowKeyboardShortcut( |
| 27 it->command_key, it->shift_key, it->cntrl_key, it->opt_key, | 23 shortcut.command_key, shortcut.shift_key, shortcut.cntrl_key, |
| 28 it->vkey_code, it->key_char); | 24 shortcut.opt_key, shortcut.vkey_code, shortcut.key_char); |
| 29 EXPECT_EQ(cmd_num, it->chrome_command); | 25 EXPECT_EQ(cmd_num, shortcut.chrome_command); |
| 30 } | 26 } |
| 31 | 27 |
| 32 // Test that cmd-left and backspace are not window-level commands (else they | 28 // Test that cmd-left and backspace are not window-level commands (else they |
| 33 // would be invoked even if e.g. the omnibox had focus, where they really | 29 // would be invoked even if e.g. the omnibox had focus, where they really |
| 34 // should have text editing functionality). | 30 // should have text editing functionality). |
| 35 EXPECT_EQ(-1, CommandForWindowKeyboardShortcut( | 31 EXPECT_EQ(-1, CommandForWindowKeyboardShortcut( |
| 36 true, false, false, false, kVK_LeftArrow, 0)); | 32 true, false, false, false, kVK_LeftArrow, 0)); |
| 37 EXPECT_EQ(-1, CommandForWindowKeyboardShortcut( | 33 EXPECT_EQ(-1, CommandForWindowKeyboardShortcut( |
| 38 false, false, false, false, kVK_Delete, 0)); | 34 false, false, false, false, kVK_Delete, 0)); |
| 39 | 35 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 } | 99 } |
| 104 } | 100 } |
| 105 | 101 |
| 106 TEST(GlobalKeyboardShortcuts, ShortcutsToDelayedWindowCommand) { | 102 TEST(GlobalKeyboardShortcuts, ShortcutsToDelayedWindowCommand) { |
| 107 // Test that an invalid shortcut translates into an invalid command id. | 103 // Test that an invalid shortcut translates into an invalid command id. |
| 108 EXPECT_EQ(-1, | 104 EXPECT_EQ(-1, |
| 109 CommandForDelayedWindowKeyboardShortcut(false, false, false, false, | 105 CommandForDelayedWindowKeyboardShortcut(false, false, false, false, |
| 110 0, 0)); | 106 0, 0)); |
| 111 | 107 |
| 112 // Check that all known keyboard shortcuts return valid results. | 108 // Check that all known keyboard shortcuts return valid results. |
| 113 size_t num_shortcuts = 0; | 109 for (const auto& shortcut : GetDelayedWindowKeyboardShortcutTable()) { |
| 114 const KeyboardShortcutData *it = | |
| 115 GetDelayedWindowKeyboardShortcutTable(&num_shortcuts); | |
| 116 ASSERT_GT(num_shortcuts, 0U); | |
| 117 for (size_t i = 0; i < num_shortcuts; ++i, ++it) { | |
| 118 int cmd_num = CommandForDelayedWindowKeyboardShortcut( | 110 int cmd_num = CommandForDelayedWindowKeyboardShortcut( |
| 119 it->command_key, it->shift_key, it->cntrl_key, it->opt_key, | 111 shortcut.command_key, shortcut.shift_key, shortcut.cntrl_key, |
| 120 it->vkey_code, it->key_char); | 112 shortcut.opt_key, shortcut.vkey_code, shortcut.key_char); |
| 121 EXPECT_EQ(cmd_num, it->chrome_command); | 113 EXPECT_EQ(cmd_num, shortcut.chrome_command); |
| 122 } | 114 } |
| 123 } | 115 } |
| 124 | 116 |
| 125 TEST(GlobalKeyboardShortcuts, ShortcutsToBrowserCommand) { | 117 TEST(GlobalKeyboardShortcuts, ShortcutsToBrowserCommand) { |
| 126 // Test that an invalid shortcut translates into an invalid command id. | 118 // Test that an invalid shortcut translates into an invalid command id. |
| 127 EXPECT_EQ( | 119 EXPECT_EQ( |
| 128 -1, CommandForBrowserKeyboardShortcut(false, false, false, false, | 120 -1, CommandForBrowserKeyboardShortcut(false, false, false, false, |
| 129 0, 0)); | 121 0, 0)); |
| 130 | 122 |
| 131 // Check that all known keyboard shortcuts return valid results. | 123 // Check that all known keyboard shortcuts return valid results. |
| 132 size_t num_shortcuts = 0; | 124 for (const auto& shortcut : GetBrowserKeyboardShortcutTable()) { |
| 133 const KeyboardShortcutData *it = | |
| 134 GetBrowserKeyboardShortcutTable(&num_shortcuts); | |
| 135 ASSERT_GT(num_shortcuts, 0U); | |
| 136 for (size_t i = 0; i < num_shortcuts; ++i, ++it) { | |
| 137 int cmd_num = CommandForBrowserKeyboardShortcut( | 125 int cmd_num = CommandForBrowserKeyboardShortcut( |
| 138 it->command_key, it->shift_key, it->cntrl_key, it->opt_key, | 126 shortcut.command_key, shortcut.shift_key, shortcut.cntrl_key, |
| 139 it->vkey_code, it->key_char); | 127 shortcut.opt_key, shortcut.vkey_code, shortcut.key_char); |
| 140 EXPECT_EQ(cmd_num, it->chrome_command); | 128 EXPECT_EQ(cmd_num, shortcut.chrome_command); |
| 141 } | 129 } |
| 142 } | 130 } |
| 143 | 131 |
| 144 NSEvent* KeyEvent(bool command_key, bool shift_key, | 132 NSEvent* KeyEvent(bool command_key, bool shift_key, |
| 145 bool cntrl_key, bool opt_key, | 133 bool cntrl_key, bool opt_key, |
| 146 NSString* chars, NSString* charsNoMods) { | 134 NSString* chars, NSString* charsNoMods) { |
| 147 NSUInteger modifierFlags = 0; | 135 NSUInteger modifierFlags = 0; |
| 148 if (command_key) | 136 if (command_key) |
| 149 modifierFlags |= NSCommandKeyMask; | 137 modifierFlags |= NSCommandKeyMask; |
| 150 if (shift_key) | 138 if (shift_key) |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 // cmd-shift-'[' in an RTL context pre 10.9. | 175 // cmd-shift-'[' in an RTL context pre 10.9. |
| 188 EXPECT_EQ('{', KeyCharacterForEvent( | 176 EXPECT_EQ('{', KeyCharacterForEvent( |
| 189 KeyEvent(true, true, false, false, @"{", @"}"))); | 177 KeyEvent(true, true, false, false, @"{", @"}"))); |
| 190 // cmd-shift-'[' in an RTL context on 10.9. | 178 // cmd-shift-'[' in an RTL context on 10.9. |
| 191 EXPECT_EQ('{', KeyCharacterForEvent( | 179 EXPECT_EQ('{', KeyCharacterForEvent( |
| 192 KeyEvent(true, true, false, false, @"[", @"}"))); | 180 KeyEvent(true, true, false, false, @"[", @"}"))); |
| 193 // Test if getting dead-key events return 0 and do not hang. | 181 // Test if getting dead-key events return 0 and do not hang. |
| 194 EXPECT_EQ(0, KeyCharacterForEvent( | 182 EXPECT_EQ(0, KeyCharacterForEvent( |
| 195 KeyEvent(false, false, false, false, @"", @""))); | 183 KeyEvent(false, false, false, false, @"", @""))); |
| 196 } | 184 } |
| OLD | NEW |