Chromium Code Reviews| Index: chrome/browser/ui/cocoa/profiles/avatar_icon_controller.mm |
| diff --git a/chrome/browser/ui/cocoa/profiles/avatar_icon_controller.mm b/chrome/browser/ui/cocoa/profiles/avatar_icon_controller.mm |
| index 120abec0385f5532f5cd6c8409f1389921e502d2..4ea98f01494b2dc19a91dafcb125229acde50c30 100644 |
| --- a/chrome/browser/ui/cocoa/profiles/avatar_icon_controller.mm |
| +++ b/chrome/browser/ui/cocoa/profiles/avatar_icon_controller.mm |
| @@ -14,9 +14,6 @@ |
| #include "chrome/browser/profiles/profile_info_cache.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/ui/browser.h" |
| -#include "chrome/browser/ui/browser_window.h" |
| -#import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| -#import "chrome/browser/ui/cocoa/profiles/avatar_label_button.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "grit/theme_resources.h" |
| #include "ui/base/l10n/l10n_util_mac.h" |
| @@ -24,33 +21,9 @@ |
| #include "ui/gfx/image/image.h" |
| #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h" |
| -namespace { |
| - |
| -// Space between the avatar label and the left edge of the container containing |
| -// the label and the icon. |
| -const CGFloat kAvatarSpacing = 4; |
| - |
| -// Space between the bottom of the avatar icon and the bottom of the avatar |
| -// label. |
| -const CGFloat kAvatarLabelBottomSpacing = 3; |
| - |
| -// Space between the right edge of the avatar label and the right edge of the |
| -// avatar icon. |
| -const CGFloat kAvatarLabelRightSpacing = 2; |
| - |
| -} // namespace |
| - |
| @interface AvatarIconController (Private) |
| - (void)setButtonEnabled:(BOOL)flag; |
| - (NSImage*)compositeImageWithShadow:(NSImage*)image; |
| -- (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent; |
| -- (void)addOrRemoveButtonIfNecessary; |
| -@end |
| - |
| -// Declare a 10.7+ private API. |
| -// NSThemeFrame < NSTitledFrame < NSFrameView < NSView. |
| -@interface NSView (NSThemeFrame) |
| -- (void)_tileTitlebarAndRedisplay:(BOOL)redisplay; |
| @end |
| @implementation AvatarIconController |
| @@ -100,58 +73,16 @@ const CGFloat kAvatarLabelRightSpacing = 2; |
| l10n_util::GetNSString(IDS_PROFILES_BUBBLE_ACCESSIBLE_DESCRIPTION) |
| forAttribute:NSAccessibilityDescriptionAttribute]; |
| - Profile* profile = browser_->profile(); |
| - |
| - if (profile->IsOffTheRecord() || profile->IsGuestSession()) { |
| - const int icon_id = profile->IsGuestSession() ? |
| - profiles::GetPlaceholderAvatarIconResourceID() : IDR_OTR_ICON; |
| - NSImage* icon = ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
| - icon_id).ToNSImage(); |
| - [self setImage:[self compositeImageWithShadow:icon]]; |
| - [self setButtonEnabled:profile->IsGuestSession()]; |
| - } else { |
| - [self setButtonEnabled:YES]; |
| - [self updateAvatarButtonAndLayoutParent:NO]; |
| - |
| - // Supervised users cannot enter incognito mode, so we only need to check |
| - // it in this code path. |
| - if (profile->IsSupervised()) { |
| - // Initialize the avatar label button. |
| - CGFloat extraWidth = |
| - profiles::kAvatarIconWidth + kAvatarLabelRightSpacing; |
| - NSRect frame = NSMakeRect( |
| - kAvatarSpacing, kAvatarLabelBottomSpacing, extraWidth, 0); |
| - labelButton_.reset([[AvatarLabelButton alloc] initWithFrame:frame]); |
| - [labelButton_ setTarget:self]; |
| - [labelButton_ setAction:@selector(buttonClicked:)]; |
| - [[self view] addSubview:labelButton_]; |
| - |
| - // Resize the container and reposition the avatar button. |
| - NSSize textSize = [[labelButton_ cell] labelTextSize]; |
| - [container setFrameSize: |
| - NSMakeSize([labelButton_ frame].size.width + kAvatarSpacing, |
| - profiles::kAvatarIconHeight)]; |
| - [button_ |
| - setFrameOrigin:NSMakePoint(kAvatarSpacing + textSize.width, 0)]; |
| - } |
| - } |
| + NSImage* icon = ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
| + IDR_OTR_ICON).ToNSImage(); |
| + [button_ setImage:[self compositeImageWithShadow:icon]]; |
| + [button_ setEnabled:NO]; |
| + |
| [[self view] addSubview:button_]; |
| } |
| return self; |
| } |
| -- (NSButton*)labelButtonView { |
| - return labelButton_.get(); |
| -} |
| - |
| -- (void)setImage:(NSImage*)image { |
| - [button_ setImage:image]; |
| -} |
| - |
| -- (void)setButtonEnabled:(BOOL)flag { |
| - [button_ setEnabled:flag]; |
| -} |
| - |
| // This will take in an original image and redraw it with a shadow. |
| - (NSImage*)compositeImageWithShadow:(NSImage*)image { |
| gfx::ScopedNSGraphicsContextSaveGState scopedGState; |
| @@ -183,64 +114,4 @@ const CGFloat kAvatarLabelRightSpacing = 2; |
| return destination.autorelease(); |
| } |
| -// Updates the avatar information from the profile cache. |
| -- (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent { |
|
Robert Sesek
2016/01/26 18:37:56
Can this be removed safely? AvatarBaseController i
Marc Treib
2016/01/27 14:06:54
Good catch! I've added back an empty implementatio
|
| - // No updates are needed for an incognito or guest window, as the avatar |
| - // is always fixed. |
| - Profile* profile = browser_->profile(); |
| - if (profile->IsOffTheRecord() || profile->IsGuestSession()) |
| - return; |
| - |
| - ProfileInfoCache& cache = |
| - g_browser_process->profile_manager()->GetProfileInfoCache(); |
| - size_t index = |
| - cache.GetIndexOfProfileWithPath(browser_->profile()->GetPath()); |
| - if (index == std::string::npos) |
| - return; |
| - |
| - BOOL is_gaia_picture = |
| - cache.IsUsingGAIAPictureOfProfileAtIndex(index) && |
| - cache.GetGAIAPictureOfProfileAtIndex(index); |
| - gfx::Image icon = profiles::GetAvatarIconForTitleBar( |
| - cache.GetAvatarIconOfProfileAtIndex(index), is_gaia_picture, |
| - profiles::kAvatarIconWidth, profiles::kAvatarIconHeight); |
| - [self setImage:icon.ToNSImage()]; |
| - |
| - const base::string16& name = cache.GetNameOfProfileAtIndex(index); |
| - NSString* nsName = base::SysUTF16ToNSString(name); |
| - [button_ setToolTip:nsName]; |
| - [[button_ cell] |
| - accessibilitySetOverrideValue:nsName |
| - forAttribute:NSAccessibilityValueAttribute]; |
| - if (layoutParent) |
| - [self addOrRemoveButtonIfNecessary]; |
| -} |
| - |
| -// If the second-to-last profile was removed or a second profile was added, |
| -// show or hide the avatar button from the window frame. |
| -- (void)addOrRemoveButtonIfNecessary { |
| - if (browser_->profile()->IsOffTheRecord()) |
| - return; |
| - |
| - BrowserWindowController* wc = base::mac::ObjCCast<BrowserWindowController>( |
| - [browser_->window()->GetNativeWindow() windowController]); |
| - if (!wc) |
| - return; |
| - |
| - [self.view setHidden:![wc shouldShowAvatar]]; |
| - |
| - // If the avatar is being added or removed, then the Lion fullscreen button |
| - // needs to be adjusted. Since the fullscreen button is positioned by |
| - // FramedBrowserWindow using private APIs, the easiest way to update the |
| - // position of the button is through this private API. Resizing the window |
| - // also works, but invoking |-display| does not. |
| - NSView* themeFrame = [[[wc window] contentView] superview]; |
| - if ([themeFrame respondsToSelector:@selector(_tileTitlebarAndRedisplay:)]) |
| - [themeFrame _tileTitlebarAndRedisplay:YES]; |
| - |
| - // This needs to be called after the fullscreen button is positioned, because |
| - // TabStripController's rightIndentForControls depends on it. |
| - [wc layoutSubviews]; |
| -} |
| - |
| @end |