blob: 9d1c705ccad196639e8bd8f4f83fc3f17dcca030 [file] [log] [blame]
// 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 LOGIN_MANAGER_DEVICE_POLICY_H_
#define LOGIN_MANAGER_DEVICE_POLICY_H_
#include <string>
#include <base/basictypes.h>
#include <base/file_path.h>
#include "login_manager/bindings/device_management_backend.pb.h"
namespace login_manager {
// 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
// along with its signature. A new policy and its attendant signature can
// be set at any time and persisted to disk on-demand.
//
// THIS CLASS DOES NO SIGNATURE VALIDATION.
class DevicePolicy {
public:
explicit DevicePolicy(const FilePath& policy_path);
virtual ~DevicePolicy();
// Load the signed policy off of disk into |policy_|.
// Returns true unless there is a policy on disk and loading it fails.
virtual bool LoadOrCreate();
virtual bool Get(std::string* output) const;
// Persist |policy_| to disk at |policy_file_|
// Returns false if there's an error while writing data.
virtual bool Persist();
// Clobber the stored policy with new data.
virtual void Set(const enterprise_management::PolicyFetchResponse& policy);
static const char kDefaultPath[];
private:
enterprise_management::PolicyFetchResponse policy_;
const FilePath policy_path_;
DISALLOW_COPY_AND_ASSIGN(DevicePolicy);
};
} // namespace login_manager
#endif // LOGIN_MANAGER_DEVICE_POLICY_H_