blob: 70c3b0d01737d77794425f5376b6eb1f8308826c [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_COCOA_PROFILES_AVATAR_BASE_CONTROLLER_H_
#define CHROME_BROWSER_UI_COCOA_PROFILES_AVATAR_BASE_CONTROLLER_H_
#import <AppKit/AppKit.h>
#import "base/mac/scoped_nsobject.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/browser_window.h"
@class BaseBubbleController;
class Browser;
class ProfileInfoUpdateObserver;
// This view controller manages the button that sits in the top of the
// window frame when using multi-profiles, and shows information about the
// current profile. Clicking the button will open the profile menu.
@interface AvatarBaseController : NSViewController {
@protected
Browser* browser_;
// The avatar button. Child classes are responsible for implementing it.
base::scoped_nsobject<NSButton> button_;
@private
// The menu controller, if the menu is open.
BaseBubbleController* menuController_;
// Observer that listens for updates to the ProfileInfoCache.
scoped_ptr<ProfileInfoUpdateObserver> profileInfoObserver_;
}
// The avatar button view.
@property(readonly, nonatomic) NSButton* buttonView;
// Designated initializer.
- (id)initWithBrowser:(Browser*)browser;
// Shows the avatar bubble in the given mode.
- (void)showAvatarBubble:(NSView*)anchor
withMode:(BrowserWindow::AvatarBubbleMode)mode
withServiceType:(signin::GAIAServiceType)serviceType;
@end
@interface AvatarBaseController (ExposedForTesting)
- (BaseBubbleController*)menuController;
@end
#endif // CHROME_BROWSER_UI_COCOA_PROFILES_AVATAR_BASE_CONTROLLER_H_