new_avatar_button.h revision 010d83a9304c5a91596085d917d248abff47903a
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_VIEWS_PROFILES_NEW_AVATAR_BUTTON_H_ 6#define CHROME_BROWSER_UI_VIEWS_PROFILES_NEW_AVATAR_BUTTON_H_ 7 8#include "chrome/browser/profiles/profile_info_cache_observer.h" 9#include "ui/views/controls/button/menu_button.h" 10 11class Browser; 12 13// Avatar button that displays the active profile's name in the caption area. 14class NewAvatarButton : public views::MenuButton, 15 public ProfileInfoCacheObserver { 16 public: 17 // Different button styles that can be applied. 18 enum AvatarButtonStyle { 19 THEMED_BUTTON, // Used in a themed browser window. 20 NATIVE_BUTTON, // Used in a native aero or metro window. 21 }; 22 23 NewAvatarButton(views::ButtonListener* listener, 24 const base::string16& profile_name, 25 AvatarButtonStyle button_style, 26 Browser* browser); 27 virtual ~NewAvatarButton(); 28 29 // views::View: 30 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 31 32 private: 33 friend class NewAvatarMenuButtonTest; 34 friend class ProfileChooserViewBrowserTest; 35 FRIEND_TEST_ALL_PREFIXES(NewAvatarMenuButtonTest, SignOut); 36 FRIEND_TEST_ALL_PREFIXES(ProfileChooserViewBrowserTest, ViewProfileUMA); 37 38 // ProfileInfoCacheObserver: 39 virtual void OnProfileAdded(const base::FilePath& profile_path) OVERRIDE; 40 virtual void OnProfileWasRemoved( 41 const base::FilePath& profile_path, 42 const base::string16& profile_name) OVERRIDE; 43 virtual void OnProfileNameChanged( 44 const base::FilePath& profile_path, 45 const base::string16& old_profile_name) OVERRIDE; 46 47 // Called when the profile info cache has changed, which means we might 48 // have to re-display the profile name. 49 void UpdateAvatarButtonAndRelayoutParent(); 50 51 Browser* browser_; 52 53 DISALLOW_COPY_AND_ASSIGN(NewAvatarButton); 54}; 55 56#endif // CHROME_BROWSER_UI_VIEWS_PROFILES_NEW_AVATAR_BUTTON_H_ 57