| 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 | 
|---|