| 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;
 | 
|    }
 | 
| 
 |