Index: chrome/browser/app_controller_mac.mm |
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm |
index b6c2f6fc2fe82e22192fceed3d75257fa6d77cb0..e888d39706118066c32b37493796c7ab2b0cb6c1 100644 |
--- a/chrome/browser/app_controller_mac.mm |
+++ b/chrome/browser/app_controller_mac.mm |
@@ -44,6 +44,7 @@ |
#include "chrome/browser/sessions/tab_restore_service_factory.h" |
#include "chrome/browser/signin/signin_manager_factory.h" |
#include "chrome/browser/signin/signin_promo.h" |
+#include "chrome/browser/signin/signin_ui_util.h" |
#include "chrome/browser/sync/profile_sync_service.h" |
#include "chrome/browser/sync/sync_ui_util.h" |
#include "chrome/browser/ui/browser.h" |
@@ -58,8 +59,6 @@ |
#import "chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac.h" |
#include "chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" |
-#import "chrome/browser/ui/cocoa/browser_window_cocoa.h" |
-#import "chrome/browser/ui/cocoa/browser_window_controller.h" |
#import "chrome/browser/ui/cocoa/confirm_quit.h" |
#import "chrome/browser/ui/cocoa/confirm_quit_panel_controller.h" |
#import "chrome/browser/ui/cocoa/encoding_menu_controller_delegate_mac.h" |
@@ -67,13 +66,11 @@ |
#import "chrome/browser/ui/cocoa/history_menu_bridge.h" |
#include "chrome/browser/ui/cocoa/last_active_browser_cocoa.h" |
#import "chrome/browser/ui/cocoa/profiles/profile_menu_controller.h" |
-#import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" |
-#import "chrome/browser/ui/cocoa/tabs/tab_window_controller.h" |
-#include "chrome/browser/ui/cocoa/task_manager_mac.h" |
#include "chrome/browser/ui/extensions/application_launch.h" |
#include "chrome/browser/ui/host_desktop.h" |
#include "chrome/browser/ui/startup/startup_browser_creator.h" |
#include "chrome/browser/ui/startup/startup_browser_creator_impl.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/browser/ui/user_manager.h" |
#include "chrome/browser/web_applications/web_app_mac.h" |
#include "chrome/common/chrome_paths_internal.h" |
@@ -306,6 +303,33 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
@synthesize startupComplete = startupComplete_; |
++ (void)updateSigninItem:(id)signinItem |
+ shouldShow:(BOOL)showSigninMenuItem |
+ currentProfile:(Profile*)profile { |
+ DCHECK([signinItem isKindOfClass:[NSMenuItem class]]); |
+ NSMenuItem* signinMenuItem = static_cast<NSMenuItem*>(signinItem); |
Robert Sesek
2015/04/01 15:17:45
nit: can use base::mac::ObjCCastStrict<>.
|
+ |
+ // Look for a separator immediately after the menu item so it can be hidden |
+ // or shown appropriately along with the signin menu item. |
+ NSMenuItem* followingSeparator = nil; |
+ NSMenu* menu = [signinItem menu]; |
+ if (menu) { |
+ NSInteger signinItemIndex = [menu indexOfItem:signinMenuItem]; |
+ DCHECK_NE(signinItemIndex, -1); |
+ if ((signinItemIndex + 1) < [menu numberOfItems]) { |
+ NSMenuItem* menuItem = [menu itemAtIndex:(signinItemIndex + 1)]; |
+ if ([menuItem isSeparatorItem]) { |
+ followingSeparator = menuItem; |
+ } |
+ } |
+ } |
+ |
+ base::string16 label = signin_ui_util::GetSigninMenuLabel(profile); |
+ [signinMenuItem setTitle:l10n_util::FixUpWindowsStyleLabel(label)]; |
+ [signinMenuItem setHidden:!showSigninMenuItem]; |
+ [followingSeparator setHidden:!showSigninMenuItem]; |
+} |
+ |
- (void)dealloc { |
[[closeTabMenuItem_ menu] setDelegate:nil]; |
[super dealloc]; |
@@ -558,8 +582,8 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
// main window should be the one that handles the close menu item action. |
window = mainWindow; |
} |
- enableCloseTabShortcut = |
- [[window windowController] isKindOfClass:[TabWindowController class]]; |
+ Browser* browser = chrome::FindBrowserWithWindow(window); |
+ enableCloseTabShortcut = browser && browser->is_type_tabbed(); |
} |
[self adjustCloseWindowMenuItemKeyEquivalent:enableCloseTabShortcut]; |
@@ -578,14 +602,9 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
} |
- (void)windowDidBecomeMain:(NSNotification*)notify { |
- // If the window changed to a new BrowserWindowController, update the profile. |
- id windowController = [[notify object] windowController]; |
- if (![windowController isKindOfClass:[BrowserWindowController class]]) |
- return; |
- |
- // If the profile is incognito, use the original profile. |
- Profile* newProfile = [windowController profile]->GetOriginalProfile(); |
- [self windowChangedToProfile:newProfile]; |
+ Browser* browser = chrome::FindBrowserWithWindow([notify object]); |
+ if (browser) |
+ [self windowChangedToProfile:browser->profile()->GetOriginalProfile()]; |
} |
- (void)windowDidResignMain:(NSNotification*)notify { |
@@ -950,11 +969,10 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
} |
SigninManager* signin = SigninManagerFactory::GetForProfile( |
lastProfile->GetOriginalProfile()); |
- enable = signin->IsSigninAllowed() && |
- ![self keyWindowIsModal]; |
- [BrowserWindowController updateSigninItem:item |
- shouldShow:enable |
- currentProfile:lastProfile]; |
+ enable = signin->IsSigninAllowed() && ![self keyWindowIsModal]; |
+ [AppController updateSigninItem:item |
+ shouldShow:enable |
+ currentProfile:lastProfile]; |
break; |
} |
#if defined(GOOGLE_CHROME_BUILD) |
@@ -1001,7 +1019,7 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
// and is getting here because the foreground window is not a browser window. |
if ([sender respondsToSelector:@selector(window)]) { |
id delegate = [[sender window] windowController]; |
- if ([delegate isKindOfClass:[BrowserWindowController class]]) { |
+ if ([delegate respondsToSelector:@selector(commandDispatch:)]) { |
[delegate commandDispatch:sender]; |
return; |
} |
@@ -1145,7 +1163,8 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
DCHECK(sender); |
if ([sender respondsToSelector:@selector(window)]) { |
id delegate = [[sender window] windowController]; |
- if ([delegate isKindOfClass:[BrowserWindowController class]]) { |
+ if ([delegate respondsToSelector: |
+ @selector(commandDispatchUsingKeyModifiers:)]) { |
[delegate commandDispatchUsingKeyModifiers:sender]; |
} |
} |
@@ -1318,7 +1337,7 @@ class AppControllerProfileObserver : public ProfileInfoCacheObserver { |
} |
- (Profile*)lastProfile { |
- // Return the profile of the last-used BrowserWindowController, if available. |
+ // Return the profile of the last-used Browser, if available. |
if (lastProfile_) |
return lastProfile_; |