1// Copyright (c) 2010 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_FILE_BASED_POLICY_PROVIDER_H_ 6#define CHROME_BROWSER_POLICY_FILE_BASED_POLICY_PROVIDER_H_ 7#pragma once 8 9#include "base/file_path.h" 10#include "base/time.h" 11#include "chrome/browser/policy/asynchronous_policy_provider.h" 12 13namespace policy { 14 15// File based policy provider that coordinates watching and reloading policy 16// information from the configuration path. Actual logic for loading policy 17// information is handled by a delegate passed at construction time. 18class FileBasedPolicyProvider : public AsynchronousPolicyProvider { 19 public: 20 21 // Delegate interface for actual policy loading from the system. 22 class ProviderDelegate : public AsynchronousPolicyProvider::Delegate { 23 public: 24 explicit ProviderDelegate(const FilePath& config_file_path); 25 virtual ~ProviderDelegate(); 26 27 // AsynchronousPolicyProvider::Delegate implementation: 28 virtual DictionaryValue* Load() = 0; 29 30 // Gets the last modification timestamp for the policy information from the 31 // filesystem. Returns base::Time() if the information is not present, in 32 // which case Load() should return an empty dictionary. 33 virtual base::Time GetLastModification() = 0; 34 35 const FilePath& config_file_path() { return config_file_path_; } 36 37 private: 38 const FilePath config_file_path_; 39 40 DISALLOW_COPY_AND_ASSIGN(ProviderDelegate); 41 }; 42 43 // Assumes ownership of |delegate|. 44 FileBasedPolicyProvider(const PolicyDefinitionList* policy_list, 45 ProviderDelegate* delegate); 46 virtual ~FileBasedPolicyProvider() {} 47 48 private: 49 DISALLOW_COPY_AND_ASSIGN(FileBasedPolicyProvider); 50}; 51 52} // namespace policy 53 54#endif // CHROME_BROWSER_POLICY_FILE_BASED_POLICY_PROVIDER_H_ 55