Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2048)

Unified Diff: chrome/browser/chromeos/login/user_manager_impl.cc

Issue 17546004: Added policy for disabling locally managed users. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge conflict resolved. Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/user_manager_impl.cc
diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc
index 0fc5a6a8e2948e0c104499335807f98a84acc82f..543a2fbc1045e9d32d8d27043cac2573a0348389 100644
--- a/chrome/browser/chromeos/login/user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/user_manager_impl.cc
@@ -35,6 +35,7 @@
#include "chrome/browser/chromeos/policy/device_local_account.h"
#include "chrome/browser/chromeos/session_length_limiter.h"
#include "chrome/browser/chromeos/settings/cros_settings_names.h"
+#include "chrome/browser/managed_mode/managed_user_service.h"
#include "chrome/browser/policy/browser_policy_connector.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -205,6 +206,7 @@ UserManagerImpl::UserManagerImpl()
is_current_user_new_(false),
is_current_user_ephemeral_regular_user_(false),
ephemeral_users_enabled_(false),
+ locally_managed_users_enabled_by_policy_(false),
merge_session_state_(MERGE_STATUS_NOT_STARTED),
observed_sync_service_(NULL),
user_image_manager_(new UserImageManagerImpl) {
@@ -215,6 +217,10 @@ UserManagerImpl::UserManagerImpl()
registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
content::NotificationService::AllSources());
RetrieveTrustedDevicePolicies();
+ cros_settings_->AddSettingsObserver(kAccountsPrefDeviceLocalAccounts,
+ this);
+ cros_settings_->AddSettingsObserver(kAccountsPrefSupervisedUsersEnabled,
+ this);
UpdateLoginState();
}
@@ -237,6 +243,9 @@ void UserManagerImpl::Shutdown() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
cros_settings_->RemoveSettingsObserver(kAccountsPrefDeviceLocalAccounts,
this);
+ cros_settings_->RemoveSettingsObserver(
+ kAccountsPrefSupervisedUsersEnabled,
+ this);
// Stop the session length limiter.
session_length_limiter_.reset();
@@ -713,11 +722,14 @@ void UserManagerImpl::Observe(int type,
}
}
break;
- case chrome::NOTIFICATION_SYSTEM_SETTING_CHANGED:
- DCHECK_EQ(*content::Details<const std::string>(details).ptr(),
- kAccountsPrefDeviceLocalAccounts);
+ case chrome::NOTIFICATION_SYSTEM_SETTING_CHANGED: {
+ std::string changed_setting =
+ *content::Details<const std::string>(details).ptr();
+ DCHECK(changed_setting == kAccountsPrefDeviceLocalAccounts ||
+ changed_setting == kAccountsPrefSupervisedUsersEnabled);
RetrieveTrustedDevicePolicies();
break;
+ }
default:
NOTREACHED();
}
@@ -1010,6 +1022,7 @@ void UserManagerImpl::EnsureUsersLoaded() {
void UserManagerImpl::RetrieveTrustedDevicePolicies() {
ephemeral_users_enabled_ = false;
+ locally_managed_users_enabled_by_policy_ = false;
owner_email_ = "";
// Schedule a callback if device policy has not yet been verified.
@@ -1021,6 +1034,8 @@ void UserManagerImpl::RetrieveTrustedDevicePolicies() {
cros_settings_->GetBoolean(kAccountsPrefEphemeralUsersEnabled,
&ephemeral_users_enabled_);
+ cros_settings_->GetBoolean(kAccountsPrefSupervisedUsersEnabled,
+ &locally_managed_users_enabled_by_policy_);
cros_settings_->GetString(kDeviceOwner, &owner_email_);
EnsureUsersLoaded();
@@ -1052,9 +1067,6 @@ void UserManagerImpl::RetrieveTrustedDevicePolicies() {
if (changed)
NotifyUserListChanged();
-
- cros_settings_->AddSettingsObserver(kAccountsPrefDeviceLocalAccounts,
- this);
}
bool UserManagerImpl::AreEphemeralUsersEnabled() const {
@@ -1586,6 +1598,12 @@ void UserManagerImpl::SetAppModeChromeClientOAuthInfo(
chrome_client_secret_ = chrome_client_secret;
}
+bool UserManagerImpl::AreLocallyManagedUsersAllowed() const {
+ return ManagedUserService::AreManagedUsersEnabled() &&
+ (locally_managed_users_enabled_by_policy_ ||
+ !g_browser_process->browser_policy_connector()->IsEnterpriseManaged());
+}
+
UserFlow* UserManagerImpl::GetDefaultUserFlow() const {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!default_flow_.get())
« no previous file with comments | « chrome/browser/chromeos/login/user_manager_impl.h ('k') | chrome/browser/chromeos/login/user_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698