// Copyright (c) 2011 The Chromium OS 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 LIBBRILLO_POLICY_LIBPOLICY_H_
#define LIBBRILLO_POLICY_LIBPOLICY_H_
#include <memory>
#include <string>
#include <base/macros.h>
#pragma GCC visibility push(default)
namespace policy {
class DevicePolicy;
// This class holds device settings that are to be enforced across all users.
//
// If there is a policy on disk at creation time, we will load it at verify
// its signature.
class PolicyProvider {
public:
PolicyProvider();
virtual ~PolicyProvider();
// Constructor for tests only!
explicit PolicyProvider(DevicePolicy* device_policy);
// This function will ensure the freshness of the contents that the getters
// are delivering. Normally contents are cached to prevent unnecessary load.
virtual bool Reload();
virtual bool device_policy_is_loaded() const;
// Returns a value from the device policy cache.
virtual const DevicePolicy& GetDevicePolicy() const;
private:
std::unique_ptr<DevicePolicy> device_policy_;
bool device_policy_is_loaded_;
DISALLOW_COPY_AND_ASSIGN(PolicyProvider);
};
} // namespace policy
#pragma GCC visibility pop
#endif // LIBBRILLO_POLICY_LIBPOLICY_H_