• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_PROVIDER_MAC_H_
6 #define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_PROVIDER_MAC_H_
7 #pragma once
8 
9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/policy/configuration_policy_store_interface.h"
11 #include "chrome/browser/policy/file_based_policy_provider.h"
12 #include "chrome/browser/preferences_mac.h"
13 
14 namespace policy {
15 
16 // A provider delegate implementation that reads Mac OS X's managed preferences.
17 class MacPreferencesPolicyProviderDelegate
18     : public FileBasedPolicyProvider::ProviderDelegate {
19  public:
20   // Takes ownership of |preferences|.
21   MacPreferencesPolicyProviderDelegate(
22       MacPreferences* preferences,
23       const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list);
24   virtual ~MacPreferencesPolicyProviderDelegate();
25 
26   // FileBasedPolicyLoader::Delegate implementation.
27   virtual DictionaryValue* Load();
28   virtual base::Time GetLastModification();
29 
30  private:
31   // In order to access the application preferences API, the names and values of
32   // the policies that are recognized must be known to the loader.
33   // Unfortunately, we cannot get the policy list at load time from the
34   // provider, because the loader may outlive the provider, so we store our own
35   // pointer to the list.
36   const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list_;
37 
38   scoped_ptr<MacPreferences> preferences_;
39 
40   DISALLOW_COPY_AND_ASSIGN(MacPreferencesPolicyProviderDelegate);
41 };
42 
43 // An implementation of |ConfigurationPolicyProvider| using the mechanism
44 // provided by Mac OS X's managed preferences.
45 class ConfigurationPolicyProviderMac
46     : public FileBasedPolicyProvider {
47  public:
48   explicit ConfigurationPolicyProviderMac(
49       const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list);
50   // For testing; takes ownership of |preferences|.
51   ConfigurationPolicyProviderMac(
52       const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list,
53       MacPreferences* preferences);
54 
55   DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyProviderMac);
56 };
57 
58 }  // namespace policy
59 
60 #endif  // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_PROVIDER_MAC_H_
61