OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/app_controller_mac.h" | 5 #import "chrome/browser/app_controller_mac.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "chrome/browser/profiles/profile_info_cache_observer.h" | 37 #include "chrome/browser/profiles/profile_info_cache_observer.h" |
38 #include "chrome/browser/profiles/profile_manager.h" | 38 #include "chrome/browser/profiles/profile_manager.h" |
39 #include "chrome/browser/profiles/profiles_state.h" | 39 #include "chrome/browser/profiles/profiles_state.h" |
40 #include "chrome/browser/sessions/session_restore.h" | 40 #include "chrome/browser/sessions/session_restore.h" |
41 #include "chrome/browser/sessions/session_service.h" | 41 #include "chrome/browser/sessions/session_service.h" |
42 #include "chrome/browser/sessions/session_service_factory.h" | 42 #include "chrome/browser/sessions/session_service_factory.h" |
43 #include "chrome/browser/sessions/tab_restore_service.h" | 43 #include "chrome/browser/sessions/tab_restore_service.h" |
44 #include "chrome/browser/sessions/tab_restore_service_factory.h" | 44 #include "chrome/browser/sessions/tab_restore_service_factory.h" |
45 #include "chrome/browser/signin/signin_manager_factory.h" | 45 #include "chrome/browser/signin/signin_manager_factory.h" |
46 #include "chrome/browser/signin/signin_promo.h" | 46 #include "chrome/browser/signin/signin_promo.h" |
| 47 #include "chrome/browser/signin/signin_ui_util.h" |
47 #include "chrome/browser/sync/profile_sync_service.h" | 48 #include "chrome/browser/sync/profile_sync_service.h" |
48 #include "chrome/browser/sync/sync_ui_util.h" | 49 #include "chrome/browser/sync/sync_ui_util.h" |
49 #include "chrome/browser/ui/browser.h" | 50 #include "chrome/browser/ui/browser.h" |
50 #include "chrome/browser/ui/browser_command_controller.h" | 51 #include "chrome/browser/ui/browser_command_controller.h" |
51 #include "chrome/browser/ui/browser_commands.h" | 52 #include "chrome/browser/ui/browser_commands.h" |
52 #include "chrome/browser/ui/browser_dialogs.h" | 53 #include "chrome/browser/ui/browser_dialogs.h" |
53 #include "chrome/browser/ui/browser_finder.h" | 54 #include "chrome/browser/ui/browser_finder.h" |
54 #include "chrome/browser/ui/browser_iterator.h" | 55 #include "chrome/browser/ui/browser_iterator.h" |
55 #include "chrome/browser/ui/browser_mac.h" | 56 #include "chrome/browser/ui/browser_mac.h" |
56 #include "chrome/browser/ui/browser_window.h" | 57 #include "chrome/browser/ui/browser_window.h" |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 | 296 |
296 AppController* app_controller_; // Weak; owns us. | 297 AppController* app_controller_; // Weak; owns us. |
297 | 298 |
298 DISALLOW_COPY_AND_ASSIGN(AppControllerProfileObserver); | 299 DISALLOW_COPY_AND_ASSIGN(AppControllerProfileObserver); |
299 }; | 300 }; |
300 | 301 |
301 @implementation AppController | 302 @implementation AppController |
302 | 303 |
303 @synthesize startupComplete = startupComplete_; | 304 @synthesize startupComplete = startupComplete_; |
304 | 305 |
| 306 + (void)updateSigninItem:(id)signinItem |
| 307 shouldShow:(BOOL)showSigninMenuItem |
| 308 currentProfile:(Profile*)profile { |
| 309 DCHECK([signinItem isKindOfClass:[NSMenuItem class]]); |
| 310 NSMenuItem* signinMenuItem = static_cast<NSMenuItem*>(signinItem); |
| 311 |
| 312 // Look for a separator immediately after the menu item so it can be hidden |
| 313 // or shown appropriately along with the signin menu item. |
| 314 NSMenuItem* followingSeparator = nil; |
| 315 NSMenu* menu = [signinItem menu]; |
| 316 if (menu) { |
| 317 NSInteger signinItemIndex = [menu indexOfItem:signinMenuItem]; |
| 318 DCHECK_NE(signinItemIndex, -1); |
| 319 if ((signinItemIndex + 1) < [menu numberOfItems]) { |
| 320 NSMenuItem* menuItem = [menu itemAtIndex:(signinItemIndex + 1)]; |
| 321 if ([menuItem isSeparatorItem]) { |
| 322 followingSeparator = menuItem; |
| 323 } |
| 324 } |
| 325 } |
| 326 |
| 327 base::string16 label = signin_ui_util::GetSigninMenuLabel(profile); |
| 328 [signinMenuItem setTitle:l10n_util::FixUpWindowsStyleLabel(label)]; |
| 329 [signinMenuItem setHidden:!showSigninMenuItem]; |
| 330 [followingSeparator setHidden:!showSigninMenuItem]; |
| 331 } |
| 332 |
305 - (void)dealloc { | 333 - (void)dealloc { |
306 [[closeTabMenuItem_ menu] setDelegate:nil]; | 334 [[closeTabMenuItem_ menu] setDelegate:nil]; |
307 [super dealloc]; | 335 [super dealloc]; |
308 } | 336 } |
309 | 337 |
310 // This method is called very early in application startup (ie, before | 338 // This method is called very early in application startup (ie, before |
311 // the profile is loaded or any preferences have been registered). Defer any | 339 // the profile is loaded or any preferences have been registered). Defer any |
312 // user-data initialization until -applicationDidFinishLaunching:. | 340 // user-data initialization until -applicationDidFinishLaunching:. |
313 - (void)awakeFromNib { | 341 - (void)awakeFromNib { |
314 MacStartupProfiler::GetInstance()->Profile( | 342 MacStartupProfiler::GetInstance()->Profile( |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 case IDC_SHOW_HISTORY: | 950 case IDC_SHOW_HISTORY: |
923 case IDC_SHOW_BOOKMARK_MANAGER: | 951 case IDC_SHOW_BOOKMARK_MANAGER: |
924 enable = ![self keyWindowIsModal]; | 952 enable = ![self keyWindowIsModal]; |
925 break; | 953 break; |
926 // Browser-level items that open in new windows. | 954 // Browser-level items that open in new windows. |
927 case IDC_TASK_MANAGER: | 955 case IDC_TASK_MANAGER: |
928 // Allow the user to open a new window if there's a window-modal | 956 // Allow the user to open a new window if there's a window-modal |
929 // dialog. | 957 // dialog. |
930 enable = ![self keyWindowIsModal]; | 958 enable = ![self keyWindowIsModal]; |
931 break; | 959 break; |
| 960 case IDC_SHOW_SYNC_SETUP: { |
| 961 Profile* lastProfile = [self lastProfile]; |
| 962 // The profile may be NULL during shutdown -- see |
| 963 // http://code.google.com/p/chromium/issues/detail?id=43048 . |
| 964 // |
| 965 // TODO(akalin,viettrungluu): Figure out whether this method |
| 966 // can be prevented from being called if lastProfile is |
| 967 // NULL. |
| 968 if (!lastProfile) { |
| 969 LOG(WARNING) |
| 970 << "NULL lastProfile detected -- not doing anything"; |
| 971 break; |
| 972 } |
| 973 SigninManager* signin = SigninManagerFactory::GetForProfile( |
| 974 lastProfile->GetOriginalProfile()); |
| 975 enable = signin->IsSigninAllowed() && ![self keyWindowIsModal]; |
| 976 [AppController updateSigninItem:item |
| 977 shouldShow:enable |
| 978 currentProfile:lastProfile]; |
| 979 break; |
| 980 } |
932 #if defined(GOOGLE_CHROME_BUILD) | 981 #if defined(GOOGLE_CHROME_BUILD) |
933 case IDC_FEEDBACK: | 982 case IDC_FEEDBACK: |
934 enable = NO; | 983 enable = NO; |
935 break; | 984 break; |
936 #endif | 985 #endif |
937 default: | 986 default: |
938 enable = menuState_->IsCommandEnabled(tag) ? | 987 enable = menuState_->IsCommandEnabled(tag) ? |
939 ![self keyWindowIsModal] : NO; | 988 ![self keyWindowIsModal] : NO; |
940 } | 989 } |
941 } | 990 } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1073 chrome::ShowExtensions(browser, std::string()); | 1122 chrome::ShowExtensions(browser, std::string()); |
1074 else | 1123 else |
1075 chrome::OpenExtensionsWindow(lastProfile); | 1124 chrome::OpenExtensionsWindow(lastProfile); |
1076 break; | 1125 break; |
1077 case IDC_HELP_PAGE_VIA_MENU: | 1126 case IDC_HELP_PAGE_VIA_MENU: |
1078 if (Browser* browser = ActivateBrowser(lastProfile)) | 1127 if (Browser* browser = ActivateBrowser(lastProfile)) |
1079 chrome::ShowHelp(browser, chrome::HELP_SOURCE_MENU); | 1128 chrome::ShowHelp(browser, chrome::HELP_SOURCE_MENU); |
1080 else | 1129 else |
1081 chrome::OpenHelpWindow(lastProfile, chrome::HELP_SOURCE_MENU); | 1130 chrome::OpenHelpWindow(lastProfile, chrome::HELP_SOURCE_MENU); |
1082 break; | 1131 break; |
| 1132 case IDC_SHOW_SYNC_SETUP: |
| 1133 if (Browser* browser = ActivateBrowser(lastProfile)) { |
| 1134 chrome::ShowBrowserSigninOrSettings(browser, |
| 1135 signin_metrics::SOURCE_MENU); |
| 1136 } else { |
| 1137 chrome::OpenSyncSetupWindow(lastProfile, signin_metrics::SOURCE_MENU); |
| 1138 } |
| 1139 break; |
1083 case IDC_TASK_MANAGER: | 1140 case IDC_TASK_MANAGER: |
1084 chrome::OpenTaskManager(NULL); | 1141 chrome::OpenTaskManager(NULL); |
1085 break; | 1142 break; |
1086 case IDC_OPTIONS: | 1143 case IDC_OPTIONS: |
1087 [self showPreferences:sender]; | 1144 [self showPreferences:sender]; |
1088 break; | 1145 break; |
1089 } | 1146 } |
1090 } | 1147 } |
1091 | 1148 |
1092 // Run a (background) application in a new tab. | 1149 // Run a (background) application in a new tab. |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1226 menuState_->UpdateCommandEnabled(IDC_FOCUS_SEARCH, true); | 1283 menuState_->UpdateCommandEnabled(IDC_FOCUS_SEARCH, true); |
1227 menuState_->UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); | 1284 menuState_->UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); |
1228 menuState_->UpdateCommandEnabled(IDC_SHOW_HISTORY, true); | 1285 menuState_->UpdateCommandEnabled(IDC_SHOW_HISTORY, true); |
1229 menuState_->UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); | 1286 menuState_->UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); |
1230 menuState_->UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS, true); | 1287 menuState_->UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS, true); |
1231 menuState_->UpdateCommandEnabled(IDC_HELP_PAGE_VIA_MENU, true); | 1288 menuState_->UpdateCommandEnabled(IDC_HELP_PAGE_VIA_MENU, true); |
1232 menuState_->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, true); | 1289 menuState_->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, true); |
1233 #if defined(GOOGLE_CHROME_BUILD) | 1290 #if defined(GOOGLE_CHROME_BUILD) |
1234 menuState_->UpdateCommandEnabled(IDC_FEEDBACK, true); | 1291 menuState_->UpdateCommandEnabled(IDC_FEEDBACK, true); |
1235 #endif | 1292 #endif |
| 1293 menuState_->UpdateCommandEnabled(IDC_SHOW_SYNC_SETUP, true); |
1236 menuState_->UpdateCommandEnabled(IDC_TASK_MANAGER, true); | 1294 menuState_->UpdateCommandEnabled(IDC_TASK_MANAGER, true); |
1237 } | 1295 } |
1238 | 1296 |
1239 // Conditionally adds the Profile menu to the main menu bar. | 1297 // Conditionally adds the Profile menu to the main menu bar. |
1240 - (void)initProfileMenu { | 1298 - (void)initProfileMenu { |
1241 NSMenu* mainMenu = [NSApp mainMenu]; | 1299 NSMenu* mainMenu = [NSApp mainMenu]; |
1242 NSMenuItem* profileMenu = [mainMenu itemWithTag:IDC_PROFILE_MAIN_MENU]; | 1300 NSMenuItem* profileMenu = [mainMenu itemWithTag:IDC_PROFILE_MAIN_MENU]; |
1243 | 1301 |
1244 if (!profiles::IsMultipleProfilesEnabled()) { | 1302 if (!profiles::IsMultipleProfilesEnabled()) { |
1245 [mainMenu removeItem:profileMenu]; | 1303 [mainMenu removeItem:profileMenu]; |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1654 | 1712 |
1655 //--------------------------------------------------------------------------- | 1713 //--------------------------------------------------------------------------- |
1656 | 1714 |
1657 namespace app_controller_mac { | 1715 namespace app_controller_mac { |
1658 | 1716 |
1659 bool IsOpeningNewWindow() { | 1717 bool IsOpeningNewWindow() { |
1660 return g_is_opening_new_window; | 1718 return g_is_opening_new_window; |
1661 } | 1719 } |
1662 | 1720 |
1663 } // namespace app_controller_mac | 1721 } // namespace app_controller_mac |
OLD | NEW |