Index: chrome/browser/pref_value_store.cc |
=================================================================== |
--- chrome/browser/pref_value_store.cc (revision 52073) |
+++ chrome/browser/pref_value_store.cc (working copy) |
@@ -5,28 +5,26 @@ |
#include "chrome/browser/pref_value_store.h" |
PrefValueStore::PrefValueStore(PrefStore* managed_prefs, |
+ PrefStore* extension_prefs, |
PrefStore* user_prefs, |
- PrefStore* recommended_prefs) |
- : managed_prefs_(managed_prefs), |
- user_prefs_(user_prefs), |
- recommended_prefs_(recommended_prefs) { |
+ PrefStore* recommended_prefs) { |
+ pref_stores_[MANAGED].reset(managed_prefs); |
+ pref_stores_[EXTENSION].reset(extension_prefs); |
+ pref_stores_[USER].reset(user_prefs); |
+ pref_stores_[RECOMMENDED].reset(recommended_prefs); |
} |
PrefValueStore::~PrefValueStore() { } |
-bool PrefValueStore::GetValue( |
- const std::wstring& name, Value** out_value) const { |
+bool PrefValueStore::GetValue(const std::wstring& name, |
+ Value** out_value) const { |
// Check the |PrefStore|s in order of their priority from highest to lowest |
// to find the value of the preference described by the given preference name. |
- if (managed_prefs_.get() && |
- managed_prefs_->prefs()->Get(name.c_str(), out_value) ) { |
- return true; |
- } else if (user_prefs_.get() && |
- user_prefs_->prefs()->Get(name.c_str(), out_value) ) { |
- return true; |
- } else if (recommended_prefs_.get() && |
- recommended_prefs_->prefs()->Get(name.c_str(), out_value)) { |
- return true; |
+ for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { |
+ if (pref_stores_[i].get() && |
+ pref_stores_[i]->prefs()->Get(name.c_str(), out_value)) { |
+ return true; |
+ } |
} |
// No value found for the given preference name, set the return false. |
*out_value = NULL; |
@@ -34,49 +32,33 @@ |
} |
bool PrefValueStore::WritePrefs() { |
- // Managed and recommended preferences are not set by the user. |
- // Hence they will not be written out. |
- return user_prefs_->WritePrefs(); |
+ bool success = true; |
+ for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { |
+ if (pref_stores_[i].get()) |
+ success = pref_stores_[i]->WritePrefs() && success; |
+ } |
+ return success; |
} |
void PrefValueStore::ScheduleWritePrefs() { |
- // Managed and recommended preferences are not set by the user. |
- // Hence they will not be written out. |
- user_prefs_->ScheduleWritePrefs(); |
+ for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { |
+ if (pref_stores_[i].get()) |
+ pref_stores_[i]->ScheduleWritePrefs(); |
+ } |
} |
PrefStore::PrefReadError PrefValueStore::ReadPrefs() { |
- PrefStore::PrefReadError managed_pref_error = PrefStore::PREF_READ_ERROR_NONE; |
- PrefStore::PrefReadError user_pref_error = PrefStore::PREF_READ_ERROR_NONE; |
- PrefStore::PrefReadError recommended_pref_error = |
- PrefStore::PREF_READ_ERROR_NONE; |
- |
- // Read managed preferences. |
- if (managed_prefs_.get()) { |
- managed_pref_error = managed_prefs_->ReadPrefs(); |
+ PrefStore::PrefReadError result = PrefStore::PREF_READ_ERROR_NONE; |
+ for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { |
+ if (pref_stores_[i].get()) { |
+ PrefStore::PrefReadError this_error = pref_stores_[i]->ReadPrefs(); |
+ if (result == PrefStore::PREF_READ_ERROR_NONE) |
+ result = this_error; |
+ } |
} |
- |
- // Read preferences set by the user. |
- if (user_prefs_.get()) { |
- user_pref_error = user_prefs_->ReadPrefs(); |
- } |
- |
- // Read recommended preferences. |
- if (recommended_prefs_.get()) { |
- recommended_pref_error = recommended_prefs_->ReadPrefs(); |
- } |
- |
- // TODO(markusheintz): Return a better error status maybe a struct with |
- // the error status of all PrefStores. |
- |
- // Return the first pref store error that occured. |
- if (managed_pref_error != PrefStore::PREF_READ_ERROR_NONE) { |
- return managed_pref_error; |
- } |
- if (user_pref_error != PrefStore::PREF_READ_ERROR_NONE) { |
- return user_pref_error; |
- } |
- return recommended_pref_error; |
+ // TODO(markusheintz): Return a better error status: maybe a struct with |
+ // the error status of all PrefStores. |
+ return result; |
} |
bool PrefValueStore::HasPrefPath(const wchar_t* path) const { |
@@ -89,28 +71,28 @@ |
// The value of a Preference is managed if the PrefStore for managed |
// preferences contains a value for the given preference |name|. |
bool PrefValueStore::PrefValueIsManaged(const wchar_t* name) { |
- if (managed_prefs_.get() == NULL) { |
+ if (pref_stores_[MANAGED].get() == NULL) { |
// No managed PreferenceStore set, hence there are no managed |
// preferences. |
return false; |
} |
Value* tmp_value; |
- return managed_prefs_->prefs()->Get(name, &tmp_value); |
+ return pref_stores_[MANAGED]->prefs()->Get(name, &tmp_value); |
} |
// Note the |DictionaryValue| referenced by the |PrefStore| user_prefs_ |
-// (returned by the method Prefs()) takes the ownership of the Value referenced |
+// (returned by the method prefs()) takes the ownership of the Value referenced |
// by in_value. |
void PrefValueStore::SetUserPrefValue(const wchar_t* name, Value* in_value) { |
- user_prefs_->prefs()->Set(name, in_value); |
+ pref_stores_[USER]->prefs()->Set(name, in_value); |
} |
bool PrefValueStore::ReadOnly() { |
- return user_prefs_->ReadOnly(); |
+ return pref_stores_[USER]->ReadOnly(); |
} |
void PrefValueStore::RemoveUserPrefValue(const wchar_t* name) { |
- if (user_prefs_.get()) { |
- user_prefs_->prefs()->Remove(name, NULL); |
+ if (pref_stores_[USER].get()) { |
+ pref_stores_[USER]->prefs()->Remove(name, NULL); |
} |
} |
Property changes on: chrome\browser\pref_value_store.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |