| Index: chrome/browser/policy/configuration_policy_pref_store.cc
|
| diff --git a/chrome/browser/policy/configuration_policy_pref_store.cc b/chrome/browser/policy/configuration_policy_pref_store.cc
|
| index 3ebbf2e7e1152ce4bec7dd7aebf47571d9c82b6c..25df2d5f233c438f8ae229bf3a62579f6b1bf05f 100644
|
| --- a/chrome/browser/policy/configuration_policy_pref_store.cc
|
| +++ b/chrome/browser/policy/configuration_policy_pref_store.cc
|
| @@ -322,19 +322,27 @@ ConfigurationPolicyPrefStore::ConfigurationPolicyPrefStore(
|
| proxy_disabled_(false),
|
| proxy_configuration_specified_(false),
|
| use_system_proxy_(false) {
|
| + if (!provider_->Provide(this))
|
| + LOG(WARNING) << "Failed to get policy from provider.";
|
| + FinalizeDefaultSearchPolicySettings();
|
| }
|
|
|
| ConfigurationPolicyPrefStore::~ConfigurationPolicyPrefStore() {}
|
|
|
| -PrefStore::PrefReadError ConfigurationPolicyPrefStore::ReadPrefs() {
|
| - proxy_disabled_ = false;
|
| - proxy_configuration_specified_ = false;
|
| - lower_priority_proxy_settings_overridden_ = false;
|
| +PrefStore::ReadResult ConfigurationPolicyPrefStore::GetValue(
|
| + const std::string& key,
|
| + Value** value) const {
|
| + Value* configured_value = NULL;
|
| + if (!prefs_->Get(key, &configured_value) || !configured_value)
|
| + return READ_NO_VALUE;
|
|
|
| - const bool success = (provider_ == NULL || provider_->Provide(this));
|
| - FinalizeDefaultSearchPolicySettings();
|
| - return success ? PrefStore::PREF_READ_ERROR_NONE :
|
| - PrefStore::PREF_READ_ERROR_OTHER;
|
| + // Check whether there's a default value, which indicates READ_USE_DEFAULT
|
| + // should be returned.
|
| + if (configured_value->IsType(Value::TYPE_NULL))
|
| + return READ_USE_DEFAULT;
|
| +
|
| + *value = configured_value;
|
| + return READ_OK;
|
| }
|
|
|
| void ConfigurationPolicyPrefStore::Apply(ConfigurationPolicyType policy,
|
| @@ -466,7 +474,9 @@ bool ConfigurationPolicyPrefStore::ApplyProxyPolicy(
|
| GetProxyPreferenceSet(&proxy_preference_set);
|
| for (ProxyPreferenceSet::const_iterator i = proxy_preference_set.begin();
|
| i != proxy_preference_set.end(); ++i) {
|
| - prefs_->Set(*i, PrefStore::CreateUseDefaultSentinelValue());
|
| + // We use values of TYPE_NULL to mark preferences for which
|
| + // READ_USE_DEFAULT should be returned by GetValue().
|
| + prefs_->Set(*i, Value::CreateNullValue());
|
| }
|
| lower_priority_proxy_settings_overridden_ = true;
|
| }
|
|
|