diff options
Diffstat (limited to 'chrome/browser/policy/configuration_policy_provider_mac.h')
| -rw-r--r-- | chrome/browser/policy/configuration_policy_provider_mac.h | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/chrome/browser/policy/configuration_policy_provider_mac.h b/chrome/browser/policy/configuration_policy_provider_mac.h index 4f0c4b1..d804500 100644 --- a/chrome/browser/policy/configuration_policy_provider_mac.h +++ b/chrome/browser/policy/configuration_policy_provider_mac.h @@ -7,28 +7,50 @@ #pragma once #include "base/scoped_ptr.h" -#include "chrome/browser/policy/configuration_policy_store.h" -#include "chrome/browser/policy/configuration_policy_provider.h" +#include "chrome/browser/policy/configuration_policy_store_interface.h" +#include "chrome/browser/policy/file_based_policy_provider.h" #include "chrome/browser/preferences_mac.h" namespace policy { +// A policy loader implementation that read Mac OS X's managed preferences. +class MacPreferencesPolicyLoader : public FileBasedPolicyProvider::Delegate { + public: + // Takes ownership of |preferences|. + MacPreferencesPolicyLoader( + MacPreferences* preferences, + const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list); + + // FileBasedPolicyLoader::Delegate implementation. + virtual DictionaryValue* Load(); + virtual base::Time GetLastModification(); + + private: + // In order to access the application preferences API, the names and values of + // the policies that are recognized must be known to the loader. + // Unfortunately, we cannot get the policy list at load time from the + // provider, because the loader may outlive the provider, so we store our own + // pointer to the list. + const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list_; + + scoped_ptr<MacPreferences> preferences_; + + DISALLOW_COPY_AND_ASSIGN(MacPreferencesPolicyLoader); +}; + // An implementation of |ConfigurationPolicyProvider| using the mechanism // provided by Mac OS X's managed preferences. -class ConfigurationPolicyProviderMac : public ConfigurationPolicyProvider { +class ConfigurationPolicyProviderMac + : public FileBasedPolicyProvider { public: explicit ConfigurationPolicyProviderMac( - const StaticPolicyValueMap& policy_map); + const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list); // For testing; takes ownership of |preferences|. - ConfigurationPolicyProviderMac(const StaticPolicyValueMap& policy_map, - MacPreferences* preferences); - virtual ~ConfigurationPolicyProviderMac() { } + ConfigurationPolicyProviderMac( + const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list, + MacPreferences* preferences); - // ConfigurationPolicyProvider method overrides: - virtual bool Provide(ConfigurationPolicyStore* store); - - protected: - scoped_ptr<MacPreferences> preferences_; + DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyProviderMac); }; } // namespace policy |
