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

Side by Side Diff: chrome/browser/chromeos/settings/device_settings_provider.cc

Issue 228553002: Preference dis/allowing supervised users creation is now available as owner setting, not only as de… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Using EnterpriseInstallAttributes for getting device status. Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/settings/device_settings_provider.h" 5 #include "chrome/browser/chromeos/settings/device_settings_provider.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/threading/thread_restrictions.h" 13 #include "base/threading/thread_restrictions.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
16 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 16 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
17 #include "chrome/browser/chromeos/policy/device_local_account.h" 17 #include "chrome/browser/chromeos/policy/device_local_account.h"
18 #include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
18 #include "chrome/browser/chromeos/settings/cros_settings.h" 19 #include "chrome/browser/chromeos/settings/cros_settings.h"
19 #include "chrome/browser/chromeos/settings/device_settings_cache.h" 20 #include "chrome/browser/chromeos/settings/device_settings_cache.h"
20 #include "chrome/browser/ui/options/options_util.h" 21 #include "chrome/browser/ui/options/options_util.h"
21 #include "chrome/installer/util/google_update_settings.h" 22 #include "chrome/installer/util/google_update_settings.h"
22 #include "chromeos/chromeos_switches.h" 23 #include "chromeos/chromeos_switches.h"
24 #include "chromeos/dbus/cryptohome_client.h"
25 #include "chromeos/dbus/dbus_thread_manager.h"
23 #include "chromeos/settings/cros_settings_names.h" 26 #include "chromeos/settings/cros_settings_names.h"
24 #include "components/policy/core/common/cloud/cloud_policy_constants.h" 27 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
25 #include "policy/proto/device_management_backend.pb.h" 28 #include "policy/proto/device_management_backend.pb.h"
26 29
27 using google::protobuf::RepeatedField; 30 using google::protobuf::RepeatedField;
28 using google::protobuf::RepeatedPtrField; 31 using google::protobuf::RepeatedPtrField;
29 32
30 namespace em = enterprise_management; 33 namespace em = enterprise_management;
31 34
32 namespace chromeos { 35 namespace chromeos {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 else 212 else
210 NOTREACHED(); 213 NOTREACHED();
211 } else if (prop == kAccountsPrefAllowGuest) { 214 } else if (prop == kAccountsPrefAllowGuest) {
212 em::GuestModeEnabledProto* guest = 215 em::GuestModeEnabledProto* guest =
213 device_settings_.mutable_guest_mode_enabled(); 216 device_settings_.mutable_guest_mode_enabled();
214 bool guest_value; 217 bool guest_value;
215 if (value->GetAsBoolean(&guest_value)) 218 if (value->GetAsBoolean(&guest_value))
216 guest->set_guest_mode_enabled(guest_value); 219 guest->set_guest_mode_enabled(guest_value);
217 else 220 else
218 NOTREACHED(); 221 NOTREACHED();
222 } else if (prop == kAccountsPrefSupervisedUsersEnabled) {
223 em::SupervisedUsersSettingsProto* supervised =
224 device_settings_.mutable_supervised_users_settings();
225 bool supervised_value;
226 if (value->GetAsBoolean(&supervised_value))
227 supervised->set_supervised_users_enabled(supervised_value);
228 else
229 NOTREACHED();
219 } else if (prop == kAccountsPrefShowUserNamesOnSignIn) { 230 } else if (prop == kAccountsPrefShowUserNamesOnSignIn) {
220 em::ShowUserNamesOnSigninProto* show = 231 em::ShowUserNamesOnSigninProto* show =
221 device_settings_.mutable_show_user_names(); 232 device_settings_.mutable_show_user_names();
222 bool show_value; 233 bool show_value;
223 if (value->GetAsBoolean(&show_value)) 234 if (value->GetAsBoolean(&show_value))
224 show->set_show_user_names(show_value); 235 show->set_show_user_names(show_value);
225 else 236 else
226 NOTREACHED(); 237 NOTREACHED();
227 } else if (prop == kAccountsPrefDeviceLocalAccounts) { 238 } else if (prop == kAccountsPrefDeviceLocalAccounts) {
228 em::DeviceLocalAccountsProto* device_local_accounts = 239 em::DeviceLocalAccountsProto* device_local_accounts =
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 device_settings_.mutable_attestation_settings(); 391 device_settings_.mutable_attestation_settings();
381 bool setting_enabled; 392 bool setting_enabled;
382 if (value->GetAsBoolean(&setting_enabled)) { 393 if (value->GetAsBoolean(&setting_enabled)) {
383 attestation_settings->set_content_protection_enabled(setting_enabled); 394 attestation_settings->set_content_protection_enabled(setting_enabled);
384 } else { 395 } else {
385 NOTREACHED(); 396 NOTREACHED();
386 } 397 }
387 } else { 398 } else {
388 // The remaining settings don't support Set(), since they are not 399 // The remaining settings don't support Set(), since they are not
389 // intended to be customizable by the user: 400 // intended to be customizable by the user:
390 // kAccountsPrefSupervisedUsersEnabled
391 // kAppPack 401 // kAppPack
392 // kDeviceAttestationEnabled 402 // kDeviceAttestationEnabled
393 // kDeviceOwner 403 // kDeviceOwner
394 // kIdleLogoutTimeout 404 // kIdleLogoutTimeout
395 // kIdleLogoutWarningDuration 405 // kIdleLogoutWarningDuration
396 // kReleaseChannelDelegated 406 // kReleaseChannelDelegated
397 // kReportDeviceActivityTimes 407 // kReportDeviceActivityTimes
398 // kReportDeviceBootMode 408 // kReportDeviceBootMode
399 // kReportDeviceLocation 409 // kReportDeviceLocation
400 // kReportDeviceVersionInfo 410 // kReportDeviceVersionInfo
(...skipping 29 matching lines...) Expand all
430 } 440 }
431 } 441 }
432 442
433 void DeviceSettingsProvider::DecodeLoginPolicies( 443 void DeviceSettingsProvider::DecodeLoginPolicies(
434 const em::ChromeDeviceSettingsProto& policy, 444 const em::ChromeDeviceSettingsProto& policy,
435 PrefValueMap* new_values_cache) const { 445 PrefValueMap* new_values_cache) const {
436 // For all our boolean settings the following is applicable: 446 // For all our boolean settings the following is applicable:
437 // true is default permissive value and false is safe prohibitive value. 447 // true is default permissive value and false is safe prohibitive value.
438 // Exceptions: 448 // Exceptions:
439 // kAccountsPrefEphemeralUsersEnabled has a default value of false. 449 // kAccountsPrefEphemeralUsersEnabled has a default value of false.
450 // kAccountsPrefSupervisedUsersEnabled has a default value of false
451 // for enterprise devices and true for consumer devices.
440 if (policy.has_allow_new_users() && 452 if (policy.has_allow_new_users() &&
441 policy.allow_new_users().has_allow_new_users()) { 453 policy.allow_new_users().has_allow_new_users()) {
442 if (policy.allow_new_users().allow_new_users()) { 454 if (policy.allow_new_users().allow_new_users()) {
443 // New users allowed, user whitelist ignored. 455 // New users allowed, user whitelist ignored.
444 new_values_cache->SetBoolean(kAccountsPrefAllowNewUser, true); 456 new_values_cache->SetBoolean(kAccountsPrefAllowNewUser, true);
445 } else { 457 } else {
446 // New users not allowed, enforce user whitelist if present. 458 // New users not allowed, enforce user whitelist if present.
447 new_values_cache->SetBoolean(kAccountsPrefAllowNewUser, 459 new_values_cache->SetBoolean(kAccountsPrefAllowNewUser,
448 !policy.has_user_whitelist()); 460 !policy.has_user_whitelist());
449 } 461 }
450 } else { 462 } else {
451 // No configured allow-new-users value, enforce whitelist if non-empty. 463 // No configured allow-new-users value, enforce whitelist if non-empty.
452 new_values_cache->SetBoolean( 464 new_values_cache->SetBoolean(
453 kAccountsPrefAllowNewUser, 465 kAccountsPrefAllowNewUser,
454 policy.user_whitelist().user_whitelist_size() == 0); 466 policy.user_whitelist().user_whitelist_size() == 0);
455 } 467 }
456 468
457 new_values_cache->SetBoolean( 469 new_values_cache->SetBoolean(
458 kAccountsPrefAllowGuest, 470 kAccountsPrefAllowGuest,
459 !policy.has_guest_mode_enabled() || 471 !policy.has_guest_mode_enabled() ||
460 !policy.guest_mode_enabled().has_guest_mode_enabled() || 472 !policy.guest_mode_enabled().has_guest_mode_enabled() ||
461 policy.guest_mode_enabled().guest_mode_enabled()); 473 policy.guest_mode_enabled().guest_mode_enabled());
462 474
475 scoped_ptr<policy::EnterpriseInstallAttributes> install_attributes;
476 install_attributes.reset(new policy::EnterpriseInstallAttributes(
477 DBusThreadManager::Get()->GetCryptohomeClient()));
Mattias Nissler (ping if slow) 2014/05/26 08:11:42 EnterpriseInstallAttributes is not meant to be ins
478
479 bool supervised_users_enabled = false;
480 if (install_attributes->IsEnterpriseDevice()) {
481 supervised_users_enabled =
482 policy.has_supervised_users_settings() &&
483 policy.supervised_users_settings().has_supervised_users_enabled() &&
484 policy.supervised_users_settings().supervised_users_enabled();
485 } else {
486 supervised_users_enabled =
487 !policy.has_supervised_users_settings() ||
488 !policy.supervised_users_settings().has_supervised_users_enabled() ||
489 policy.supervised_users_settings().supervised_users_enabled();
490 }
491 new_values_cache->SetBoolean(
492 kAccountsPrefSupervisedUsersEnabled, supervised_users_enabled);
493
463 new_values_cache->SetBoolean( 494 new_values_cache->SetBoolean(
464 kAccountsPrefShowUserNamesOnSignIn, 495 kAccountsPrefShowUserNamesOnSignIn,
465 !policy.has_show_user_names() || 496 !policy.has_show_user_names() ||
466 !policy.show_user_names().has_show_user_names() || 497 !policy.show_user_names().has_show_user_names() ||
467 policy.show_user_names().show_user_names()); 498 policy.show_user_names().show_user_names());
468 499
469 new_values_cache->SetBoolean( 500 new_values_cache->SetBoolean(
470 kAccountsPrefEphemeralUsersEnabled, 501 kAccountsPrefEphemeralUsersEnabled,
471 policy.has_ephemeral_users_enabled() && 502 policy.has_ephemeral_users_enabled() &&
472 policy.ephemeral_users_enabled().has_ephemeral_users_enabled() && 503 policy.ephemeral_users_enabled().has_ephemeral_users_enabled() &&
473 policy.ephemeral_users_enabled().ephemeral_users_enabled()); 504 policy.ephemeral_users_enabled().ephemeral_users_enabled());
474 505
475 new_values_cache->SetBoolean(
476 kAccountsPrefSupervisedUsersEnabled,
477 policy.has_supervised_users_settings() &&
478 policy.supervised_users_settings().supervised_users_enabled());
479
480 base::ListValue* list = new base::ListValue(); 506 base::ListValue* list = new base::ListValue();
481 const em::UserWhitelistProto& whitelist_proto = policy.user_whitelist(); 507 const em::UserWhitelistProto& whitelist_proto = policy.user_whitelist();
482 const RepeatedPtrField<std::string>& whitelist = 508 const RepeatedPtrField<std::string>& whitelist =
483 whitelist_proto.user_whitelist(); 509 whitelist_proto.user_whitelist();
484 for (RepeatedPtrField<std::string>::const_iterator it = whitelist.begin(); 510 for (RepeatedPtrField<std::string>::const_iterator it = whitelist.begin();
485 it != whitelist.end(); ++it) { 511 it != whitelist.end(); ++it) {
486 list->Append(new base::StringValue(*it)); 512 list->Append(new base::StringValue(*it));
487 } 513 }
488 new_values_cache->SetValue(kAccountsPrefUsers, list); 514 new_values_cache->SetValue(kAccountsPrefUsers, list);
489 515
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 void DeviceSettingsProvider::AttemptMigration() { 999 void DeviceSettingsProvider::AttemptMigration() {
974 if (device_settings_service_->HasPrivateOwnerKey()) { 1000 if (device_settings_service_->HasPrivateOwnerKey()) {
975 PrefValueMap::const_iterator i; 1001 PrefValueMap::const_iterator i;
976 for (i = migration_values_.begin(); i != migration_values_.end(); ++i) 1002 for (i = migration_values_.begin(); i != migration_values_.end(); ++i)
977 DoSet(i->first, *i->second); 1003 DoSet(i->first, *i->second);
978 migration_values_.Clear(); 1004 migration_values_.Clear();
979 } 1005 }
980 } 1006 }
981 1007
982 } // namespace chromeos 1008 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698