| 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..7d6366080f07a45237ac838c5021465baf3f17a5 100644
|
| --- a/chrome/browser/chromeos/settings/device_settings_provider.cc
|
| +++ b/chrome/browser/chromeos/settings/device_settings_provider.cc
|
| @@ -15,13 +15,15 @@
|
| #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"
|
|
|
| using google::protobuf::RepeatedField;
|
| @@ -216,6 +218,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 +397,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 +446,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 +471,23 @@ void DeviceSettingsProvider::DecodeLoginPolicies(
|
| !policy.guest_mode_enabled().has_guest_mode_enabled() ||
|
| policy.guest_mode_enabled().guest_mode_enabled());
|
|
|
| + policy::BrowserPolicyConnectorChromeOS* connector =
|
| + g_browser_process->platform_part()->browser_policy_connector_chromeos();
|
| + bool supervised_users_enabled = false;
|
| + if (connector->IsEnterpriseManaged()) {
|
| + 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 +500,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 =
|
|
|