[Metrics] Make MetricsStateManager take a callback param to check if UMA is enabled.
[chromium-blink-merge.git] / chrome / browser / ui / views / profiles / new_avatar_button.h
blob3fad44f019c8abc2a4e1e9a66f167d911d5ac2f8
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.
5 #ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_NEW_AVATAR_BUTTON_H_
6 #define CHROME_BROWSER_UI_VIEWS_PROFILES_NEW_AVATAR_BUTTON_H_
8 #include "chrome/browser/profiles/profile_info_cache_observer.h"
9 #include "ui/views/controls/button/menu_button.h"
11 class Browser;
13 // Avatar button that displays the active profile's name in the caption area.
14 class 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.
23 NewAvatarButton(views::ButtonListener* listener,
24 const base::string16& profile_name,
25 AvatarButtonStyle button_style,
26 Browser* browser);
27 virtual ~NewAvatarButton();
29 // views::View:
30 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
32 private:
33 friend class NewAvatarMenuButtonTest;
34 friend class ProfileChooserViewBrowserTest;
35 FRIEND_TEST_ALL_PREFIXES(NewAvatarMenuButtonTest, SignOut);
36 FRIEND_TEST_ALL_PREFIXES(ProfileChooserViewBrowserTest, ViewProfileUMA);
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;
47 // Called when the profile info cache has changed, which means we might
48 // have to re-display the profile name.
49 void UpdateAvatarButtonAndRelayoutParent();
51 Browser* browser_;
53 DISALLOW_COPY_AND_ASSIGN(NewAvatarButton);
56 #endif // CHROME_BROWSER_UI_VIEWS_PROFILES_NEW_AVATAR_BUTTON_H_