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

Unified Diff: chrome/browser/policy/configuration_policy_pref_store.cc

Issue 5646003: Sanitize PrefStore interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix PrefService mock construction in PrefServiceTest to include command line store. Created 10 years 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 side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698