Home | History | Annotate | Download | only in policy
      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