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

Side by Side Diff: content/browser/cocoa/system_hotkey_map_unittest.mm

Issue 408973002: mac: Load the system hotkeys after launch. (reland) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't parse mouse hotkeys as keyboard hotkeys. Created 6 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <gtest/gtest.h> 5 #include <gtest/gtest.h>
6 6
7 #import <Carbon/Carbon.h> 7 #import <Carbon/Carbon.h>
8 #import <Cocoa/Cocoa.h> 8 #import <Cocoa/Cocoa.h>
9 9
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
11 #include "base/path_service.h" 11 #include "base/path_service.h"
12 #import "content/browser/cocoa/system_hotkey_map.h" 12 #import "content/browser/cocoa/system_hotkey_map.h"
13 #include "content/public/common/content_paths.h" 13 #include "content/public/common/content_paths.h"
14 14
15 namespace {
16
17 NSData* DataFromTestFile(const char* file) {
Robert Sesek 2014/07/22 17:15:24 I'd put this as a method on SystemHotkeyMapTest.
erikchen 2014/07/22 18:30:57 Done.
18 base::FilePath test_data_dir;
19 bool result = PathService::Get(content::DIR_TEST_DATA, &test_data_dir);
20 if (!result)
21 return nil;
22
23 base::FilePath test_path = test_data_dir.AppendASCII(file);
24 std::string test_path_string = test_path.AsUTF8Unsafe();
25 NSString* file_path =
26 [NSString stringWithUTF8String:test_path_string.c_str()];
27 return [NSData dataWithContentsOfFile:file_path];
28 }
29
30 } // namespace
31
15 namespace content { 32 namespace content {
16 33
17 class SystemHotkeyMapTest : public ::testing::Test { 34 class SystemHotkeyMapTest : public ::testing::Test {
18 public: 35 public:
19 SystemHotkeyMapTest() {} 36 SystemHotkeyMapTest() {}
20 }; 37 };
21 38
22 TEST_F(SystemHotkeyMapTest, Parse) { 39 TEST_F(SystemHotkeyMapTest, Parse) {
23 base::FilePath test_data_dir; 40 // This plist was pulled from a real machine. It is extensively populated,
24 ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &test_data_dir)); 41 // and has no missing or incomplete entries.
25 42 NSData* data = DataFromTestFile("mac/mac_system_hotkeys.plist");
26 base::FilePath test_path =
27 test_data_dir.AppendASCII("mac/mac_system_hotkeys.plist");
28 std::string test_path_string = test_path.AsUTF8Unsafe();
29 NSString* file_path =
30 [NSString stringWithUTF8String:test_path_string.c_str()];
31 NSData* data = [NSData dataWithContentsOfFile:file_path];
32 ASSERT_TRUE(data); 43 ASSERT_TRUE(data);
33 44
34 NSDictionary* dictionary = SystemHotkeyMap::DictionaryFromData(data); 45 NSDictionary* dictionary = SystemHotkeyMap::DictionaryFromData(data);
35 ASSERT_TRUE(dictionary); 46 ASSERT_TRUE(dictionary);
36 47
37 SystemHotkeyMap map; 48 SystemHotkeyMap map;
38 bool result = map.ParseDictionary(dictionary); 49 bool result = map.ParseDictionary(dictionary);
39 EXPECT_TRUE(result); 50 EXPECT_TRUE(result);
40 51
41 // Command + ` is a common key binding. It should exist. 52 // Command + ` is a common key binding. It should exist.
(...skipping 16 matching lines...) Expand all
58 } 69 }
59 70
60 TEST_F(SystemHotkeyMapTest, ParseNil) { 71 TEST_F(SystemHotkeyMapTest, ParseNil) {
61 NSDictionary* dictionary = nil; 72 NSDictionary* dictionary = nil;
62 73
63 SystemHotkeyMap map; 74 SystemHotkeyMap map;
64 bool result = map.ParseDictionary(dictionary); 75 bool result = map.ParseDictionary(dictionary);
65 EXPECT_FALSE(result); 76 EXPECT_FALSE(result);
66 } 77 }
67 78
79 TEST_F(SystemHotkeyMapTest, ParseMouse) {
80 // This plist was pulled from a real machine. It has missing entries,
81 // incomplete entries, and mouse hotkeys.
82 NSData* data = DataFromTestFile("mac/mac_system_hotkeys_sparse.plist");
83 ASSERT_TRUE(data);
84
85 NSDictionary* dictionary = SystemHotkeyMap::DictionaryFromData(data);
86 ASSERT_TRUE(dictionary);
87
88 SystemHotkeyMap map;
89 bool result = map.ParseDictionary(dictionary);
90 EXPECT_TRUE(result);
91
92 // Command + ` is a common key binding. It is missing.
93 // TODO(erikchen): OSX uses the default value when the keybinding is missing,
94 // so the hotkey should still be reserved.
95 // http://crbug.com/383558
96 int key_code = kVK_ANSI_Grave;
Robert Sesek 2014/07/22 17:15:24 Use the right types here, and on line 97.
erikchen 2014/07/22 18:30:57 Done.
97 int modifiers = NSCommandKeyMask;
98 EXPECT_FALSE(map.IsHotkeyReserved(key_code, modifiers));
99
100 // There is a mouse keybinding for 0x08. It should not apply to keyboard
101 // hotkeys.
102 key_code = kVK_ANSI_C;
103 modifiers = 0;
104 EXPECT_FALSE(map.IsHotkeyReserved(key_code, modifiers));
105
106 // Command + Alt + = is an accessibility shortcut. Its entry in the plist is
107 // incomplete.
108 // TODO(erikchen): OSX uses the default bindings, so this hotkey should still
109 // be reserved.
110 // http://crbug.com/383558
111 key_code = kVK_ANSI_Equal;
112 modifiers = NSCommandKeyMask | NSAlternateKeyMask;
113 EXPECT_FALSE(map.IsHotkeyReserved(key_code, modifiers));
114 }
115
68 } // namespace content 116 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/cocoa/system_hotkey_map.mm ('k') | content/test/data/mac/mac_system_hotkeys_sparse.plist » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698