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" | |
48 #include "chrome/browser/sync/profile_sync_service.h" | 47 #include "chrome/browser/sync/profile_sync_service.h" |
49 #include "chrome/browser/sync/sync_ui_util.h" | 48 #include "chrome/browser/sync/sync_ui_util.h" |
50 #include "chrome/browser/ui/browser.h" | 49 #include "chrome/browser/ui/browser.h" |
51 #include "chrome/browser/ui/browser_command_controller.h" | 50 #include "chrome/browser/ui/browser_command_controller.h" |
52 #include "chrome/browser/ui/browser_commands.h" | 51 #include "chrome/browser/ui/browser_commands.h" |
53 #include "chrome/browser/ui/browser_dialogs.h" | 52 #include "chrome/browser/ui/browser_dialogs.h" |
54 #include "chrome/browser/ui/browser_finder.h" | 53 #include "chrome/browser/ui/browser_finder.h" |
55 #include "chrome/browser/ui/browser_iterator.h" | 54 #include "chrome/browser/ui/browser_iterator.h" |
56 #include "chrome/browser/ui/browser_mac.h" | 55 #include "chrome/browser/ui/browser_mac.h" |
57 #include "chrome/browser/ui/browser_window.h" | 56 #include "chrome/browser/ui/browser_window.h" |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 | 295 |
297 AppController* app_controller_; // Weak; owns us. | 296 AppController* app_controller_; // Weak; owns us. |
298 | 297 |
299 DISALLOW_COPY_AND_ASSIGN(AppControllerProfileObserver); | 298 DISALLOW_COPY_AND_ASSIGN(AppControllerProfileObserver); |
300 }; | 299 }; |
301 | 300 |
302 @implementation AppController | 301 @implementation AppController |
303 | 302 |
304 @synthesize startupComplete = startupComplete_; | 303 @synthesize startupComplete = startupComplete_; |
305 | 304 |
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 | |
333 - (void)dealloc { | 305 - (void)dealloc { |
334 [[closeTabMenuItem_ menu] setDelegate:nil]; | 306 [[closeTabMenuItem_ menu] setDelegate:nil]; |
335 [super dealloc]; | 307 [super dealloc]; |
336 } | 308 } |
337 | 309 |
338 // This method is called very early in application startup (ie, before | 310 // This method is called very early in application startup (ie, before |
339 // the profile is loaded or any preferences have been registered). Defer any | 311 // the profile is loaded or any preferences have been registered). Defer any |
340 // user-data initialization until -applicationDidFinishLaunching:. | 312 // user-data initialization until -applicationDidFinishLaunching:. |
341 - (void)awakeFromNib { | 313 - (void)awakeFromNib { |
342 MacStartupProfiler::GetInstance()->Profile( | 314 MacStartupProfiler::GetInstance()->Profile( |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 case IDC_SHOW_HISTORY: | 922 case IDC_SHOW_HISTORY: |
951 case IDC_SHOW_BOOKMARK_MANAGER: | 923 case IDC_SHOW_BOOKMARK_MANAGER: |
952 enable = ![self keyWindowIsModal]; | 924 enable = ![self keyWindowIsModal]; |
953 break; | 925 break; |
954 // Browser-level items that open in new windows. | 926 // Browser-level items that open in new windows. |
955 case IDC_TASK_MANAGER: | 927 case IDC_TASK_MANAGER: |
956 // Allow the user to open a new window if there's a window-modal | 928 // Allow the user to open a new window if there's a window-modal |
957 // dialog. | 929 // dialog. |
958 enable = ![self keyWindowIsModal]; | 930 enable = ![self keyWindowIsModal]; |
959 break; | 931 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 } | |
981 #if defined(GOOGLE_CHROME_BUILD) | 932 #if defined(GOOGLE_CHROME_BUILD) |
982 case IDC_FEEDBACK: | 933 case IDC_FEEDBACK: |
983 enable = NO; | 934 enable = NO; |
984 break; | 935 break; |
985 #endif | 936 #endif |
986 default: | 937 default: |
987 enable = menuState_->IsCommandEnabled(tag) ? | 938 enable = menuState_->IsCommandEnabled(tag) ? |
988 ![self keyWindowIsModal] : NO; | 939 ![self keyWindowIsModal] : NO; |
989 } | 940 } |
990 } | 941 } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 chrome::ShowExtensions(browser, std::string()); | 1073 chrome::ShowExtensions(browser, std::string()); |
1123 else | 1074 else |
1124 chrome::OpenExtensionsWindow(lastProfile); | 1075 chrome::OpenExtensionsWindow(lastProfile); |
1125 break; | 1076 break; |
1126 case IDC_HELP_PAGE_VIA_MENU: | 1077 case IDC_HELP_PAGE_VIA_MENU: |
1127 if (Browser* browser = ActivateBrowser(lastProfile)) | 1078 if (Browser* browser = ActivateBrowser(lastProfile)) |
1128 chrome::ShowHelp(browser, chrome::HELP_SOURCE_MENU); | 1079 chrome::ShowHelp(browser, chrome::HELP_SOURCE_MENU); |
1129 else | 1080 else |
1130 chrome::OpenHelpWindow(lastProfile, chrome::HELP_SOURCE_MENU); | 1081 chrome::OpenHelpWindow(lastProfile, chrome::HELP_SOURCE_MENU); |
1131 break; | 1082 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; | |
1140 case IDC_TASK_MANAGER: | 1083 case IDC_TASK_MANAGER: |
1141 chrome::OpenTaskManager(NULL); | 1084 chrome::OpenTaskManager(NULL); |
1142 break; | 1085 break; |
1143 case IDC_OPTIONS: | 1086 case IDC_OPTIONS: |
1144 [self showPreferences:sender]; | 1087 [self showPreferences:sender]; |
1145 break; | 1088 break; |
1146 } | 1089 } |
1147 } | 1090 } |
1148 | 1091 |
1149 // Run a (background) application in a new tab. | 1092 // Run a (background) application in a new tab. |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1283 menuState_->UpdateCommandEnabled(IDC_FOCUS_SEARCH, true); | 1226 menuState_->UpdateCommandEnabled(IDC_FOCUS_SEARCH, true); |
1284 menuState_->UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); | 1227 menuState_->UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); |
1285 menuState_->UpdateCommandEnabled(IDC_SHOW_HISTORY, true); | 1228 menuState_->UpdateCommandEnabled(IDC_SHOW_HISTORY, true); |
1286 menuState_->UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); | 1229 menuState_->UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); |
1287 menuState_->UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS, true); | 1230 menuState_->UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS, true); |
1288 menuState_->UpdateCommandEnabled(IDC_HELP_PAGE_VIA_MENU, true); | 1231 menuState_->UpdateCommandEnabled(IDC_HELP_PAGE_VIA_MENU, true); |
1289 menuState_->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, true); | 1232 menuState_->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, true); |
1290 #if defined(GOOGLE_CHROME_BUILD) | 1233 #if defined(GOOGLE_CHROME_BUILD) |
1291 menuState_->UpdateCommandEnabled(IDC_FEEDBACK, true); | 1234 menuState_->UpdateCommandEnabled(IDC_FEEDBACK, true); |
1292 #endif | 1235 #endif |
1293 menuState_->UpdateCommandEnabled(IDC_SHOW_SYNC_SETUP, true); | |
1294 menuState_->UpdateCommandEnabled(IDC_TASK_MANAGER, true); | 1236 menuState_->UpdateCommandEnabled(IDC_TASK_MANAGER, true); |
1295 } | 1237 } |
1296 | 1238 |
1297 // Conditionally adds the Profile menu to the main menu bar. | 1239 // Conditionally adds the Profile menu to the main menu bar. |
1298 - (void)initProfileMenu { | 1240 - (void)initProfileMenu { |
1299 NSMenu* mainMenu = [NSApp mainMenu]; | 1241 NSMenu* mainMenu = [NSApp mainMenu]; |
1300 NSMenuItem* profileMenu = [mainMenu itemWithTag:IDC_PROFILE_MAIN_MENU]; | 1242 NSMenuItem* profileMenu = [mainMenu itemWithTag:IDC_PROFILE_MAIN_MENU]; |
1301 | 1243 |
1302 if (!profiles::IsMultipleProfilesEnabled()) { | 1244 if (!profiles::IsMultipleProfilesEnabled()) { |
1303 [mainMenu removeItem:profileMenu]; | 1245 [mainMenu removeItem:profileMenu]; |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1712 | 1654 |
1713 //--------------------------------------------------------------------------- | 1655 //--------------------------------------------------------------------------- |
1714 | 1656 |
1715 namespace app_controller_mac { | 1657 namespace app_controller_mac { |
1716 | 1658 |
1717 bool IsOpeningNewWindow() { | 1659 bool IsOpeningNewWindow() { |
1718 return g_is_opening_new_window; | 1660 return g_is_opening_new_window; |
1719 } | 1661 } |
1720 | 1662 |
1721 } // namespace app_controller_mac | 1663 } // namespace app_controller_mac |
OLD | NEW |