summaryrefslogtreecommitdiffstats
path: root/chrome/browser/policy/configuration_policy_provider_mac.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/policy/configuration_policy_provider_mac.h')
-rw-r--r--chrome/browser/policy/configuration_policy_provider_mac.h46
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