Chromium Code Reviews| Index: chrome/browser/chromeos/settings/device_settings_provider.cc |
| diff --git a/chrome/browser/chromeos/settings/device_settings_provider.cc b/chrome/browser/chromeos/settings/device_settings_provider.cc |
| index b122ae04e7020d06da11f4bcd5839d291c30b3c3..e19372d419684a56463dc7076e98eedcbbf3b831 100644 |
| --- a/chrome/browser/chromeos/settings/device_settings_provider.cc |
| +++ b/chrome/browser/chromeos/settings/device_settings_provider.cc |
| @@ -15,11 +15,14 @@ |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| #include "chrome/browser/chromeos/policy/device_local_account.h" |
| +#include "chrome/browser/chromeos/policy/enterprise_install_attributes.h" |
| #include "chrome/browser/chromeos/settings/cros_settings.h" |
| #include "chrome/browser/chromeos/settings/device_settings_cache.h" |
| #include "chrome/browser/ui/options/options_util.h" |
| #include "chrome/installer/util/google_update_settings.h" |
| #include "chromeos/chromeos_switches.h" |
| +#include "chromeos/dbus/cryptohome_client.h" |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| #include "chromeos/settings/cros_settings_names.h" |
| #include "components/policy/core/common/cloud/cloud_policy_constants.h" |
| #include "policy/proto/device_management_backend.pb.h" |
| @@ -216,6 +219,14 @@ void DeviceSettingsProvider::SetInPolicy() { |
| guest->set_guest_mode_enabled(guest_value); |
| else |
| NOTREACHED(); |
| + } else if (prop == kAccountsPrefSupervisedUsersEnabled) { |
| + em::SupervisedUsersSettingsProto* supervised = |
| + device_settings_.mutable_supervised_users_settings(); |
| + bool supervised_value; |
| + if (value->GetAsBoolean(&supervised_value)) |
| + supervised->set_supervised_users_enabled(supervised_value); |
| + else |
| + NOTREACHED(); |
| } else if (prop == kAccountsPrefShowUserNamesOnSignIn) { |
| em::ShowUserNamesOnSigninProto* show = |
| device_settings_.mutable_show_user_names(); |
| @@ -387,7 +398,6 @@ void DeviceSettingsProvider::SetInPolicy() { |
| } else { |
| // The remaining settings don't support Set(), since they are not |
| // intended to be customizable by the user: |
| - // kAccountsPrefSupervisedUsersEnabled |
| // kAppPack |
| // kDeviceAttestationEnabled |
| // kDeviceOwner |
| @@ -437,6 +447,8 @@ void DeviceSettingsProvider::DecodeLoginPolicies( |
| // true is default permissive value and false is safe prohibitive value. |
| // Exceptions: |
| // kAccountsPrefEphemeralUsersEnabled has a default value of false. |
| + // kAccountsPrefSupervisedUsersEnabled has a default value of false |
| + // for enterprise devices and true for consumer devices. |
| if (policy.has_allow_new_users() && |
| policy.allow_new_users().has_allow_new_users()) { |
| if (policy.allow_new_users().allow_new_users()) { |
| @@ -460,6 +472,25 @@ void DeviceSettingsProvider::DecodeLoginPolicies( |
| !policy.guest_mode_enabled().has_guest_mode_enabled() || |
| policy.guest_mode_enabled().guest_mode_enabled()); |
| + scoped_ptr<policy::EnterpriseInstallAttributes> install_attributes; |
| + install_attributes.reset(new policy::EnterpriseInstallAttributes( |
| + DBusThreadManager::Get()->GetCryptohomeClient())); |
|
Mattias Nissler (ping if slow)
2014/05/26 08:11:42
EnterpriseInstallAttributes is not meant to be ins
|
| + |
| + bool supervised_users_enabled = false; |
| + if (install_attributes->IsEnterpriseDevice()) { |
| + supervised_users_enabled = |
| + policy.has_supervised_users_settings() && |
| + policy.supervised_users_settings().has_supervised_users_enabled() && |
| + policy.supervised_users_settings().supervised_users_enabled(); |
| + } else { |
| + supervised_users_enabled = |
| + !policy.has_supervised_users_settings() || |
| + !policy.supervised_users_settings().has_supervised_users_enabled() || |
| + policy.supervised_users_settings().supervised_users_enabled(); |
| + } |
| + new_values_cache->SetBoolean( |
| + kAccountsPrefSupervisedUsersEnabled, supervised_users_enabled); |
| + |
| new_values_cache->SetBoolean( |
| kAccountsPrefShowUserNamesOnSignIn, |
| !policy.has_show_user_names() || |
| @@ -472,11 +503,6 @@ void DeviceSettingsProvider::DecodeLoginPolicies( |
| policy.ephemeral_users_enabled().has_ephemeral_users_enabled() && |
| policy.ephemeral_users_enabled().ephemeral_users_enabled()); |
| - new_values_cache->SetBoolean( |
| - kAccountsPrefSupervisedUsersEnabled, |
| - policy.has_supervised_users_settings() && |
| - policy.supervised_users_settings().supervised_users_enabled()); |
| - |
| base::ListValue* list = new base::ListValue(); |
| const em::UserWhitelistProto& whitelist_proto = policy.user_whitelist(); |
| const RepeatedPtrField<std::string>& whitelist = |