Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / profiles / avatar_menu.h
index f319a32..781bdf4 100644 (file)
@@ -10,6 +10,7 @@
 
 #include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/scoped_observer.h"
 #include "base/strings/string16.h"
 #include "chrome/browser/profiles/profile_metrics.h"
 #include "chrome/browser/ui/host_desktop.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "ui/gfx/image/image.h"
 
+#if defined(ENABLE_MANAGED_USERS)
+#include "chrome/browser/supervised_user/supervised_user_service_observer.h"
+#endif
+
+class AvatarMenuActions;
 class AvatarMenuObserver;
 class Browser;
 class Profile;
 class ProfileInfoInterface;
 class ProfileList;
-class AvatarMenuActions;
+class SupervisedUserService;
 
 // This class represents the menu-like interface used to select profiles,
 // such as the bubble that appears when the avatar icon is clicked in the
 // browser window frame. This class will notify its observer when the backend
 // data changes, and the view for this model should forward actions
 // back to it in response to user events.
-class AvatarMenu : public content::NotificationObserver {
+class AvatarMenu :
+#if defined(ENABLE_MANAGED_USERS)
+    public SupervisedUserServiceObserver,
+#endif
+    public content::NotificationObserver {
  public:
   // Represents an item in the menu.
   struct Item {
@@ -142,12 +152,23 @@ class AvatarMenu : public content::NotificationObserver {
                        const content::NotificationDetails& details) OVERRIDE;
 
  private:
+#if defined(ENABLE_MANAGED_USERS)
+  // SupervisedUserServiceObserver:
+  virtual void OnCustodianInfoChanged() OVERRIDE;
+#endif
+
   // The model that provides the list of menu items.
   scoped_ptr<ProfileList> profile_list_;
 
   // The controller for avatar menu actions.
   scoped_ptr<AvatarMenuActions> menu_actions_;
 
+#if defined(ENABLE_MANAGED_USERS)
+  // Observes changes to a supervised user's custodian info.
+  ScopedObserver<SupervisedUserService, SupervisedUserServiceObserver>
+      supervised_user_observer_;
+#endif
+
   // The cache that provides the profile information. Weak.
   ProfileInfoInterface* profile_info_;