diff options
author | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-23 13:26:11 +0000 |
---|---|---|
committer | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-23 13:26:11 +0000 |
commit | 02e2a3d61ac16d8a7714ab7e69821ce89ea00279 (patch) | |
tree | dd65bb307cba3d7bb81f10f7714771b848484aae /chrome/browser/pref_service.cc | |
parent | 1fa86e8aac26e708376d52f5dcb23a5d7ab8dd73 (diff) | |
download | chromium_src-02e2a3d61ac16d8a7714ab7e69821ce89ea00279.zip chromium_src-02e2a3d61ac16d8a7714ab7e69821ce89ea00279.tar.gz chromium_src-02e2a3d61ac16d8a7714ab7e69821ce89ea00279.tar.bz2 |
Enable policy support on the Linux platform.
On the Linux platform policies are read from a configuration file directory. Depending whether the chromium build is branded or not the configuration file directory is:
/etc/opt/chromium or
/etc/opt/chrome
The configuration file directory will contain two sub-subdirectories: policies/managed
policies/recommended
The sub-directory policies/managed will contain all managed policies that are enforced on the user.
The sub-directory policies/recommended will contain policies for recommended setting that can be changed by a user.
BUG=47278
TEST=manual
Review URL: http://codereview.chromium.org/2854005
Patch from Markus Heintz <markusheintz@google.com>.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/pref_service.cc')
-rw-r--r-- | chrome/browser/pref_service.cc | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/chrome/browser/pref_service.cc b/chrome/browser/pref_service.cc index 506349e..22429c2 100644 --- a/chrome/browser/pref_service.cc +++ b/chrome/browser/pref_service.cc @@ -12,6 +12,7 @@ #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" @@ -24,10 +25,12 @@ #elif defined(OS_MACOSX) #include "chrome/browser/configuration_policy_provider_mac.h" #elif defined(OS_POSIX) -#include "chrome/browser/dummy_configuration_policy_provider.h" +#include "chrome/browser/config_dir_policy_provider.h" #endif +#include "chrome/browser/dummy_configuration_policy_provider.h" #include "chrome/browser/configuration_policy_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" @@ -94,20 +97,35 @@ PrefService* PrefService::CreatePrefService(const FilePath& pref_filename) { 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) - // TODO(markusheintz): Will be replaced by the Linux implementation. - managed_prefs_provider = new DummyConfigurationPolicyProvider(); + 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 take the ownership of the passed + // 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 to ownership of the parameters. PrefValueStore* value_store = new PrefValueStore( |