Home | History | Annotate | Download | only in profiles
      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;
     15 class Browser;
     16 class 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)showAvatarBubble:(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