diff options
author | pam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-06 08:51:50 +0000 |
---|---|---|
committer | pam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-06 08:51:50 +0000 |
commit | fa26b3d5cdafef96cc30465b2963d0b800d527fa (patch) | |
tree | 09eb6f248404f54d934c1c20bd3a7e3b81f0faeb /chrome/browser/pref_value_store.cc | |
parent | 017ec4bd5f21cc7cf052c417a69318a1cd43b4e0 (diff) | |
download | chromium_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.cc | 56 |
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); +} |