| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/cocoa/browser/avatar_base_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser/avatar_base_controller.h" |
| 6 | 6 |
| 7 #include "chrome/app/chrome_command_ids.h" | 7 #include "chrome/app/chrome_command_ids.h" |
| 8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
| 9 #include "chrome/browser/profiles/profile_info_cache_observer.h" | 9 #include "chrome/browser/profiles/profile_info_cache_observer.h" |
| 10 #include "chrome/browser/profiles/profile_info_util.h" | 10 #include "chrome/browser/profiles/profile_info_util.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 name:NSWindowWillCloseNotification | 90 name:NSWindowWillCloseNotification |
| 91 object:[menuController_ window]]; | 91 object:[menuController_ window]]; |
| 92 [super dealloc]; | 92 [super dealloc]; |
| 93 } | 93 } |
| 94 | 94 |
| 95 - (NSButton*)buttonView { | 95 - (NSButton*)buttonView { |
| 96 CHECK(button_.get()); // Subclasses must set this. | 96 CHECK(button_.get()); // Subclasses must set this. |
| 97 return button_.get(); | 97 return button_.get(); |
| 98 } | 98 } |
| 99 | 99 |
| 100 - (void)showAvatarBubble:(NSView*)anchor { | 100 - (void)showAvatarBubble:(NSView*)anchor |
| 101 withMode:(BrowserWindow::AvatarBubbleMode)mode { |
| 101 if (menuController_) | 102 if (menuController_) |
| 102 return; | 103 return; |
| 103 | 104 |
| 104 DCHECK(chrome::IsCommandEnabled(browser_, IDC_SHOW_AVATAR_MENU)); | 105 DCHECK(chrome::IsCommandEnabled(browser_, IDC_SHOW_AVATAR_MENU)); |
| 105 | 106 |
| 106 NSWindowController* wc = | 107 NSWindowController* wc = |
| 107 [browser_->window()->GetNativeWindow() windowController]; | 108 [browser_->window()->GetNativeWindow() windowController]; |
| 108 if ([wc isKindOfClass:[BrowserWindowController class]]) { | 109 if ([wc isKindOfClass:[BrowserWindowController class]]) { |
| 109 [static_cast<BrowserWindowController*>(wc) | 110 [static_cast<BrowserWindowController*>(wc) |
| 110 lockBarVisibilityForOwner:self withAnimation:NO delay:NO]; | 111 lockBarVisibilityForOwner:self withAnimation:NO delay:NO]; |
| 111 } | 112 } |
| 112 | 113 |
| 113 NSPoint point = NSMakePoint(NSMidX([anchor bounds]), | 114 NSPoint point = NSMakePoint(NSMidX([anchor bounds]), |
| 114 NSMaxY([anchor bounds]) - kMenuYOffsetAdjust); | 115 NSMaxY([anchor bounds]) - kMenuYOffsetAdjust); |
| 115 point = [anchor convertPoint:point toView:nil]; | 116 point = [anchor convertPoint:point toView:nil]; |
| 116 point = [[anchor window] convertBaseToScreen:point]; | 117 point = [[anchor window] convertBaseToScreen:point]; |
| 117 | 118 |
| 118 // |menuController_| will automatically release itself on close. | 119 // |menuController_| will automatically release itself on close. |
| 119 if (switches::IsNewProfileManagement()) { | 120 if (switches::IsNewProfileManagement()) { |
| 121 BubbleViewMode viewMode = |
| 122 mode == BrowserWindow::AVATAR_BUBBLE_MODE_DEFAULT ? |
| 123 PROFILE_CHOOSER_VIEW : |
| 124 ACCOUNT_MANAGEMENT_VIEW; |
| 120 menuController_ = | 125 menuController_ = |
| 121 [[ProfileChooserController alloc] initWithBrowser:browser_ | 126 [[ProfileChooserController alloc] initWithBrowser:browser_ |
| 122 anchoredAt:point]; | 127 anchoredAt:point |
| 128 withMode:viewMode]; |
| 123 } else { | 129 } else { |
| 124 menuController_ = | 130 menuController_ = |
| 125 [[AvatarMenuBubbleController alloc] initWithBrowser:browser_ | 131 [[AvatarMenuBubbleController alloc] initWithBrowser:browser_ |
| 126 anchoredAt:point]; | 132 anchoredAt:point]; |
| 127 } | 133 } |
| 128 | 134 |
| 129 [[NSNotificationCenter defaultCenter] | 135 [[NSNotificationCenter defaultCenter] |
| 130 addObserver:self | 136 addObserver:self |
| 131 selector:@selector(bubbleWillClose:) | 137 selector:@selector(bubbleWillClose:) |
| 132 name:NSWindowWillCloseNotification | 138 name:NSWindowWillCloseNotification |
| 133 object:[menuController_ window]]; | 139 object:[menuController_ window]]; |
| 134 [menuController_ showWindow:self]; | 140 [menuController_ showWindow:self]; |
| 135 | 141 |
| 136 ProfileMetrics::LogProfileOpenMethod(ProfileMetrics::ICON_AVATAR_BUBBLE); | 142 ProfileMetrics::LogProfileOpenMethod(ProfileMetrics::ICON_AVATAR_BUBBLE); |
| 137 } | 143 } |
| 138 | 144 |
| 139 - (IBAction)buttonClicked:(id)sender { | 145 - (IBAction)buttonClicked:(id)sender { |
| 140 DCHECK_EQ(sender, button_.get()); | 146 DCHECK_EQ(sender, button_.get()); |
| 141 [self showAvatarBubble:button_]; | 147 [self showAvatarBubble:button_ |
| 148 withMode:BrowserWindow::AVATAR_BUBBLE_MODE_DEFAULT]; |
| 142 } | 149 } |
| 143 | 150 |
| 144 - (void)bubbleWillClose:(NSNotification*)notif { | 151 - (void)bubbleWillClose:(NSNotification*)notif { |
| 145 NSWindowController* wc = | 152 NSWindowController* wc = |
| 146 [browser_->window()->GetNativeWindow() windowController]; | 153 [browser_->window()->GetNativeWindow() windowController]; |
| 147 if ([wc isKindOfClass:[BrowserWindowController class]]) { | 154 if ([wc isKindOfClass:[BrowserWindowController class]]) { |
| 148 [static_cast<BrowserWindowController*>(wc) | 155 [static_cast<BrowserWindowController*>(wc) |
| 149 releaseBarVisibilityForOwner:self withAnimation:YES delay:NO]; | 156 releaseBarVisibilityForOwner:self withAnimation:YES delay:NO]; |
| 150 } | 157 } |
| 151 menuController_ = nil; | 158 menuController_ = nil; |
| 152 } | 159 } |
| 153 | 160 |
| 154 - (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent { | 161 - (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent { |
| 155 NOTREACHED(); | 162 NOTREACHED(); |
| 156 } | 163 } |
| 157 | 164 |
| 158 - (BaseBubbleController*)menuController { | 165 - (BaseBubbleController*)menuController { |
| 159 return menuController_; | 166 return menuController_; |
| 160 } | 167 } |
| 161 | 168 |
| 162 @end | 169 @end |
| 163 | 170 |
| OLD | NEW |