Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / profiles / avatar_menu.cc
index 0039b10..992a2aa 100644 (file)
 #include "chrome/browser/ui/browser_dialogs.h"
 #include "chrome/browser/ui/host_desktop.h"
 #include "chrome/browser/ui/startup/startup_browser_creator.h"
+#include "chrome/browser/ui/user_manager.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/grit/generated_resources.h"
 #include "components/signin/core/common/profile_management_switches.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_service.h"
-#include "grit/generated_resources.h"
 #include "grit/theme_resources.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
@@ -52,6 +53,9 @@ AvatarMenu::AvatarMenu(ProfileInfoInterface* profile_cache,
                        Browser* browser)
     : profile_list_(ProfileList::Create(profile_cache)),
       menu_actions_(AvatarMenuActions::Create()),
+#if defined(ENABLE_MANAGED_USERS)
+      supervised_user_observer_(this),
+#endif
       profile_info_(profile_cache),
       observer_(observer),
       browser_(browser) {
@@ -63,6 +67,15 @@ AvatarMenu::AvatarMenu(ProfileInfoInterface* profile_cache,
   // Register this as an observer of the info cache.
   registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED,
       content::NotificationService::AllSources());
+
+#if defined(ENABLE_MANAGED_USERS)
+  // Register this as an observer of the SupervisedUserService to be notified
+  // of changes to the custodian info.
+  if (browser_) {
+    supervised_user_observer_.Add(
+        SupervisedUserServiceFactory::GetForProfile(browser_->profile()));
+  }
+#endif
 }
 
 AvatarMenu::~AvatarMenu() {
@@ -119,10 +132,12 @@ void AvatarMenu::SwitchToProfile(size_t index,
          index == GetActiveProfileIndex());
   const Item& item = GetItemAt(index);
 
-  if (switches::IsNewProfileManagement()) {
+  if (switches::IsNewAvatarMenu()) {
     // Don't open a browser window for signed-out profiles.
     if (item.signin_required) {
-      chrome::ShowUserManager(item.profile_path);
+      UserManager::Show(item.profile_path,
+                        profiles::USER_MANAGER_NO_TUTORIAL,
+                        profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION);
       return;
     }
   }
@@ -135,7 +150,7 @@ void AvatarMenu::SwitchToProfile(size_t index,
     desktop_type = browser_->host_desktop_type();
 
   profiles::SwitchToProfile(path, desktop_type, always_create,
-                            profiles::ProfileSwitchingDoneCallback(),
+                            ProfileManager::CreateCallback(),
                             metric);
 }
 
@@ -193,7 +208,7 @@ base::string16 AvatarMenu::GetSupervisedUserInformation() const {
         SupervisedUserServiceFactory::GetForProfile(browser_->profile());
     base::string16 custodian =
         base::UTF8ToUTF16(service->GetCustodianEmailAddress());
-    return l10n_util::GetStringFUTF16(IDS_MANAGED_USER_INFO, custodian);
+    return l10n_util::GetStringFUTF16(IDS_SUPERVISED_USER_INFO, custodian);
 #endif
   }
   return base::string16();
@@ -201,7 +216,7 @@ base::string16 AvatarMenu::GetSupervisedUserInformation() const {
 
 const gfx::Image& AvatarMenu::GetSupervisedUserIcon() const {
   return ResourceBundle::GetSharedInstance().GetNativeImageNamed(
-      IDR_MANAGED_USER_ICON);
+      IDR_SUPERVISED_USER_ICON);
 }
 
 void AvatarMenu::ActiveBrowserChanged(Browser* browser) {
@@ -231,3 +246,11 @@ void AvatarMenu::Observe(int type,
   if (observer_)
     observer_->OnAvatarMenuChanged(this);
 }
+
+#if defined(ENABLE_MANAGED_USERS)
+void AvatarMenu::OnCustodianInfoChanged() {
+  RebuildMenu();
+  if (observer_)
+    observer_->OnAvatarMenuChanged(this);
+}
+#endif