summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-27 10:45:49 +0000
committermnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-27 10:45:49 +0000
commit71170f82c98f635dda18ef178388ccfda17df662 (patch)
tree6e427110c93697b9bb5e55ad0512f1ebca3a83b5
parentadacb1f4e5126bb4c7f2e637c677b2c95ea13ec6 (diff)
downloadchromium_src-71170f82c98f635dda18ef178388ccfda17df662.zip
chromium_src-71170f82c98f635dda18ef178388ccfda17df662.tar.gz
chromium_src-71170f82c98f635dda18ef178388ccfda17df662.tar.bz2
Create factories for policy pref stores.
BUG=None TEST=Tests that use a regular PrefService are green. Review URL: http://codereview.chromium.org/3046023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53770 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/configuration_policy_pref_store.cc52
-rw-r--r--chrome/browser/configuration_policy_pref_store.h6
-rw-r--r--chrome/browser/pref_service.cc49
3 files changed, 60 insertions, 47 deletions
diff --git a/chrome/browser/configuration_policy_pref_store.cc b/chrome/browser/configuration_policy_pref_store.cc
index dc12e63..57277d2 100644
--- a/chrome/browser/configuration_policy_pref_store.cc
+++ b/chrome/browser/configuration_policy_pref_store.cc
@@ -6,10 +6,20 @@
#include "base/command_line.h"
#include "base/logging.h"
+#include "base/path_service.h"
#include "base/string16.h"
#include "base/string_util.h"
#include "base/values.h"
#include "chrome/browser/configuration_policy_provider.h"
+#if defined(OS_WIN)
+#include "chrome/browser/configuration_policy_provider_win.h"
+#elif defined(OS_MACOSX)
+#include "chrome/browser/configuration_policy_provider_mac.h"
+#elif defined(OS_POSIX)
+#include "chrome/browser/config_dir_policy_provider.h"
+#endif
+#include "chrome/browser/dummy_configuration_policy_provider.h"
+#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
@@ -101,6 +111,48 @@ PrefStore::PrefReadError ConfigurationPolicyPrefStore::ReadPrefs() {
PrefStore::PREF_READ_ERROR_NONE : PrefStore::PREF_READ_ERROR_OTHER;
}
+// static
+ConfigurationPolicyPrefStore*
+ConfigurationPolicyPrefStore::CreateManagedPolicyPrefStore() {
+ ConfigurationPolicyProvider* provider;
+#if defined(OS_WIN)
+ provider = new ConfigurationPolicyProviderWin();
+#elif defined(OS_MACOSX)
+ provider = new ConfigurationPolicyProviderMac();
+#elif defined(OS_POSIX)
+ FilePath config_dir_path;
+ if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path))
+ provider = new ConfigDirPolicyProvider(
+ config_dir_path.Append(FILE_PATH_LITERAL("managed")));
+ else
+ provider = new DummyConfigurationPolicyProvider();
+#else
+ provider = new DummyConfigurationPolicyProvider();
+#endif
+
+ return new ConfigurationPolicyPrefStore(CommandLine::ForCurrentProcess(),
+ provider);
+}
+
+// static
+ConfigurationPolicyPrefStore*
+ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore() {
+ ConfigurationPolicyProvider* provider;
+#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ FilePath config_dir_path;
+ if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path))
+ provider = new ConfigDirPolicyProvider(
+ config_dir_path.Append(FILE_PATH_LITERAL("recommended")));
+ else
+ provider = new DummyConfigurationPolicyProvider();
+#else
+ provider = new DummyConfigurationPolicyProvider();
+#endif
+
+ return new ConfigurationPolicyPrefStore(CommandLine::ForCurrentProcess(),
+ provider);
+}
+
bool ConfigurationPolicyPrefStore::ApplyProxyPolicy(PolicyType policy,
Value* value) {
bool result = false;
diff --git a/chrome/browser/configuration_policy_pref_store.h b/chrome/browser/configuration_policy_pref_store.h
index 5186b35..fd28652 100644
--- a/chrome/browser/configuration_policy_pref_store.h
+++ b/chrome/browser/configuration_policy_pref_store.h
@@ -33,6 +33,12 @@ class ConfigurationPolicyPrefStore : public PrefStore,
virtual PrefReadError ReadPrefs();
virtual DictionaryValue* prefs() { return prefs_.get(); }
+ // Creates a ConfigurationPolicyPrefStore that reads managed policy.
+ static ConfigurationPolicyPrefStore* CreateManagedPolicyPrefStore();
+
+ // Creates a ConfigurationPolicyPrefStore that reads recommended policy.
+ static ConfigurationPolicyPrefStore* CreateRecommendedPolicyPrefStore();
+
private:
// For unit tests.
friend class ConfigurationPolicyPrefStoreTest;
diff --git a/chrome/browser/pref_service.cc b/chrome/browser/pref_service.cc
index f441520..975750e 100644
--- a/chrome/browser/pref_service.cc
+++ b/chrome/browser/pref_service.cc
@@ -12,27 +12,15 @@
#include "base/histogram.h"
#include "base/logging.h"
#include "base/message_loop.h"
-#include "base/path_service.h"
#include "base/stl_util-inl.h"
#include "base/string_util.h"
#include "base/sys_string_conversions.h"
#include "base/utf_string_conversions.h"
#include "build/build_config.h"
#include "chrome/browser/chrome_thread.h"
-
-#if defined(OS_WIN)
-#include "chrome/browser/configuration_policy_provider_win.h"
-#elif defined(OS_MACOSX)
-#include "chrome/browser/configuration_policy_provider_mac.h"
-#elif defined(OS_POSIX)
-#include "chrome/browser/config_dir_policy_provider.h"
-#endif
-#include "chrome/browser/dummy_configuration_policy_provider.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/chrome_paths.h"
#include "chrome/common/json_pref_store.h"
#include "chrome/common/notification_service.h"
#include "grit/chromium_strings.h"
@@ -93,7 +81,6 @@ void NotifyReadError(PrefService* pref, int message_id) {
// static
PrefService* PrefService::CreatePrefService(const FilePath& pref_filename) {
- PrefStore* managed_prefs = NULL;
// TODO(pamg): Reinstate extension pref store after Mstone6 branch, when its
// memory leaks are fixed and any extension API is using it.
// ExtensionPrefStore* extension_prefs = new ExtensionPrefStore(NULL);
@@ -103,46 +90,14 @@ PrefService* PrefService::CreatePrefService(const FilePath& pref_filename) {
PrefStore* local_prefs = new JsonPrefStore(
pref_filename,
ChromeThread::GetMessageLoopProxyForThread(ChromeThread::FILE));
- PrefStore* recommended_prefs = NULL;
-
- ConfigurationPolicyProvider* managed_prefs_provider = NULL;
- ConfigurationPolicyProvider* recommended_prefs_provider = NULL;
-
-#if defined(OS_WIN)
- managed_prefs_provider = new ConfigurationPolicyProviderWin();
- recommended_prefs_provider = new DummyConfigurationPolicyProvider();
-#elif defined(OS_MACOSX)
- managed_prefs_provider = new ConfigurationPolicyProviderMac();
- recommended_prefs_provider = new DummyConfigurationPolicyProvider();
-#elif defined(OS_POSIX)
- FilePath config_dir_path;
- if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) {
- managed_prefs_provider = new ConfigDirPolicyProvider(
- config_dir_path.Append(FILE_PATH_LITERAL("managed")));
- recommended_prefs_provider = new ConfigDirPolicyProvider(
- config_dir_path.Append(FILE_PATH_LITERAL("recommended")));
- } else {
- managed_prefs_provider = new DummyConfigurationPolicyProvider();
- recommended_prefs_provider = new DummyConfigurationPolicyProvider();
- }
-#endif
-
- // The ConfigurationPolicyPrefStore takes ownership of the passed
- // |provider|.
- managed_prefs = new ConfigurationPolicyPrefStore(
- CommandLine::ForCurrentProcess(),
- managed_prefs_provider);
- recommended_prefs = new ConfigurationPolicyPrefStore(
- CommandLine::ForCurrentProcess(),
- recommended_prefs_provider);
// The PrefValueStore takes ownership of the PrefStores.
PrefValueStore* value_store = new PrefValueStore(
- managed_prefs,
+ ConfigurationPolicyPrefStore::CreateManagedPolicyPrefStore(),
extension_prefs,
command_line_prefs,
local_prefs,
- recommended_prefs);
+ ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore());
PrefService* pref_service = new PrefService(value_store);
// TODO(pamg): Uncomment when ExtensionPrefStore is reinstated.