summaryrefslogtreecommitdiffstats
path: root/chrome/browser/pref_value_store.cc
diff options
context:
space:
mode:
authorpam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-06 08:51:50 +0000
committerpam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-06 08:51:50 +0000
commitfa26b3d5cdafef96cc30465b2963d0b800d527fa (patch)
tree09eb6f248404f54d934c1c20bd3a7e3b81f0faeb /chrome/browser/pref_value_store.cc
parent017ec4bd5f21cc7cf052c417a69318a1cd43b4e0 (diff)
downloadchromium_src-fa26b3d5cdafef96cc30465b2963d0b800d527fa.zip
chromium_src-fa26b3d5cdafef96cc30465b2963d0b800d527fa.tar.gz
chromium_src-fa26b3d5cdafef96cc30465b2963d0b800d527fa.tar.bz2
Move creation of the PrefStores into the PrefValueStore, to reduce the knowledge the PrefService has of its two-levels-deep implementation.
Create a TestingPrefService::TestingPrefValueStore to allow tests to set the PrefStores directly, as they used to be able to do. BUG=50722 TEST=covered by unit tests Review URL: http://codereview.chromium.org/3032058 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55202 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/pref_value_store.cc')
-rw-r--r--chrome/browser/pref_value_store.cc56
1 files changed, 45 insertions, 11 deletions
diff --git a/chrome/browser/pref_value_store.cc b/chrome/browser/pref_value_store.cc
index ab976aa..7fae719 100644
--- a/chrome/browser/pref_value_store.cc
+++ b/chrome/browser/pref_value_store.cc
@@ -3,21 +3,43 @@
// found in the LICENSE file.
#include "chrome/browser/pref_value_store.h"
+
+#include "chrome/browser/chrome_thread.h"
+#include "chrome/browser/command_line_pref_store.h"
+#include "chrome/browser/configuration_policy_pref_store.h"
+#include "chrome/browser/extensions/extension_pref_store.h"
+#include "chrome/common/json_pref_store.h"
#include "chrome/common/notification_service.h"
-PrefValueStore::PrefValueStore(PrefStore* managed_prefs,
- PrefStore* extension_prefs,
- PrefStore* command_line_prefs,
- PrefStore* user_prefs,
- PrefStore* recommended_prefs) {
- pref_stores_[MANAGED].reset(managed_prefs);
- pref_stores_[EXTENSION].reset(extension_prefs);
- pref_stores_[COMMAND_LINE].reset(command_line_prefs);
- pref_stores_[USER].reset(user_prefs);
- pref_stores_[RECOMMENDED].reset(recommended_prefs);
+// static
+PrefValueStore* PrefValueStore::CreatePrefValueStore(
+ const FilePath& pref_filename,
+ Profile* profile,
+ bool user_only) {
+ ConfigurationPolicyPrefStore* managed = NULL;
+ ExtensionPrefStore* extension = NULL;
+ CommandLinePrefStore* command_line = NULL;
+ JsonPrefStore* user = NULL;
+ ConfigurationPolicyPrefStore* recommended = NULL;
+
+ if (!pref_filename.empty()) {
+ user = new JsonPrefStore(
+ pref_filename,
+ ChromeThread::GetMessageLoopProxyForThread(ChromeThread::FILE));
+ }
+
+ if (!user_only) {
+ managed = ConfigurationPolicyPrefStore::CreateManagedPolicyPrefStore();
+ extension = new ExtensionPrefStore(profile);
+ command_line = new CommandLinePrefStore(CommandLine::ForCurrentProcess());
+ recommended =
+ ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore();
+ }
+ return new PrefValueStore(managed, extension, command_line, user,
+ recommended);
}
-PrefValueStore::~PrefValueStore() { }
+PrefValueStore::~PrefValueStore() {}
bool PrefValueStore::GetValue(const std::wstring& name,
Value** out_value) const {
@@ -211,3 +233,15 @@ void PrefValueStore::RefreshPolicyPrefs(
new_recommended_pref_store,
callback));
}
+
+PrefValueStore::PrefValueStore(PrefStore* managed_prefs,
+ PrefStore* extension_prefs,
+ PrefStore* command_line_prefs,
+ PrefStore* user_prefs,
+ PrefStore* recommended_prefs) {
+ pref_stores_[MANAGED].reset(managed_prefs);
+ pref_stores_[EXTENSION].reset(extension_prefs);
+ pref_stores_[COMMAND_LINE].reset(command_line_prefs);
+ pref_stores_[USER].reset(user_prefs);
+ pref_stores_[RECOMMENDED].reset(recommended_prefs);
+}