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