| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_POLICY_FILE_BASED_POLICY_PROVIDER_H_ |
| #define CHROME_BROWSER_POLICY_FILE_BASED_POLICY_PROVIDER_H_ |
| #pragma once |
| |
| #include "base/file_path.h" |
| #include "base/time.h" |
| #include "chrome/browser/policy/asynchronous_policy_provider.h" |
| |
| namespace policy { |
| |
| // File based policy provider that coordinates watching and reloading policy |
| // information from the configuration path. Actual logic for loading policy |
| // information is handled by a delegate passed at construction time. |
| class FileBasedPolicyProvider : public AsynchronousPolicyProvider { |
| public: |
| |
| // Delegate interface for actual policy loading from the system. |
| class ProviderDelegate : public AsynchronousPolicyProvider::Delegate { |
| public: |
| explicit ProviderDelegate(const FilePath& config_file_path); |
| virtual ~ProviderDelegate(); |
| |
| // AsynchronousPolicyProvider::Delegate implementation: |
| virtual DictionaryValue* Load() = 0; |
| |
| // Gets the last modification timestamp for the policy information from the |
| // filesystem. Returns base::Time() if the information is not present, in |
| // which case Load() should return an empty dictionary. |
| virtual base::Time GetLastModification() = 0; |
| |
| const FilePath& config_file_path() { return config_file_path_; } |
| |
| private: |
| const FilePath config_file_path_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ProviderDelegate); |
| }; |
| |
| // Assumes ownership of |delegate|. |
| FileBasedPolicyProvider(const PolicyDefinitionList* policy_list, |
| ProviderDelegate* delegate); |
| virtual ~FileBasedPolicyProvider() {} |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(FileBasedPolicyProvider); |
| }; |
| |
| } // namespace policy |
| |
| #endif // CHROME_BROWSER_POLICY_FILE_BASED_POLICY_PROVIDER_H_ |