| OLD | NEW |
| 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 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
| 9 #import "chrome/browser/ui/cocoa/accelerators_cocoa.h" | 9 #import "chrome/browser/ui/cocoa/accelerators_cocoa.h" |
| 10 #include "chrome/grit/generated_resources.h" |
| 10 #include "chrome/test/base/in_process_browser_test.h" | 11 #include "chrome/test/base/in_process_browser_test.h" |
| 11 #include "testing/gtest_mac.h" | 12 #include "testing/gtest_mac.h" |
| 12 #include "ui/base/accelerators/platform_accelerator_cocoa.h" | 13 #include "ui/base/accelerators/platform_accelerator_cocoa.h" |
| 14 #include "ui/base/l10n/l10n_util_mac.h" |
| 13 #import "ui/events/keycodes/keyboard_code_conversion_mac.h" | 15 #import "ui/events/keycodes/keyboard_code_conversion_mac.h" |
| 14 | 16 |
| 15 typedef InProcessBrowserTest AcceleratorsCocoaBrowserTest; | 17 typedef InProcessBrowserTest AcceleratorsCocoaBrowserTest; |
| 16 | 18 |
| 17 namespace { | 19 namespace { |
| 18 | 20 |
| 19 // Adds all NSMenuItems with an accelerator to the array. | 21 // Adds all NSMenuItems with an accelerator to the array. |
| 20 void AddAcceleratorItemsToArray(NSMenu* menu, NSMutableArray* array) { | 22 void AddAcceleratorItemsToArray(NSMenu* menu, NSMutableArray* array) { |
| 21 for (NSMenuItem* item in [menu itemArray]) { | 23 for (NSMenuItem* item in [menu itemArray]) { |
| 22 NSMenu* submenu = item.submenu; | 24 NSMenu* submenu = item.submenu; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 EXPECT_TRUE(maskEqual); | 107 EXPECT_TRUE(maskEqual); |
| 106 } | 108 } |
| 107 } | 109 } |
| 108 | 110 |
| 109 // Check that each accelerator with a command_id has an associated NSMenuItem | 111 // Check that each accelerator with a command_id has an associated NSMenuItem |
| 110 // in the main menu. If the selector is commandDispatch:, then the tag must | 112 // in the main menu. If the selector is commandDispatch:, then the tag must |
| 111 // match the command_id. | 113 // match the command_id. |
| 112 IN_PROC_BROWSER_TEST_F(AcceleratorsCocoaBrowserTest, | 114 IN_PROC_BROWSER_TEST_F(AcceleratorsCocoaBrowserTest, |
| 113 MappingAcceleratorsInMainMenu) { | 115 MappingAcceleratorsInMainMenu) { |
| 114 AcceleratorsCocoa* keymap = AcceleratorsCocoa::GetInstance(); | 116 AcceleratorsCocoa* keymap = AcceleratorsCocoa::GetInstance(); |
| 117 // The "Share" menu is dynamically populated. |
| 118 NSMenu* mainMenu = [NSApp mainMenu]; |
| 119 NSMenu* fileMenu = [[mainMenu itemWithTag:IDC_FILE_MENU] submenu]; |
| 120 NSMenu* shareMenu = |
| 121 [[fileMenu itemWithTitle:l10n_util::GetNSString(IDS_SHARE_MAC)] submenu]; |
| 122 [[shareMenu delegate] menuNeedsUpdate:shareMenu]; |
| 123 |
| 115 for (AcceleratorsCocoa::AcceleratorMap::iterator it = | 124 for (AcceleratorsCocoa::AcceleratorMap::iterator it = |
| 116 keymap->accelerators_.begin(); | 125 keymap->accelerators_.begin(); |
| 117 it != keymap->accelerators_.end(); | 126 it != keymap->accelerators_.end(); |
| 118 ++it) { | 127 ++it) { |
| 119 const ui::PlatformAcceleratorCocoa* platform_accelerator = | 128 const ui::PlatformAcceleratorCocoa* platform_accelerator = |
| 120 static_cast<const ui::PlatformAcceleratorCocoa*>( | 129 static_cast<const ui::PlatformAcceleratorCocoa*>( |
| 121 it->second.platform_accelerator()); | 130 it->second.platform_accelerator()); |
| 122 | 131 |
| 123 // Check that there exists a corresponding NSMenuItem. | 132 // Check that there exists a corresponding NSMenuItem. |
| 124 NSMenuItem* item = | 133 NSMenuItem* item = |
| 125 MenuContainsAccelerator([NSApp mainMenu], | 134 MenuContainsAccelerator([NSApp mainMenu], |
| 126 platform_accelerator->characters(), | 135 platform_accelerator->characters(), |
| 127 platform_accelerator->modifier_mask()); | 136 platform_accelerator->modifier_mask()); |
| 128 EXPECT_TRUE(item); | 137 EXPECT_TRUE(item); |
| 129 | 138 |
| 130 // If the menu uses a commandDispatch:, the tag must match the command id! | 139 // If the menu uses a commandDispatch:, the tag must match the command id! |
| 131 // Added an exception for IDC_TOGGLE_FULLSCREEN_TOOLBAR, which conflicts | 140 // Added an exception for IDC_TOGGLE_FULLSCREEN_TOOLBAR, which conflicts |
| 132 // with IDC_PRESENTATION_MODE. | 141 // with IDC_PRESENTATION_MODE. |
| 133 if (item.action == @selector(commandDispatch:) | 142 if (item.action == @selector(commandDispatch:) |
| 134 && item.tag != IDC_TOGGLE_FULLSCREEN_TOOLBAR) | 143 && item.tag != IDC_TOGGLE_FULLSCREEN_TOOLBAR) |
| 135 EXPECT_EQ(item.tag, it->first); | 144 EXPECT_EQ(item.tag, it->first); |
| 136 } | 145 } |
| 137 } | 146 } |
| OLD | NEW |