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 #import "chrome/browser/ui/cocoa/browser_window_command_handler.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_command_handler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #import "base/mac/foundation_util.h" | 8 #import "base/mac/foundation_util.h" |
9 #include "chrome/app/chrome_command_ids.h" | 9 #include "chrome/app/chrome_command_ids.h" |
10 #import "chrome/browser/app_controller_mac.h" | 10 #import "chrome/browser/app_controller_mac.h" |
11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
12 #include "chrome/browser/ui/bookmarks/bookmark_utils.h" | 12 #include "chrome/browser/ui/bookmarks/bookmark_utils.h" |
13 #include "chrome/browser/ui/browser_commands.h" | 13 #include "chrome/browser/ui/browser_commands.h" |
14 #include "chrome/browser/ui/browser_finder.h" | 14 #include "chrome/browser/ui/browser_finder.h" |
15 #include "chrome/browser/ui/browser_window.h" | 15 #include "chrome/browser/ui/browser_window.h" |
16 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" | 16 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" |
17 #include "chrome/browser/ui/toolbar/encoding_menu_controller.h" | |
18 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
19 #include "chrome/grit/generated_resources.h" | 18 #include "chrome/grit/generated_resources.h" |
20 #include "content/public/browser/user_metrics.h" | 19 #include "content/public/browser/user_metrics.h" |
21 #include "content/public/browser/web_contents.h" | 20 #include "content/public/browser/web_contents.h" |
22 #import "ui/base/cocoa/cocoa_base_utils.h" | 21 #import "ui/base/cocoa/cocoa_base_utils.h" |
23 #include "ui/base/l10n/l10n_util.h" | 22 #include "ui/base/l10n/l10n_util.h" |
24 #include "ui/base/l10n/l10n_util_mac.h" | 23 #include "ui/base/l10n/l10n_util_mac.h" |
25 | 24 |
26 namespace { | 25 namespace { |
27 | 26 |
(...skipping 22 matching lines...) Expand all Loading... |
50 if (tag == IDC_SHOW_BOOKMARK_BAR) { | 49 if (tag == IDC_SHOW_BOOKMARK_BAR) { |
51 SetToggleState(browser->window()->IsBookmarkBarVisible(), item); | 50 SetToggleState(browser->window()->IsBookmarkBarVisible(), item); |
52 return; | 51 return; |
53 } | 52 } |
54 | 53 |
55 if (tag == IDC_TOGGLE_FULLSCREEN_TOOLBAR) { | 54 if (tag == IDC_TOGGLE_FULLSCREEN_TOOLBAR) { |
56 PrefService* prefs = browser->profile()->GetPrefs(); | 55 PrefService* prefs = browser->profile()->GetPrefs(); |
57 SetToggleState(prefs->GetBoolean(prefs::kShowFullscreenToolbar), item); | 56 SetToggleState(prefs->GetBoolean(prefs::kShowFullscreenToolbar), item); |
58 return; | 57 return; |
59 } | 58 } |
60 | |
61 // Update the checked/unchecked state of items in the encoding menu. | |
62 // On Windows, this logic is part of |EncodingMenuModel| in | |
63 // browser/ui/views/toolbar_view.h. | |
64 EncodingMenuController encoding_controller; | |
65 if (!encoding_controller.DoesCommandBelongToEncodingMenu(tag)) | |
66 return; | |
67 | |
68 Profile* profile = browser->profile(); | |
69 DCHECK(profile); | |
70 content::WebContents* current_tab = | |
71 browser->tab_strip_model()->GetActiveWebContents(); | |
72 if (!current_tab) | |
73 return; | |
74 | |
75 const std::string encoding = current_tab->GetEncoding(); | |
76 | |
77 SetToggleState(encoding_controller.IsItemChecked(profile, encoding, tag), | |
78 item); | |
79 } | 59 } |
80 | 60 |
81 NSString* GetTitleForViewsFullscreenMenuItem(Browser* browser) { | 61 NSString* GetTitleForViewsFullscreenMenuItem(Browser* browser) { |
82 return l10n_util::GetNSString(browser->window()->IsFullscreen() | 62 return l10n_util::GetNSString(browser->window()->IsFullscreen() |
83 ? IDS_EXIT_FULLSCREEN_MAC | 63 ? IDS_EXIT_FULLSCREEN_MAC |
84 : IDS_ENTER_FULLSCREEN_MAC); | 64 : IDS_ENTER_FULLSCREEN_MAC); |
85 } | 65 } |
86 | 66 |
87 // Get the text for the "Enter/Exit Fullscreen" menu item. | 67 // Get the text for the "Enter/Exit Fullscreen" menu item. |
88 // TODO(jackhou): Remove the dependency on BrowserWindowController(Private). | 68 // TODO(jackhou): Remove the dependency on BrowserWindowController(Private). |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 break; | 165 break; |
186 } | 166 } |
187 case IDC_SHOW_AS_TAB: { | 167 case IDC_SHOW_AS_TAB: { |
188 // Hide this menu option if the window is tabbed or is the devtools | 168 // Hide this menu option if the window is tabbed or is the devtools |
189 // window. | 169 // window. |
190 NSMenuItem* menuItem = base::mac::ObjCCast<NSMenuItem>(item); | 170 NSMenuItem* menuItem = base::mac::ObjCCast<NSMenuItem>(item); |
191 [menuItem setHidden:browser->is_type_tabbed() || browser->is_devtools()]; | 171 [menuItem setHidden:browser->is_type_tabbed() || browser->is_devtools()]; |
192 break; | 172 break; |
193 } | 173 } |
194 default: | 174 default: |
195 // Special handling for the contents of the Text Encoding submenu. On | 175 break; |
196 // Mac OS, instead of enabling/disabling the top-level menu item, we | |
197 // enable/disable the submenu's contents (per Apple's HIG). | |
198 EncodingMenuController encoding_controller; | |
199 if (encoding_controller.DoesCommandBelongToEncodingMenu(tag)) | |
200 enable &= chrome::IsCommandEnabled(browser, IDC_ENCODING_MENU); | |
201 } | 176 } |
202 | 177 |
203 // If the item is toggleable, find its toggle state and | 178 // If the item is toggleable, find its toggle state and |
204 // try to update it. This is a little awkward, but the alternative is | 179 // try to update it. This is a little awkward, but the alternative is |
205 // to check after a commandDispatch, which seems worse. | 180 // to check after a commandDispatch, which seems worse. |
206 UpdateToggleStateWithTag(tag, item, window); | 181 UpdateToggleStateWithTag(tag, item, window); |
207 | 182 |
208 return enable; | 183 return enable; |
209 } | 184 } |
210 | 185 |
(...skipping 26 matching lines...) Expand all Loading... |
237 // the background" in this case. | 212 // the background" in this case. |
238 modifierFlags &= ~NSCommandKeyMask; | 213 modifierFlags &= ~NSCommandKeyMask; |
239 } | 214 } |
240 chrome::ExecuteCommandWithDisposition( | 215 chrome::ExecuteCommandWithDisposition( |
241 FindBrowserForSender(sender, window), command, | 216 FindBrowserForSender(sender, window), command, |
242 ui::WindowOpenDispositionFromNSEventWithFlags([NSApp currentEvent], | 217 ui::WindowOpenDispositionFromNSEventWithFlags([NSApp currentEvent], |
243 modifierFlags)); | 218 modifierFlags)); |
244 } | 219 } |
245 | 220 |
246 @end | 221 @end |
OLD | NEW |