libpolicy.h revision 3c8d4abaa4b4798a7dbc49f5317c76b1b6332ab0
1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#ifndef LIBCHROMEOS_CHROMEOS_POLICY_LIBPOLICY_H_
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define LIBCHROMEOS_CHROMEOS_POLICY_LIBPOLICY_H_
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include <string>
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include <base/macros.h>
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include <base/memory/scoped_ptr.h>
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#pragma GCC visibility push(default)
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace policy {
16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass DevicePolicy;
18b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// This class holds device settings that are to be enforced across all users.
20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch//
21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// If there is a policy on disk at creation time, we will load it at verify
22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// its signature.
23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass PolicyProvider {
24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch public:
25b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  PolicyProvider();
26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  virtual ~PolicyProvider();
27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // Constructor for tests only!
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  explicit PolicyProvider(DevicePolicy* device_policy);
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // This function will ensure the freshness of the contents that the getters
32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // are delivering. Normally contents are cached to prevent unnecessary load.
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  virtual bool Reload();
34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  virtual bool device_policy_is_loaded() const;
36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // Returns a value from the device policy cache.
38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  virtual const DevicePolicy& GetDevicePolicy() const;
39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch private:
41b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  scoped_ptr<DevicePolicy> device_policy_;
42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  bool device_policy_is_loaded_;
43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
44b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(PolicyProvider);
45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch};
46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace policy
47014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#pragma GCC visibility pop
49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif  // LIBCHROMEOS_CHROMEOS_POLICY_LIBPOLICY_H_
51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch