avatar_base_controller.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_COCOA_PROFILES_AVATAR_BASE_CONTROLLER_H_ 6#define CHROME_BROWSER_UI_COCOA_PROFILES_AVATAR_BASE_CONTROLLER_H_ 7 8#import <AppKit/AppKit.h> 9 10#import "base/mac/scoped_nsobject.h" 11#include "base/memory/scoped_ptr.h" 12#include "chrome/browser/ui/browser_window.h" 13 14@class BaseBubbleController; 15class Browser; 16class ProfileInfoUpdateObserver; 17 18// This view controller manages the button that sits in the top of the 19// window frame when using multi-profiles, and shows information about the 20// current profile. Clicking the button will open the profile menu. 21@interface AvatarBaseController : NSViewController { 22 @protected 23 Browser* browser_; 24 25 // The avatar button. Child classes are responsible for implementing it. 26 base::scoped_nsobject<NSButton> button_; 27 28 @private 29 // The menu controller, if the menu is open. 30 BaseBubbleController* menuController_; 31 32 // Observer that listens for updates to the ProfileInfoCache. 33 scoped_ptr<ProfileInfoUpdateObserver> profileInfoObserver_; 34} 35 36// The avatar button view. 37@property(readonly, nonatomic) NSButton* buttonView; 38 39// Designated initializer. 40- (id)initWithBrowser:(Browser*)browser; 41 42// Shows the avatar bubble in the given mode. 43- (void)showAvatarBubbleAnchoredAt:(NSView*)anchor 44 withMode:(BrowserWindow::AvatarBubbleMode)mode 45 withServiceType:(signin::GAIAServiceType)serviceType; 46 47@end 48 49@interface AvatarBaseController (ExposedForTesting) 50- (BaseBubbleController*)menuController; 51@end 52 53#endif // CHROME_BROWSER_UI_COCOA_PROFILES_AVATAR_BASE_CONTROLLER_H_ 54