Index: chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
diff --git a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
index 286e2db3c549ad299a0774ea419e8f365ccdc747..0252778766e7730b236492fee654b836cb3aa3bf 100644 |
--- a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
+++ b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
@@ -11,7 +11,10 @@ |
#include "base/prefs/pref_service.h" |
#include "chrome/browser/chromeos/login/lock/screen_locker.h" |
#include "chrome/browser/chromeos/login/ui/user_adding_screen.h" |
+#include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" |
#include "chrome/browser/chromeos/login/users/user_manager.h" |
+#include "chrome/browser/chromeos/policy/policy_cert_service.h" |
+#include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" |
#include "chrome/browser/chromeos/profiles/profile_helper.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_manager.h" |
@@ -207,6 +210,31 @@ void SessionStateDelegateChromeos::CycleActiveUser(CycleUser cycle_user) { |
chromeos::UserManager::Get()->SwitchActiveUser(user_id); |
} |
+ash::SessionStateDelegate::PrimaryUserPolicy |
+SessionStateDelegateChromeos::GetPrimaryUserPolicy() const { |
dzhioev (left Google)
2014/08/06 12:37:39
This method is identical to the part of MultiProfi
Roman Sorokin (ftl)
2014/08/08 09:22:00
Done.
|
+ chromeos::UserManager* user_manager = chromeos::UserManager::Get(); |
+ CHECK(user_manager); |
+ |
+ const user_manager::User* primary_user = user_manager->GetPrimaryUser(); |
+ if (!primary_user) |
+ return ash::SessionStateDelegate::PRIMARY_USER_POLICY_ALLOW; |
+ Profile* primary_user_profile = |
+ chromeos::ProfileHelper::Get()->GetProfileByUser(primary_user); |
+ const std::string primary_user_behavior = |
+ primary_user_profile->GetPrefs()->GetString( |
+ prefs::kMultiProfileUserBehavior); |
+ if (primary_user_behavior == |
+ chromeos::MultiProfileUserController::kBehaviorNotAllowed) |
+ return ash::SessionStateDelegate::PRIMARY_USER_POLICY_FORBIDS; |
+ |
+ policy::PolicyCertService* service = |
+ policy::PolicyCertServiceFactory::GetForProfile(primary_user_profile); |
+ if (service && service->has_policy_certificates()) |
+ return ash::SessionStateDelegate::PRIMARY_USER_POLICY_CERT_TAINTED; |
+ |
+ return ash::SessionStateDelegate::PRIMARY_USER_POLICY_ALLOW; |
+} |
+ |
void SessionStateDelegateChromeos::AddSessionStateObserver( |
ash::SessionStateObserver* observer) { |
session_state_observer_list_.AddObserver(observer); |