diff options
-rw-r--r-- | chrome/browser/chromeos/cros_settings_provider_user.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/chrome/browser/chromeos/cros_settings_provider_user.cc b/chrome/browser/chromeos/cros_settings_provider_user.cc index f9bdfcc..bc57160 100644 --- a/chrome/browser/chromeos/cros_settings_provider_user.cc +++ b/chrome/browser/chromeos/cros_settings_provider_user.cc @@ -73,6 +73,14 @@ const ListValue* UserCrosSettingsProvider::cached_whitelist() { } void UserCrosSettingsProvider::Set(const std::string& path, Value* in_value) { + if (!current_user_is_owner_) { + LOG(WARNING) << "Changing settings from non-owner, setting=" << path; + + // Revert UI change. + CrosSettings::Get()->FireObservers(path.c_str()); + return; + } + if (path == kAccountsPrefAllowBWSI || path == kAccountsPrefAllowGuest || path == kAccountsPrefShowUserNamesOnSignIn) { @@ -97,8 +105,9 @@ bool UserCrosSettingsProvider::Get(const std::string& path, if (path == kAccountsPrefAllowBWSI || path == kAccountsPrefAllowGuest || path == kAccountsPrefShowUserNamesOnSignIn) { - *out_value = Value::CreateBooleanValue( - g_browser_process->local_state()->GetBoolean(path.c_str())); + *out_value = CreateSettingsBooleanValue( + g_browser_process->local_state()->GetBoolean(path.c_str()), + !current_user_is_owner_); return true; } else if (path == kAccountsPrefUsers) { *out_value = GetUserWhitelist(); |