Home | History | Annotate | Download | only in views
      1 // Copyright 2013 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_VIEWS_NEW_AVATAR_BUTTON_H_
      6 #define CHROME_BROWSER_UI_VIEWS_NEW_AVATAR_BUTTON_H_
      7 
      8 #include "chrome/browser/profiles/avatar_menu.h"
      9 #include "chrome/browser/profiles/avatar_menu_observer.h"
     10 #include "ui/views/controls/button/menu_button.h"
     11 
     12 // Avatar button that displays the active profile's name in the caption area.
     13 class NewAvatarButton : public views::MenuButton,
     14                         public AvatarMenuObserver {
     15  public:
     16   // Different button styles that can be applied.
     17   enum AvatarButtonStyle {
     18     THEMED_BUTTON,   // Used in a themed browser window.
     19     NATIVE_BUTTON,    // Used in a native aero or metro window.
     20   };
     21 
     22   NewAvatarButton(views::ButtonListener* listener,
     23                   const base::string16& profile_name,
     24                   AvatarButtonStyle button_style,
     25                   Browser* browser);
     26   virtual ~NewAvatarButton();
     27 
     28   // views::View:
     29   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
     30 
     31  private:
     32   friend class NewAvatarMenuButtonTest;
     33   FRIEND_TEST_ALL_PREFIXES(NewAvatarMenuButtonTest, SignOut);
     34 
     35   // AvatarMenuObserver:
     36   virtual void OnAvatarMenuChanged(AvatarMenu* avatar_menu) OVERRIDE;
     37 
     38   scoped_ptr<AvatarMenu> avatar_menu_;
     39   Browser* browser_;
     40 
     41   DISALLOW_COPY_AND_ASSIGN(NewAvatarButton);
     42 };
     43 
     44 #endif  // CHROME_BROWSER_UI_VIEWS_NEW_AVATAR_BUTTON_H_
     45