diff options
author | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-27 10:45:49 +0000 |
---|---|---|
committer | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-27 10:45:49 +0000 |
commit | 71170f82c98f635dda18ef178388ccfda17df662 (patch) | |
tree | 6e427110c93697b9bb5e55ad0512f1ebca3a83b5 | |
parent | adacb1f4e5126bb4c7f2e637c677b2c95ea13ec6 (diff) | |
download | chromium_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.cc | 52 | ||||
-rw-r--r-- | chrome/browser/configuration_policy_pref_store.h | 6 | ||||
-rw-r--r-- | chrome/browser/pref_service.cc | 49 |
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. |