Index: chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
diff --git a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
index 42367b07144e1690ae19904f56f680cba12bf428..503a0aed387409c3392fb4b538958e1ca48089e7 100644 |
--- a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
+++ b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
@@ -65,6 +65,7 @@ |
#include "chrome/browser/chromeos/login/user_manager.h" |
#include "chrome/browser/chromeos/options/network_config_view.h" |
#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" |
+#include "chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.h" |
#include "chrome/browser/chromeos/settings/cros_settings.h" |
#include "chrome/browser/chromeos/sim_dialog_delegate.h" |
#include "chrome/browser/chromeos/system_key_event_listener.h" |
@@ -74,6 +75,7 @@ |
#include "chrome/browser/lifetime/application_lifetime.h" |
#include "chrome/browser/policy/browser_policy_connector.h" |
#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
#include "chrome/browser/ui/ash/volume_controller_chromeos.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_finder.h" |
@@ -238,6 +240,12 @@ void ShowNetworkSettingsPage(const std::string& service_path) { |
ProfileManager::GetPrimaryUserProfile()); |
} |
+void OnAcceptMultiprofilesIntro(bool no_show_again) { |
+ PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs(); |
+ prefs->SetBoolean(prefs::kMultiProfileNeverShowIntro, no_show_again); |
+ UserAddingScreen::Get()->Start(); |
+} |
+ |
class SystemTrayDelegate : public ash::SystemTrayDelegate, |
public SessionManagerClient::Observer, |
public drive::JobListObserver, |
@@ -629,8 +637,27 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate, |
return; |
// Launch sign in screen to add another user to current session. |
- if (UserManager::Get()->GetUsersAdmittedForMultiProfile().size()) |
- UserAddingScreen::Get()->Start(); |
+ if (UserManager::Get()->GetUsersAdmittedForMultiProfile().size()) { |
+ // Don't show dialog if any logged in user in multi-profiles session |
+ // dismissed it. |
+ bool show_intro = true; |
+ const UserList logged_in_users = UserManager::Get()->GetLoggedInUsers(); |
+ for (UserList::const_iterator it = logged_in_users.begin(); |
+ it != logged_in_users.end(); ++it) { |
+ show_intro &= !multi_user_util::GetProfileFromUserID( |
+ multi_user_util::GetUserIDFromEmail((*it)->email()))->GetPrefs()-> |
+ GetBoolean(prefs::kMultiProfileNeverShowIntro); |
+ if (!show_intro) |
+ break; |
+ } |
+ if (show_intro) { |
+ base::Callback<void(bool)> on_accept = |
+ base::Bind(&OnAcceptMultiprofilesIntro); |
+ ShowMultiprofilesIntroDialog(on_accept); |
+ } else { |
+ UserAddingScreen::Get()->Start(); |
+ } |
+ } |
} |
virtual void ShowSpringChargerReplacementDialog() OVERRIDE { |